-
CPU 스케줄링 정의
CPU 스케줄링(Scheduling)이란, 처리기(프로세서 Processor, CPU)에 의해 CPU 스케줄러를 할당받을 프로세스를 결정하는 과정이다. 필요한 자원을 모두 확보해야 프로세스가 생성되어 실행한다. 여러 번의 스케줄링 과정을 거쳐 프로세스는 생성되어 완료될 때까지 진행된다. CPU 스케줄링은 프로세스 스케줄링을 의미하며, 준비 상태에 있는 프로세스 중에서 CPU를 할당할 것인지를 어떤 프로세스에 결정하는 작업으로 시스템의 효율은 달라진다. CPU 스케줄링의 목표는 공정성, 처리율의 극대화, CPU 이용률 증가, 응답시간 최소화, 반환시간 최소화, 대기시간 최소화, 우선순위 적용, 오버헤드 최소화, 균형 있는 자원 활용, 에이징 기법 활용에 있다. 공정성은 모든 프로세스에 공정하게 할당한다는 의미이다. 처리율의 극대화는 프로세스당 처리하는 단위 시간을 증가시킨다. CPU 이용률 증가는 프로세스를, 처리를 줄이고, CPU가 순수하게 하는 CPU 낭비 시간을 증가시킨다. 응답시간(Response Time, 반응시간), 반환시간(Turn Around Time), 대기시간(Waiting Time)을 최소화한다. 우선순위 적용하여 우선순위가 높은 프로세스를 먼저 실행한다. 오버헤드를 최소화한다. 자원의 유휴상태가 발생하지 않도록 메모리, 1/0 장치 등의 자원 활용을 균형 있게 사용한다. 에이징 기법 적용하여 무한연기를 배제한다.
CPU 스케줄링의 유형CPU 스케줄링 유형은 상위단계 스케줄링(High Level Scheduling)인 장기 스케줄링(Long Term Scheduling), 중간단계 스케줄링(Intermediate Level Scheduling)인 중기 스케줄링(Medium Term Scheduling), 그리고 하위단계 스케줄링(Low Level Scheduling)인 단기 스케줄링(Short Term Scheduling)으로 나뉜다.
장기 스케줄링은 제출되어 실행을 기다리고 있는 프로세스 중에서, 준비 상태의 프로세스 중 어떤 프로세스를 메모리에 적재할지, 어떤 프로세스가 시스템의 자원을 차지할지를 결정하여 준비 상태 큐로 보내는 스케줄링 단계이다. 스케줄링 초반에 일어나기 때문에 새로운 프로세스가 생성되거나 I/O 작업이 완료된 프로세스 중에서 일부를 선택하여 메모리로 적재한다. 이를 통해 프로세스들이 메모리에 올라가 CPU를 할당받을 수 있게 된다. 다른 스케줄링에 비하여 비교적 장기로 발생하여 장기 스케줄링은 시스템의 성능과 평균 대기 시간에 큰 영향을 미치며, 효율적인 메모리 관리를 위해 사용한다. 이 단계에서 선택된 프로세스들은 중기 스케줄링을 거쳐 메모리로 이동하고, 그 후에 단기 스케줄링에 의해 CPU를 할당받게 된다.
중기 스케줄링은 현재 메모리에 올라와 있는 준비 상태에 있는 프로세스 중 어떤 프로세스를 디스크로 내릴지, CPU를 할당받을 것인지를 결정하는 준비 상태에서 실행 상태로의 변경하는 스케줄링 단계이다. 일시적인 부하를 조절하는 버퍼 역할을 하며 일시 보류된 프로세스는 교체 공간인 디스크에 저장되며 이후에 다시 주 기억장치에 적재하는 이 과정을 스와핑(Swapping)이라고 한다. 메모리 부족 상황에서 CPU를 할당받기 위해 기다리고 있는 프로세스가 많은 경우 일부 프로세스를 디스크로 스왑아웃하고, 나중에 필요할 때 다시 메모리로 스왑인하여 프로세스를 일시 보류시킨 후 활성화하여 실행할 수 있게 한다. 이로써 시스템의 메모리 공간을 효율적으로 활용하며, 다양한 프로세스 간의 상호작용을 제어하여 전체 시스템 성능을 최적화한다. 대부분의 시스템은 장기 스케줄링과 단기 스케줄링만을 통해 CPU 스케줄링을 하며, 중기 스케줄링은 주로 프로세스들의 상태를 저장하고 나중에 다시 복구할 수 있는 상태로 디스크로 내릴 때 사용된다.
단기 스케줄링은 현재 메모리에 올라와 있는 프로세스 중에서 프로세스를 실행하기 위해 어떤 프로세스에 CPU를 할당할지 결정하는 스케줄링 단계이다. CPU 스케줄러가 CPU를 할당받는 시기를 지정하는 과정으로 CPU Scheduling이라고도 하는 단계가 이 단계에서 실행되며, 각 프로세스에 대한 우선순위, 예상 실행 시간, CPU 사용량 등을 고려하여 어떤 프로세스를 실행시킬지를 결정한다. 이 결정은 빠르게 이루어져야 하며, 이를 위한 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행된다. 프로세스들이 CPU를 효율적으로 활용하고 응답 시간을 최소화하기 위한 목적을 가지고 디스패처(Dispatcher)에 의해 실행된다. 단기 스케줄링은 대개 라운드 로빈, 우선순위 스케줄링 등 다양한 알고리즘을 사용하여 다중 프로그래밍과 시분할 시스템에서는 자주 수행된다. 수행 속도는 매우 빨라서 CPU를 효과적으로 관리하고 프로세스 간의 조절을 담당한다.CPU 스케줄링 단계
1단계인 작업 승인 단계는 작업 스케줄링(Job scheduling)이라고도 하며, 시스템에 작업이 적재되는 것을 승인한다. 그로 인해 (Admission scheduling)이라고도 한다. 이 단계에서는 시스템 내의 자원들을 어느 작업부터 실제로 사용할 수 있도록 할지를 결정한다.
2단계는 프로세스의 작업순위를 결정하는 단계이다. 이 단계에서는 CPU를 차지할 프로세스의 순서를 결정한다. 프로세스들을 보류, 활성화하는 기법을 활용하여 시스템 부화를 단기적으로 조절하여 시스템을 효율적으로 운영한다. 작업 승인(1단계)과 CPU 배당(3단계) 사이의 완충 작용을 한다.
3단계는 CPU에 프로세스를 배정하는 단계이다. 어느 프로세스를 처리기가 사용 가능한 경우 배치하는지 결정한다.CPU 스케줄링 성능 평가 기준
CPU 스케줄링 성능은 가능한 CPU를 최대로 사용되는지 단위 시간당 CPU가 사용되는 시간인 CPU 이용률, 단위 시간당 완료된 프로세스의 개수를 통해 얼마나 많은 프로세스를 처리했는지에 대한 처리율, 어떤 프로세스가 등록되고 반응이 시작되었는지 걸린 시간인 응답시간, 작업이 완료되어 CPU를 반환하기까지 걸리는 시간으로 작업이 제출되어 주기억장치, 준비 큐, 실행, 입출력 등을 완료하고 시스템에서 빠져나오는 전체 수행시간인 반환시간, 프로세스가 준비상태에서 처리되기를 기다리고 있는 시간으로 준비 큐에 존재하는 시간인 대기시간을 기준으로 평가된다.
'컴퓨터공학' 카테고리의 다른 글
PCB(Process Control Block)란? 정의, 구조, 특징 (0) 2024.03.11 스레드(Thread)란? 정의, 특징, 분류, 장점 및 단점 (0) 2024.03.11 프로세스 스케줄링이란? 비선점 스케줄링, 선점 스케줄링 (0) 2024.03.09 운영체제란? 운영체제 정의, 목적, 기능 (0) 2024.03.08 시스템이란? 정의, 특성, 기본 요소, 종류, 분류 (0) 2024.03.07