스케줄링(Scheduling)이란 컴퓨터 시스템의 모든 자원을 효율적으로 사용하기 위한 프로세스 관리 정책이다. 컴퓨터 시스템의 성능향상
이라는 목적을 가진다.
다중 프로그래밍을 지원하는 OS에서 프로세서(CPU)를 효율적으로 관리하기 위해 필요하다.
💡 다중 프로그래밍이란? - CPU가 쉬지 않고 항상 실행되게 함으로써 CPU 이용률을 높이는 것.
보통 OS는 하나의 프로세스를 선택해서 실행한다.
프로세스를 실행 중에 입출력 동작을 만나게 되면 입출력 장치를 수행하고, CPU가 쉬게 된다.
입출력 동작을 수행하는 동안 다른 프로세스를 수행하여 CPU를 낭비하지 않는 것이 다중 프로그래밍이다.
성능지표 | 내용 |
---|---|
응답 시간(response time) | 시스템이 사용자의 요구에 응답하는 시간 |
작업 처리량(throughtput) | 단위 시간 내의 프로세스 처리량 |
자원 활용도(response time) | 주어진 기간 동안의 자원의 활용 정도 |
CPU는 성능 지표를 이용하여 스케줄링 기법을 선택한다.
알고리즘을 설명하기 전에 선점과 비선점 개념에 대한 이해가 필요하다.
💡 선점 한 프로세스가 CPU를 할당받아 실행중이라도 다른 프로세스가 현재 프로세스를 중지 시키고 CPU를 강제적으로 뺏을 수 있는 스케줄링 방식
💡 비선점 한 프로세스가 CPU를 할당받아 실행중이라면 다른 프로세스들이 CPU를 강제적으로 뺏을 수 없는 스케줄링 방식
먼저 요청한 프로세스 순으로 스케줄링
비선점 방식
장점
: 자원의 효율성 높음, 일괄 처리 시스템 등에 적합
단점
: 프로세서를 장시간 독점하는 경우 오랜 시간 기다려야 함(평균 응답 시간이 길어짐), 대화형 시스템에 부적합
CPU 작업 시간이 가장 짧은 프로세스 순으로 스케줄링
비선점 방식
작업 시간이 동일할 경우 FCFS 정책을 따름
장점
: 평균 대기 시간 최소화, 시스템 내의 대기 프로세스 수 최소화, 많은 프로세스들에게 빠른 응답 시간 제공
단점
: 무기한 연기 현상 발생 가능, 프로세스 생성 시 총 실행 시간에 대한 정확한 계산 불가능
시분할 시스템에서 사용
선점 방식
시간 조각(time slice)이라는 작은 시간을 정의하여 이 시간이 경과할 때마다 현재 프로세스를 중단하고 다음 프로세스를 실행
장점
: 응답시간이 짧아 대화형 시스템에 적합
단점
: 알고리즘의 성능은 시간 조각에 의존함. 이 크기가 매우 크면 FCFS 알고리즘과 큰 차이가 없음. 반대로 매우 작으면 문맥 전환이 많이 발생.
우선순위가 높은 프로세스 순으로 CPU 할당
선점 또는 비선점
우선순위가 같으면 FCFS 정책으로 할당
낮은 수일수록 우선순위가 높음
단점
: 우선순위가 낮은 프로세스의 경우 영구 대기 또는 굶주림 현상 발생
++ 계속 해서 업데이트 될 예정입니다. (다중레벨 큐 스케줄링, 다중레벨 피드백 큐 스케줄링)