운영체제(OS)의 주요한 과제 중 하나는 중앙처리장치(CPU)가 쉬지 않고 계속 일을 하도록 시키는 것이다. 그러기 위해서는 여러 준비 상태인 프로세스의 작업 순서 및 스케쥴을 맞춰야 하는 데 이를 도와주는 것이 스케쥴러이다. 스케쥴러는 크게 장기 스케쥴러와 단기 스케쥴러가 있는 데, 여기서 단기 스케쥴러가 다른 말로 CPU스케쥴러라고도 한다.
오늘은 이 CPU 스케줄러에 대해서 자세히 알아보자.
CPU 스케쥴링 개념
(=단기 스케쥴러) 메모리에 있는 작업들 중 실행 준비가 완료된 작업을 선정하여 CPU에 배당하는 것으로 이를 통해 CPU 이용률을 최대화 하고자하는 목적이 있다. 다른 프로세스가 작업 처리 중인 프로세스를 빼앗을 수 있는지의 여부에 따라 선점 스케쥴링 기법과 비선점 스케쥴링 기법으로 나뉜다.
선점형(Preemptive)
중앙처리장치를 통한 특정 프로세스에 대해 작업 처리중에 있는 프로세스로부터 중앙처리장치의 사용권이 옮겨지는 방식으로 높은 우선 순위의 작업들이 급히 실행되어야 할 경우 유용할 수 있다. 하지만 특정 프로세스가 CPU 점유 시 다른 프로세스에게 점유권을 빼앗길 수 있는 데 이렇게 우선순위에서 밀린 특정 프로세스는 작업이 자신의 차례가 올 때까지 작업 진행이 계속 연기되는 데 이로 인해 오버헤드를 초래할 수 있다는 단점도 있다. 선점형 방식에는 RR, SRT, MQ, MFQ 방식이 있다.
비선점형(Non-preemptive)
처음 중앙처리장치를 통한 사용권이 주어진 프로세스에 대해 실행이 종료될 때까지 사용권을 독점하는 것으로 프로세스 관리에 공정성을 부여한 방식이다. 다시 말해 특정 프로세스가 이미 할당된 CPU를 다른 프로세스가 빼앗을 수 없으며, 처리가 끝날때까지 기다려야 한다. 선점형에 비해 응답 시간을 예측하기 월등히 쉽다는 장점이 있지만 짧은 작업이 긴 작업을 기다리는 경우에 작업의 효율성이 떨어질 수 밖에 없다는 단점이 존재할 수 밖에 없다. 비선점형 방식은 대표적으로 FIFO, HRN, SJF 스케쥴링 이 있다.
분배기 ( 디스패쳐 : dispatcher ) 작업
분배기라고도 하지만 디스패쳐라고 보통 많이 쓴다.
CPU 스케쥴링은 주기억 장치 내에 위치한 디스패쳐에 의해 이루어진다고 봐야 한다.
디스패여 작업은 대표적으로 문맥 교환(context switch), 사용자 모드로 전환, 프로그램의 적절한 위치로 점프하여 프로그램 재시작이 있다.
여기서 하나의 관련 용어를 더 짚고 가자.
디스패치 지연(Latency)
:하나의 프로세스가 중단되고 다른 프로세스를 실행시킬 때 소요되는 시간을 말한다.
즉 디스패치 지연 값은 짧아야 한다.
CPU 스케줄링 기준
공정성 및 효율성을 가져야 한다.
균형 있는 자원의 사용이 가능해야 한다.
응답시간은 빠르게 제공되어야 한다.
CPU를 쉬지 않게 하고 최대한 바쁘게 유지하여 처리량을 높여야 한다.
총 처리 시간 : 프로세스의 제출시간과 완료 시간의 간격
대기 시간이 긴 작업은 우선순위를 높여주는 에이징기법을 활용해야 한다.
우선순위가 주어진 경우 더 높은 우선순위를 가진 프로세스가 먼저 진행되어야 한다.
스케쥴링 알고리즘 종류에 대해 다음 포스팅에서 자세히 다뤄보겠다.
'IT' 카테고리의 다른 글
[컴퓨터 네트워크] 기본 용어 및 OSI 참조 모델 7계층 별 역할 (0) | 2023.07.23 |
---|---|
[운영체제 OS] CPU 스케쥴링 주요 알고리즘 익히기(FCFS, SJF, Priority, RR) (0) | 2023.07.19 |
[운영체제 OS] 스레드(Thread) 개념과 멀티 쓰레드 간단히 이해하기 (0) | 2023.07.16 |
프로세스 개념 및 PCB, 문맥교환(Context Switching) 알아보기 (0) | 2023.07.13 |
데이터베이스 정규화 [ 1차, 2차, 3차, BNCF ] 알아보기 (0) | 2023.07.10 |