CPU I/O 버스트(Burst) Cycle
➡️ 프로세스 실행은 CPU 실행 및 입출력(I/O)대기로 구성
CPU 버스트 분포
➡️ 많은 수의 짧은 CPU 버스트와 적은 수의 긴 CPU 버스트 존재
: 메모리에 있는 프로세스들 중 실행할 준비가 되어있는 ready 상태의 프로세스를 선택하고, 그 프로세스에 CPU를 할당
실행 상태
에서 대기 상태
로 전환 될 때 ➡️ 비선점형(협조적)실행 상태
에서 준비 완료 상태
로 전환될 때 ➡️ 선점형대기 상태
에서 준비 완료 상태
로 전환될 때 ➡️ 선점형종료될 때
디스패쳐 작업
디스패쳐 지연(Latency)
스케쥴링을 하기위해 고려해야할 요소들
🔹 CPU 이용률(Utilization) 🔼 : CPU를 가능한 최대한 바쁘게 유지(보통 70% 정도 점유하면 많이한거)
🔹 처리량(Throuhgput) 🔼 : 단위 시간 당 완료된 프로세스 개수
🔹 총 처리 시간(Turnaround time) 🔽 : 프로세스의 제출 시간과 완료 시간의 간격(메모리에 들어가기위해 준비한 시간, 큐에서 대기한시간, 실행한 시간, 입출력시간 모두 포함)
🔹 대기 시간(Waiting time) 🔽 : 준비 완료 큐에서 대기하면서 보낸 시간의 합
🔹 응답 시간(REsponse time) 🔽 : 하나의 요구를 제출한 후 첫번째 응답이 발생할 때까지의 시간 (응답 출력하면서 걸리는 시간은 포함안됨)
선입 선처리 스케쥴링 (First-come, First-Served, FCFS)
먼저 요청하는 프로세스가 먼저 CPU 할당받아. FIFO 큐로 관리
최단 작업 우선 스케쥴링 (Shortest-Job-First, SJF)
CPU burst가 짧을 수록 CPU 먼저 할당
우선 순위 스케쥴링 (Priority)
우선순위가 높은 프로세스 먼저 CPU 할당
라운드 로빈 스케쥴링 (Round-Robin)
시간 할당량(Time Quantum)이라고 일컫는 작은 단위의 시간을 정의. 한번에 한 프로세스에게 한 퀀텀동안 CPU를 할당
1️⃣ 선입 선처리 스케쥴링
😃 가장 간단한 형태
😃 코드 작성이 쉽고 이해하기 쉬움
🥲 순서에 따라 대기 시간의 차이가 큼
🥲 모든 다른 프로세스들이 하나의 긴 프로세스가 CPU를 양도하기를 기다려야 함(CPU 릴리즈를 기다려. 이런 효과를 호위효과, Convoy effect라고 함)
🥲 비선점형이기 때문에, 시분할에 부적합(시분할시스템(대화형)에서는 각 사용자가 규칙적으로 CPU의 몫을 얻는게 매우 중요함)
2️⃣ 최단 작업 우선 스케쥴링
😃 최소의 평균 대기시간
🥲 다음 CPU 요청의 길이 파악이 어려움(예측 어려움)
ㄴ비선점형 최단 작업 우선 스케쥴링
ㄴ선점형 최단 작업 우선 스케쥴링 / 최소 잔여 시간 우선 스케쥴링
3️⃣ 우선 순위 스케쥴링
😃 내부적 정의 (시간제한, 메모리 요구, open files수 등)활용 가능
😃 외부적 정의(프로세스의 중요성, 컴퓨터 사용을 위해 지불되는 비용의 유형과 양 등)활용 가능
🥲 무한 봉쇄, 기아 상태 ➡️ Aging 고려
4️⃣ 라운드 로빈 스케쥴링
😃 시분할 시스템 최적화
🥲 시간 할당량(Time Quantum)에 따른 영향도 존재
너무 클 경우 - FCFS와 동일한 알고리즘이 됨
너무 작을 경우 - Context Switch에 시간을 더 뺏김
(80%정도가 time quantum보다 작은게 좋다~)
5️⃣ 다단계 큐 스케쥴링
6️⃣ 다단계 피드백 큐 스케쥴링
https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.