스케줄링이란 여러 가지 작업의 처리순서를 결정하는 것을 말합니다.
이러한 스케줄링은 디스크 스케줄링, 프로세스 스케줄링 등이 있는데요.
오늘은 프로세스 스케줄링에 대해서 알아보겠습니다.
프로세스 스케줄링?
주어진 프로세스가 여러개인 경우에 프로세스 처리 순서를 결정하는 것을 뜻합니다.
스케줄링의 단계
작게는 두가지 크게는 세 가지로 나뉘게 됩니다.
- 상위단계스케줄링
- 하위단계스케줄링
- 중간단계 스케줄링
상위단계 스케줄링
작업들이 작업큐에 들어올 때 어떤 작업을 프로세스로 만들 것인가를 결정하는 단계입니다.
작업을 프로세스로만드는 작업과 관계되는 것인 만큼 시스템 자원을 효율적으로 이용할 수 있도록 합니다.
만약 CPU가 여유롭다면 CPU 작업을 먼저 프로세스로 만들어주는 등 요청 작업을 상황에 맞춰 스케줄링합니다.
활성화된 작업은 준비큐로 들어가 CPU의 할당을 기다립니다.
하위단계 스케줄링
준비큐에서 어떤 프로세스에 CPU를 할당할지 결정하는 작업입니다.
즉 디스패치하는 역할로 수행 주체는 dispatcher 입니다.
실제 실행이 되도록 할 것인가에 대한 고민을 하위단계 스케줄링에서 실행하게 됩니다.
중간단계 스케줄링
간혹 이러한 처리 중 시스템 자원 부하가 많이 발생 시 중간단계 스케줄링을 사용하는 운영체제도 있습니다.
단기적인 부하 조절을 위해 부하를 발생시키는 특정 작업을 일시 중지 시킵니다.
스케줄링의 목표
스케줄링의 기본 목표는 두 가지인데요.
공정성과 균형입니다.
공정성 : 모든 프로세스가 적정 수준에서 공평하게 CPU작업을 실행
균형 : CPU, 입출력 장치 등 시스템 자원이 충분히 활용될 수 있도록 함
운영체제의 유형에 따라 스케줄링의 목표는 달라지기도 합니다.
각 운영체제의 유형별 스케줄링 목표를 알아보겠습니다.
운영체제의 유형별 스케줄링 목표
일괄처리 운영체제
- 처리량의 극대화
- 반환시간 최소화
- CPU 활용 극대화
처리량 : 주어진 시간에 처리한 프로세스 수를 말합니다.
반환시간 : 프로세스 생성시점부터 모든 작업 완료 후 종료시점까지의 소요시간
시분할 운영체제
- 빠른 응답시간
- 과도한 대기시간 방지
응답시간 : 요청한 시점부터 반응이 시작되는 시점까지의 소요시간
대기시간 : 프로세스가 종료될 때 까지 준비큐에서 기다린 시간의 합
실시간 운영체제
- 처리기한 맞춤
이처럼 운영체제 유형 별 스케줄링 목표들이 존재하는데요.
이런 목표를 고려하기에 앞서 우선적으로 고려해야 할 두 가지 기본 정책이 존재합니다.
스케줄링 정책
스케줄링 정책은 두가지가 존재합니다.
바로 선점과 비선점입니다.
선점(preemptive) 스케줄링
실행 중인 프로세스에 인터럽트를 걸고 해당 프로세스 실행을 중지시킵니다.
그 후 다른 프로세스에 CPU 할당이 가능한 스케줄링 방식입니다.
높은 우선순위의 프로세스를 우선 처리해야 하는 경우에 유용하고 실시간 시스템과 시분할 시스템에 적합합니다.
하지만 문맥 교환에 따른 오버헤드가 발생한다는 단점이 있는데요.
해서 운영체제는 문맥교환이 매우 빠르게 실행되도록 만들어져야 합니다.
여기서 문맥교환(Context Switching)의 개념을 짚고 넘어가겠습니다.
문맥(context)란 무엇일까요?
CPU가 기본적으로 동작할 때 레지스터의 값을 가지고 있으며 그 값을 바탕으로 특정 프로세스의 작업 수행합니다.
CPU 의 모든 레지스터에 있는 내용을 문맥이라고 하며 특정 프로세스와 관련된 내용입니다.
문맥 교환은 한 프로세스가 CPU 사용 중 프로세스 교환이 필요한 경우에 일어납니다.
아직 프로세스가 종료되지 않았기 때문에 실행 중인 레지스터 값을 PCB에 저장하게 됩니다.
이 상태에서 다른 프로세스의 PCB로부터 문맥을 복원해 CPU에 할당하고 동작하여 다른 프로세스가 실행되는 과정을 문맥 교환이라고 합니다.
이러한 문맥 교환이 과도하게 일어나면 오버헤드가 발생하겠죠?
비선점(nonpreemptive) 스케줄링
지난 포스팅에서 프로세스의 상태에 대하여 말씀 드렸었습니다.
실행 중인 프로세스가 있으면 프로세스를 바로 준비상태로 전이시킬 수 없다는 특징을 가지고 있습니다.
상태전이는 실행에서 종료 혹은 대기로만 가능합니다.
작업이 완전히 실행이 끝난 후에는 종료로, 실행중인 프로세스가 자발적으로 대기로 전환하며 CPU를 내놓은 상황에서는 대기로 전환되는 것이죠.
강제적 문맥 교환이 없어 오버헤드 발생하지 않지만 긴 프로세스가 실행 중이라면 짧은 프로세스가 오래 기다리는 상황이 발생하기도 합니다.
스케줄링의 평가 기준
그럼 효율적인 스케줄링이란 것을 어떻게 알 수 있을까요?
스케줄링에도 평가 기준이 존재합니다.
평균대기시간과 평균반환시간입니다.
평균대기시간
각 프로세스가 수행 완료 시까지 준비큐에서 기다리는 시간의 평균값입니다.
모든 프로세스의 대기시간을 다 더한 후 프로세스 개수로 나누면 구할 수 있습니다.
평균반환시간
프로세스의 생성 시점부터 완료 시점까지 소요 시간의 평균값을 말합니다.
마찬가지로 모든 프로세스의 반환시간을 다 더해서 개수로 나누면 구할 수 있습니다.
오늘은 프로세스 스케줄링의 개념에 대하여 알아보았는데요.
다음 포스팅에서는 프로세스 스케줄링 알고리즘에 대하여 알아보는 시간을 갖겠습니다.
'Computer Science > OS' 카테고리의 다른 글
[OS] 병행프로세스 (0) | 2023.04.17 |
---|---|
[OS] 프로세스 스케줄링 알고리즘 (0) | 2023.03.15 |
[OS] 프로세스 관리와 쓰레드 (0) | 2023.03.05 |
[OS] 프로세스란? (0) | 2023.03.05 |
[OS] 운영체제 개요 (0) | 2023.02.26 |