🔷 정의
CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 합니다. 규모에 따라 고수준, 중간, 저수준 스케쥴링으로 구분됩니다. 우리가 어떤 일정을 계획할 때 일 단위로 우선순위에 따라 순서를 정하고 실행하는 과정이라고 생각하면 편합니다.
고수준 스케줄링
가장 큰 틀에서 이루어지는 CPU 스케줄링으로 작업 스케줄링(job scheduling)
이라고도 합니다. 시스템 내의 전체 작업 수를 조절하는 것을 말합니다.
여기서 작업은 운영체제에서 다루는 일의 가장 큰 단위로, 1개 또는 여러 개의 프로세스로 이루어집니다. 고수준 스케줄링은 어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정합니다. 일단 작업이 시작하면 시스템 자원을 사용하기에 기존 작업에 영향을 미칩니다. 이때 시스템 상황을 고려하여 작업을 승인 또는 거부할지를 결정하는 역할을 합니다.
중간 수준 스케줄링
시스템의 부하를 조절하기 위한 스케줄링입니다. 시스템의 과부하가 걸려서 프로세스 수를 조절해야 한다면 이미 활성화된 프로세스 중 일부를 보류 상태로 보냅니다. 이후 여유가 생기면 다시 보류 상태에서 복구합니다.
저수준 스케줄링
가장 작은 단위의 스케줄링으로 실제로 작업이 이루어지는 스케줄링입니다. 어떤 프로세스를 CPU에 할당할지, 대기 상태로 보낼지 등을 결정합니다. 주로 우리가 공부하는 스케줄링이 대부분 여기에 속합니다.
위의 스케줄링을 단계로 그리면 다음과 같습니다.
🔷 스케줄링의 목적
스케줄링은 모든 프로세스가 공평하게 작업하도록 하여 안정적으로 작동하기 위해 존재합니다. 즉 특정 프로세스가 시스템 자원을 독점하거나 파괴하는 것을 막기 위해 중요도에 따라 우선순위를 배정해야 합니다. CPU 스케줄링의 목적을 정리하면 다음과 같습니다.
- 공평성 : 모든 프로세스가 자원을 공평하게 배정받아야 하며, 그 과정에서 특정 프로세스가 배제되면 안된다.
- 효율성 : 시스템 자원이 유휴 시간이 없이 사용되도록 스케줄링하고, 유휴 자원을 사용하려는 프로세스에는 우선권을 준다.
- 안정성 : 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호한다.
- 확장성 : 프로세스가 증가해도 시스템이 안정적으로 작동하도록 조치해야 한다.
- 반응 시간 보정 : 시스템은 적절한 시간 안에 프로세스의 요구에 반응해야 한다.
- 무한 연기 방지 : 특정 프로세스 작업이 무한히 연기되면 안된다.
일반적으로 모든 프로세스는 공평하게 CPU를 할당받아야 합니다. 하지만 시스템의 안정성과 효율성을 높이기 위해 우선적으로 처리해야 하는 프로세스가 있으므로 스케줄러는 일정 부분 공평성을 희생합니다. 일반적으로 우선순위는 운영체제 프로세스 > 일반 프로세스입니다.
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
[운영체제] 교착상태(Dead Lock, 데드락)이란? 그 해결 방법은? (0) | 2021.10.09 |
---|---|
[운영체제] 프로세스 간 통신 (0) | 2021.09.22 |
[운영체제] 프로세스와 스레드의 차이 (0) | 2021.09.12 |
[운영체제] 병렬 처리 기법 (0) | 2021.08.30 |
[운영체제] 컴퓨터 성능 향상 기술 (버퍼, 캐시, 인터럽트) (0) | 2021.08.24 |
댓글