프로세스 스케줄링
프로세스 스케줄링은 여러개의 프로세스가 하나의 시스템안에 존재하는 다중프로그래밍에서 필요한 것입니다. 자원을 어떤 프로세스에게 할당해줄지 선택해주는 과정이라고 보면됩니다. 자원은 크게 두가지 방법으로 분할할 수 있습니다.
첫 번째는 시간분할 관리방법입니다. 하나의 자원을 번갈아 가며 사용하는 것인데요. CPU는 이런식으로 관리됩니다. 두 번째는 공간분할 관리방법입니다. 이는 하나의 자원을 분할하여 동시에 사용하게 됩니다. 메모리는 이런식으로 관리가 되는 자원입니다.
이러한 스케줄링은 결국 시스템의 성능을 향상하기 위한 목적을 가지고있습니다. 그리고 이 시스템 향상을 판단할 지표는 응답시간, 작업처리량, 자원활용도등 다양합니다. 따라서 각 지표에 맞게 목적을 달성할 수 있는 스케줄링이 필요합니다.
아래는 프로세스가 작업을 수행하고 끝내는 과정동안 특정 구간을 칭하는 용어들입니다.
이는 나중에 각 스케줄링의 성능을 계산할 때 쓰이기도 하기때문에 명확히 알아두는 것이 좋습니다.
스케줄링중 가장 낮은 빈도로 수행되는 장기스케줄링에는 어떤 프로그램을 시스템에 등록할지
결정하는 스케줄링입니다. 프로세스의 생명주기로 보면 created
에 해당합니다. 이는 시스템안에 프로세스의 수를 조절하기 위한 목적을 가지고 있습니다. 이때는 I/O bounded와 CPU bounded 프로세스를 잘 섞어서 선택하는 등 여러가지의 고려사항들이 있습니다.
하지만 시분할 시스템
, 즉 CPU를 번갈아가며 사용하는 시스템에서는 모든 작업을 시스템에 등록해도 되기 때문에 장기스케줄링이 불필요해집니다.
중기스케줄링은 메모리의 할당
을 결정하는 스케줄링입니다. 프로세스의 생명주기에서는 swapping
과정이 이에 해당합니다.
가장 빈번하게 일어나는 스케줄링으로 프로세서를 할당할 프로세스를 결정하는 것입니다. 프로세스의 생명주기로 보자면 dispatch
에 해당합니다. 자주일어나는 만큼 빨라야합니다.
스케줄링의 정책중 선점과 비선점은 Preemptive, Non-preemptive라고 불리며 중간에 자원을 뺏길 수 있는지에 따라 나뉩니다. 선점은 중간에 쓰고있던 자원을 우선순위나, 할당시간이 종료됐다는 이유로 빼앗길 수 있습니다. 하지만 비선점은 한번 자원을 할당받으면 스스로 반납할 때 까지 계속해서 사용합니다.
우선순위는 프로세스의 중요도를 의미합니다. 스케줄링에 영향을 미치며 프로세스 생성시에 결정되어 유지되는 정적 우선순위와 프로세스의 상태 변화에 따라 계속해서 변하는 동적 우선순위가 있습니다.
도착시간
기준으로 먼저 처리Convoy Effect
: 중간에 실행시간이 긴 프로세스가 있다면 뒤에 다른 프로세스가 긴 대기시간을 갖게되는 문제 도착시간
기준으로 먼저 처리실행시간
이 짧은 프로세스부터 처리Starvation
발생예측
해야함잔여시간
이 더 적은 프로세스 순으로 처리예측
필요추적
Aging
대기시간
을 고려한 기회 제공response ratio
가 높은 프로세스 순으로 처리 Starvation 방지
예측
필요 여기까지의 알고리즘은 Basic 스케줄링 알고리즘입니다. 특히 3-5번 알고리즘은 실행시간을 예측해야하는 문제점이 있었습니다. 이런 문제점을 해결하기 위한 알고리즘을 소개하겠습니다.
ready queue
를 가지고 여기에 프로세스를 배정벗어날 수 없음
우선순위
기반 스케줄링 사용Starvation
발생이동이 허용
-> I/O bounded, Aging등을 기준으로 복잡