공부 방식을 조금 수정했다. 강의를 들음과 동시에 블로그에 옮기는 것보다, 교재와 강의를 동시에 보며 아이패드에 관련 내용을 필기, 교재와 강의에서 뽑아낸 중요한 정보를 블로그에 옮기는 것이 시간이 조금 더 걸릴지 몰라도 학습에 좋을 것 같아서 그렇게 해야 할 것 같다.
스케줄링 : 여러 작업의 처리 순서 결정하기
스케줄링은 디스크 스케줄링, 프로세스 스케줄링으로 나뉘며 프로세스 스케줄링에 대해 다룬다.
스케쥴링은 작업을 활성화 시킬 때 효율적으로 작동하도록 하며, 상위단계 스케쥴링은 시스템에 들어와 작업 큐에 있는 작업을 선택하여 프로세스 생성 후 프로세스 준비 큐에 전달하는 역할을 한다.
하위 단계 스케줄링은 준비 큐에 있는 프로세스를 선택하여 사용 가능한 CPU를 할당하는 역할을 하며, 이 수행의 주체느느 디스패처(dispatcher)이다.
📌 디스패치 복습 : 프로세스가 준비 큐에 머물고 있다가, 스케쥴러에 의해 선택되어 실행 상태로 바뀔 때
프로세스에 CPU를 할당하는 과정을 디스패치(dispatch)라고 한다.
스케줄링할 때 고려하는 기본적인 목표 두 가지는 공정성과 균형성이다.
일괄처리 운영체제
- 처리량 극대화
📌 처리량 : 주어진 시간 안에 몇 개의 프로세스를 생성 시점부터 처리할 수 있는가?- 반환시간 최소화
📌 반환시간 : 종료시점까지의 소요시간- CPU 활용 극대화
시분할 운영체제
- 빠른 응답시간
📌 요청 시점부터 반응이 시작되는 시간- 과다한 대기시간 방지
📌 대기시간 : 프로세스가 종료될 때까지 준비큐에서 기다린 시간의 합
실시간 운영체제
- 처리기한 맞춤
스케줄링의 목표들은 각각 서로 상반된 경우가 있어, 모두를 한 번에 충족시키는 정책을 세우기는 어렵다.
처리량의 극대화를 위해 시간당 완료되는 프로세스 수가 많아지도록 수행 시간이 짧은 프로세스를 먼저 수행할 수도 있으며,
그저 들어온 순서대로 프로세스를 수행할 수 있지만, 그런 경우에 긴 프로세스는 대기시간과 반환 시간이 길어진다.
선점 스케줄링 정책
- 실행중인 프로세스에 인터럽트를 걸고, 다른 프로세스에 CPU를 할당한다.
- 이 방식은 높은 우선순위의 프로세스를 우선 처리하는데에 유리하다
ex) 실시간 시스템, 시분할 시스템- 문맥 교환에 따른 overhead가 발생할 수 있다.
📌 문맥(context) : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스 상태
📌 문맥 교환 : CPU가 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고, 문맥을 복원하는 작업을 의미한다.
⭐️ 운영체제는 문맥 교환이 매우 빠르게 실행되도록 만들어야 한다.
비선점 스케줄링 정책
- 실행 중 프로세스를 바로 준비상태로 전이 시킬 수 없는 스케줄링 방식이다.
- CPU를 할당 받아 실행이 시작된 프로세스는 대기, 종료가 될 때까지 계속 실행상태에 머무른다.
- 강제 문맥 교환이 없어 오버헤드가 발생하지 않는다.
- 대신, 오랜 시간이 걸리는 프로세스가 있다면 짧은 프로세스가 오래 기다리게 된다.
장점 : CPU를 독점하지 않고 공평하게 이용한다.
📌 따라서 시분할 운영체제에 적합하다.
단점 : 시간 할당량을 너무 크게 잡으면 FCFS 스케줄링과 동일하다.
시간 할당량이 너무 작으면, 너무 많은 문맥 교환으로 오버헤드가 커진다.
프로세서의 스케줄링을 위해 상위단계, 하위단계 및 중간단계 스케줄링이 사용된다.
선점 스케줄링 정책은 실행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당할 수 있는 스케줄링 방식이고, 비선점 스케줄링 정책은 실행 중인 프로세스를 바로 준비상태로 전이시킬 수 없는 스케줄링 방식이다.
FCFS 스케줄링은 준비 큐에 도착한 순서에 따라 디스패치하는 비선점 방식의 스케줄링 알고리즘이다.
SJF 스케줄링은 준비 큐에서 기다리는 프로세스 중 실행시간이 가장 짧다고 예상되는 것을 먼저 디스패치하는 비선점 방식의 스케줄링 알고리즘이다.
SRT 스케줄링은 준비 큐에서 기다리는 프로세스 중 남은 실행시간이 가장 짧다고 예상되는 것을 먼저 디스패치하는 선점 방식의 알고리즘이다.
RR 스케줄링은 프로세스가 도착한 순서대로 프로세스를 디스패치하지만, 정해진 시간 할당량에 의해 실행을 제한하는 선점 방식의 스케줄링 알고리즘이다.
HRN 스케줄링은 준비 큐에서 기다리는 프로세스 중 응답 비율이 가장 큰 것을 먼저 디스패치 하여 실행하는 비선점 방식의 스케줄링 알고리즘이다.
HRN 스케줄링의 응답비율은 예상 실행 시간이 짧을수록, 그리고 대기시간이 길수록 커진다.
다단계 피드백 큐 스케줄링은 입출력 위주의 프로세스가 연산 위주의 프로세스보다 우선권을 갖도록 하는 선점 방식의 알고리즘이다.