2022-08-18
CPU 스케줄링과 다중 큐
CPU 스케줄러가 어떻게 프로세스를 스케줄링하는지, 다중 큐가 무엇인지 알아보자!
CPU 스케줄링
CPU 스케줄러가 프로세스의 상태 변화, CPU 자원 배정, 프로세스 우선 순위 등을 결정하는 일을 말한다.
스케줄링을 통해 프로세스가 아사되는 상태를 방지하고, 모든 프로세스가 작업을 수행할 수 있도록 한다.
스케줄링 수준
- 고수준: 시스템 부하를 고려해 Job 단위에서 동시에 실행할 수 있는 프로세스 수를 파악하고,
프로세스 활성 여부를 결정하는 일을 말한다. 보류된 프로세스는 시스템에 여유가 생기면 수행된다.
예를 들면 좌석이 20개인 카페에 그 이상의 인원을 수용하는 것을 방지하는 행위와 비슷하다. - 중간수준: 프로세스 활성화 후에도 과부하가 발생해 시스템 부하로 이어질 수 있다.
권장 사양을 넘는 게임을 하거나 고화질 영상을 시청하면 다른 프로세스들 수행에 영향을 미친다.
따라서 활성화된 프로세스 수를 조절해 보류 상태로 변경해도 되는 프로세스를변경함으로서 부하를 완충한다.
보류 상태로 변경한다는 것은 스왑영역에 데이터를 임시저장 하는 것을 말한다. - 저수준: CPU 자원을 할당, 프로세스 활성 상태에 변화를 수행하는 일을 말한다.
스케줄링 고려사항
선점, 비선점
- 선점형: 운영체제가 CPU를 사용 중인 프로세스의 자원을 회수할 수 있는 방식을 의미한다.
- 비선점형: CPU를 사용중인 프로세스의
타임 슬라이스
동안 자원을 강제로 회수할 수 없는 방식을 말한다.
우선순위
프로세스는 우선순위가 있는데 이는 중요도가 다르다는 의미다.
스케줄러는 이 우선순위를 사용해 순위가 높은 프로세스를 자주 빨리 작업시킨다.
프로세스는 크게 커널 프로세스
일반 프로세스
가 있으며 커널 프로세스가 우선순위가 더 높다.
같은 유형의 프로세스 안에서도 우선순위가 다르며 일반 프로세스는 사용자가 설정할 수 있다.
집중 프로세스
입출력 집중 프로세스와 CPU 집중 프로세스가 같이 있을 때, 입출력 집중 프로세스를 우선적으로 처리한다.
그 이유는 입출력을 요청하면 대기 상태로 전환되기 때문에 다른 프로세스가 CPU 자원을 받아
작업을 수행할 수 있기 때문이다. 이렇듯 입출력 프로세스가 먼저 작업되는 현상을 사이클 훔치기
라 한다.
만약 CPU 집중 프로세스가 우선적으로 처리된다면, 해당 프로세스 타임 슬라이스 동안은
다른 작업을 수행할 수 없기 때문에 입출력을 우선적으로 처리하는 것이다.
전면, 후면 프로세스
- 전면 프로세스: 사용자와 상호작용이 가능하고 화면에 맨 앞에 놓인 프로세스를 말한다.
- 후면 프로세스: 사용자와 상호작용이 없고 사용자 입력 없이도 동작하는 프로세스를 말한다.
예로 알집이나 V3 백신 검사 프로그램.
다중 큐
스케줄러는 우선순위가 높은 프로세스를 먼저 CPU를 할당하기 때문에,
준비 큐가 하나로 구성되어 있다면 큐 전체를 순환해 제어 블록을 찾아야 하는 비효율적인 동작이 발생한다.
따라서 스케줄링 알고리즘에 의해 준비 큐를 몇개로 나눌지 어떻게 구분할지를 결정해 효율적으로 동작한다.
준비 큐, 대기 큐 모두 다중 큐를 사용하지만 약간의 차이가 있다.
준비 큐는 스케줄러가 디스패치를 한 번에 하나의 제어 블록을 디스패치하는 반면,
대기 큐는 입출력의 형태가 다양하기 때문에 백터 자료구조를 사용해 동시에 여러 제어 블록을 이동시킨다.
스케줄링 알고리즘
CPU 스케줄링 알고리즘은 여러 종류가 있지만 다단계 피드백 큐
알고리즘만 설명한다.
다단계 피드백 큐 알고리즘은 CPU를 점유한 프로세스의 우선순위를 한 단계씩 낮추어 큐잉하는 스케줄링 방법이다.
낮은 우선순위의 프로세스가 아사되는 현상을 방지하기 위해
타임 슬라이스
를 크게 사용하게 함으로써 우선순위가 낮은 프로세스 작업이 완료될 수 있게 해준다.