티스토리 뷰
프로세스 스케줄링
준비 큐에 등록된 프로세스들 중에서 스케줄링 정책에따라 하나의 프로세스를 선택하고, 선택된 프로세스에게 CPU를 할당하는 운영체제의 기법
* 준비 큐(ready queue) : 준비상태의 프로세스들을 관리하기 위한 자료구조
선점(preemptive) 방식: 강제적으로 CPU를 빼앗김(①②③④⑤)
비선점(non_peemptive) 방식: 자발적으로 CPU를 반납(①②)
스케줄링 시 고려해야 할 요소들
- CPU 이용률 (CPU utilization) : 주어진 시간에 대한 CPU 사용시간
- 처리율 (throughput) : 단위 시간당 처리된 프로세스의 개수
- 반환 시간 (turnaround time): 프로세스가 생성된 후 종료될 때까지 소요된 시간
- 대기 시간 (waiting time): 프로세스가 준비상태에서 소요된 시간
- 응답 시간 (response time): 어떤 사건(event)이 발생한 후 첫 번째 응답이 나오는데 소용된 시간
CPU 이용률과 처리율은 최대화 / 반환, 대기, 응답시간은 최소화하는 것이 이상적
1) 선입 선처리(FCFS)
- 가장 먼저 준비 큐에 등록된 프로세스를 선정 -> 가장 간단하다.
- 전형적인 비선점 방식 -> 일괄처리 시스템에 적합, 대화식 시스템에 부적합하다.
- 평균 대기시간이 길어진다. -> 호송 효과(convoy effect)
2) 최단 작업 선처리(SJF)
- 준비 큐에 등록된 프로세스 중에서 CPU 사용시간이 가장 짧은 프로세스를 선정
- 기본적으로 비선점 방식이지만, 선점방식도 가능하다.
- 정확한 CPU 사용시간 예측이 불가능
3) 우선순위(Priority)
- 준비 큐에 등록된 프로세스 중에서 우선순위가 가장 높은 프로세스를 선정
- 프로세스가 생성될 때 우선순위를 부여한다.
- 기본적으로 비선점 방식이지만, 선점 방식도 가능하다.
- 기아현상(starvation) 발생할 수 있다.
4) 순환처리(RR:Round-Robin)
- 시분할(time-sharing) 시스템을 지원하기 위해 제안되었다.
- 전형적인 선점 방식
- CPU 할당시간 결정이 중요하다.
- CPU 할당시간이 너무 작으면 문맥교환이 자주 발생
- CPU 할당시간이 너무 크면 FCFS처럼 호송효과가 발생
5) 다단계 큐(Multi-level Queue)
- 다수의 준비 큐를 사용한다.
준비 큐마다 우선순위가 부여된다.
준비 큐 사이 스케줄링이 우선적이다.
준비 큐마다 고유의 스케줄링 정책을 적용한다.
- 프로세스마다 단계별 준비 큐에 등록된다.
준비 큐 사이의 프로세스 이동이 없다.
- 기아현상이 발생할 수 있다.
6) 다단계 피드백 큐(Multi-level Feedback Queue)
- 다수의 준비 큐를 사용한다.
준비 큐마다 우선순위가 부여된다.
준비 큐 사이의 스케줄링이 우선적이다.
준비 큐마다 고유의 스케줄링 정책을 적용한다.
- 모든 프로세스는 최상위 준비 큐에 등록된다.
준비 큐 사이의 프로세스 이동이 발생할 수 있다.
상위 큐에서 하위 큐로 이동한다.
하위 큐에서 상위 큐로 이동시킬 수 있다(에이징).
- 준비 큐마다 CPU 할당시간이 다르다.
우선순위가 낮을수록 CPU 할당시간이 길다.
입출력 위주 프로세스가 계산 위주 프로세스보다 유리하다.
'cs > operating system' 카테고리의 다른 글
[운영체제/OS] 결정성, 생산자/소비자 프로세스, 경쟁 조건 (0) | 2021.04.02 |
---|---|
[운영체제/OS] 리눅스 프로세스 (0) | 2021.03.28 |
[운영체제/OS] 스래드 정의, 단일/다중 스래딩, 프로세스와 비교, 스래드 생성 (0) | 2021.03.26 |
[운영체제/OS] 프로세스 정의, 상태, 주소 영역, 문맥 교환, PCD, 생성/종료 (0) | 2021.03.26 |
[운영체제/OS] 운영체제 진입점(Entry Points) (0) | 2021.03.14 |