CPU Scheduling
스케줄링이란 무엇인가
- CPU 스케줄링
- 어떻게 프로세스에게 CPU의 사용을 분배할 것인가
- Multiprogramming과 시분할에 기반함
- 메모리 내 실행 준비된 프로세스들 가운데 하나를 선택하여 CPU를 할당함
- 질문: 멀티코어는 어떻게 할까
- 어떻게 프로세스에게 CPU의 사용을 분배할 것인가
- CPU 스케줄링의 목표
- CPU를 최대로 활용하는 것:
- idle 최소화 = CPU를 100% 사용하려 하는 것 = CPU를 saturate
- CPU를 saturate해야하는 상황은 대부분 공유된 클라우드 컴퓨터 자원을 사용하여 서버를 돌려야하는 경우이다.
- 질문: 커널이 사용하는 CPU 시간은
- idle 최소화 = CPU를 100% 사용하려 하는 것 = CPU를 saturate
- CPU를 최대로 활용하는 것:
스케줄링의 종류
- CPU scheduling의 결정은 다음 상태 변화에서 이뤄짐
- “Running”에서 “Waiting” 상태로 (I/O를 하는 경우->sleep큐)
- “Running”에서 “Ready” 상태로 (Timer 인터럽트->ready큐)
- 비선점형 스케줄링(Non-preemptive Scheduling)
- 프로세스가 I/O를 하는 상황에서만 수행되는 스케줄링
- Multiprogramming의 기본 스케줄링 - OS가 강제로 CPU 사용을 중단시키지 않음
- 선점형 스케줄링(Preemptive Scheduling)
- 타임퀀텀을 소진한 상황에서 스케줄링
- OS가 현재 CPU를 사용하고 있는 프로세스의 수행을 강제적으로 정지할 수 있음
Scheduling Criteria
- CPU 활용률 (CPU utilization)
- 전체 시스템 시간 중 CPU가 작업을 처리하는 시간의 비율
- 처리량 (Throughput)
- CPU가 단위 시간 당 처리하는 프로세스의 개수
- 응답시간 (Response time)
- 프로세스가 입출력을 시작해서 첫 결과가 나오는 데까지 걸리는 시간
- 사용자가 무언가를 작성하고 엔터를 치고 난 후, 이에 따른 첫 결과가 화면에 나타날때까지의 시간
- 질문: 큐로 설명해보기 레디큐에 기다리는 시간, 슬립 큐에 기다리는 시간 모두 응답시간이다.
- 프로세스가 입출력을 시작해서 첫 결과가 나오는 데까지 걸리는 시간
- 대기 시간(Waiting time)
- 프로세스가 Ready Queue 내에서 대기하는 시간의 총합
- Turnaround time
- 프로세스가 시작해서 끝날 때까지 걸리는 시간
- 프로세스가 생성된 후 terminate될 때까지
이 모든 기준을 다 만족시키는 스케줄러는 존재하지 않는다. 서로 상충되는 기준이 있기 때문이다. 최선의 스케줄러를 모색할 때에는 어떤 기준에서 최선인지를 따져야 한다.
Q : 런큐 레디 큐에 관련해서 질문이 있는데요, 런 같은 경우에는 어떤 시각 t에서 실행 중인 프로세스는 한개라고 하셨는데 굳이 큐로 관리할 필요가 있나요? A : 그렇다. single core에서 한 순간에 동작하는 프로세스는 하나 뿐이므로, 런큐는 사실 굳이 필요가 없다. 그런데 이제 현실적으로는 multicore 환경에서부터는 런 큐가 필요해지기 시작한다.
Q : 교수님 I/O는 interrupt의 형태인가요 아니면 system call로 봐야하는건가요? A : system call은 문맥교환이 없다. I/O는 시스템 콜의 호출로 인해서 voluntary한 sleep으로 이뤄지므로 I/O 자체는 인터럽트가 아니다. I/O가 완료되었음을 알리는 것이 인터럽트인 것이다.
Q : I/O를 하는데오 문맥 교환이 일어나지 않는 경우도 있나요? A : 문맥 교환은 프로세스가 sleep할때 일어난다. 그런데 만약 sleep하기도 전에 벌써 read할 데이터가 들어와있다면 다른 프로세스로 넘어가지 않고, 바로 read를 한 후 다음 작업을 수행하게 될 것이다.
Scheduler - design
- 이상적인 스케줄러
- 최대의 CPU 사용률
- 최대의 처리량
- 최소의 응답시간
- 최소의 대기시간
- 모든 조건을 만족 시키는 스케줄러를 만드는 것은 현실적으로 불가능
- 시스템의 용도에 따른 요구사항이 달라짐.
- 슈퍼 컴퓨터 – CPU 사용률
- 개인용 컴퓨터 – 응답시간
- 워크 스테이션 – 처리량
Comments