스케줄링의 개요
CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정 여러 프로세스 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정
✔️ 규모별 스케줄링
-
고수준 스케줄링 시스템 내 전체 작업 수를 조절 작업은 1개 이상의 프로세스로 이루어진 가장 큰 단위
전체 시스템 부하를 고려해 작업 승인 또는 거부를 결정
멀티프로그래밍 정도, 즉 전체 프로세스 수가 결정 -
중간 수준 스케줄링
활성화된 프로세스 수를 조절해 시스템 과부하를 막음
일부 프로세스를 보류 상태로 옮겨 나머지 정상 작동을 지원 -
저수준 스케줄링
어떤 프로세스를 준비/실행/대기 상태로 보낼지 결정 오늘날 CPU 스케줄러는 대부분 중간과 저수준 스케줄링으로 이루어짐
✔️ 스케줄링의 목적
| 목적 | 의미 |
|---|---|
| 공평성 | 모든 프로세스가 자원을 공평히 배정받아야 함 |
| 효율성 | 자원이 유휴 시간 없이 사용되어야 함 |
| 안정성 | 우선순위로 중요 프로세스 먼저 작동, 자원 보호 |
| 반응 시간 보장 | 적절 시간 안에 프로세스 요구에 반응해야 함 |
| 무한 연기 방지 | 작업이 무한히 연기되어선 안됨 |
스케줄링 시 고려 사항
✔️ 선점형 스케줄링, 비선점형 스케줄링
-
선점형 스케줄링 실행 중인 프로세스도 CPU를 빼앗을 수 있음 운영체제는 필요 시 실행 중인 프로세스를 중단시키고 새 작업 시작 가능
대표적으로 인터럽트 처리 방식이 있음 낭비가 있지만 대화형, 시분할 시스템에 적합 -
비선점형 스케줄링
프로세스가 CPU를 잡으면 종료 또는 대기 상태까지만 실행
문맥 교환 낭비는 없으나, 긴 CPU 사용으로 처리율 저하 가능
✔️ 프로세스 우선순위
우선순위가 높을수록 더 자주 실행
커널 프로세스와 일반 프로세스로 구분하며, 커널 프로세스가 우선순위가 높음
일반 프로세스는 사용자에 의해 우선순위 조절 가능
예: 비디오 플레이어가 문서 편집기보다 우선순위가 높음
✔️ CPU 집중 프로세스, 입출력 집중 프로세스
- CPU 집중 프로세스: CPU 연산 위주 작업
- 입출력 집중 프로세스: 저장장치 입출력 위주 작업
입출력 집중 프로세스가 먼저 실행되는 것이 효율적
이런 현상을 사이클 훔치기
✔️ 전면 프로세스, 후면 프로세스
전면 프로세스는 사용자와 상호작용하며 입출력 중인 프로세스
후면 프로세스는 사용자와 상호작용 없고 백그라운드 작업
예: 브라우저는 전면, 문서 편집기는 후면 프로세스
전면 프로세스가 우선순위가 높음
정리
- 커널 프로세스 > 일반 프로세스
- 전면 프로세스 > 후면 프로세스
- 대화형 프로세스 > 일괄 처리 프로세스
- 입출력 집중 프로세스 > CPU 집중 프로세스
다중 큐
✔️ 준비 상태의 다중 큐
CPU 스케줄러는 PCB 우선순위 높은 프로세스를 먼저 CPU에 할당
운영체제는 우선순위별로 여러 큐를 만들고, 준비 상태 프로세스는 자신의 우선순위 큐 뒤에 삽입
스케줄링 알고리즘에 따라 큐 구분 및 선택 방식이 달라짐
- 고정 우선순위 방식: 우선순위 변하지 않음, 구현 쉽지만 효율 떨어짐
- 변동 우선순위 방식: 우선순위 변함, 구현 복잡하지만 효율 높음
✔️ 대기 상태의 다중 큐
여러 입출력장치 대기를 위해 대기 상태 PCB는 동일 입출력 큐에 모임
대기 상태에서는 여러 PCB를 꺼내 준비 상태로 이동
여러 입출력 완료 시 한꺼번에 인터럽트 처리 위해 인터럽트 벡터 활용
나중에 들어온 PCB가 먼저 준비 상태로 옮겨질 수 있음
이것은 입출력장치 속도를 고려한 작업 순서 조정
스케줄링 알고리즘
스케줄링 알고리즘은 비선점형과 선점형으로 나눔
평가 기준
주로 대기 시간, 응답 시간, 실행 시간, 반환 시간 등을 통해 평가
- 대기 시간: 생성 후 실행 전까지 대기 시간
- 응답 시간: 생성 후 첫 출력까지 시간
- 실행 시간: 시작 후 종료까지 시간
- 반환 시간: 생성 후 종료까지 시간
평균 대기 시간을 가장 많이 평가
🔑 FCFS 스케줄링 (비선점형)
First Come First Serve로, 도착 순서대로 CPU 할당
비선점형이라 한 프로세스 완료 후 다음 실행
콘보이 효과로 긴 작업이 뒤 작업 지연
🔑 SJF 스케줄링 (비선점형)
Short Job First, 실행 시간 짧은 작업부터 CPU 할당
콘보이 효과 완화 가능하나 공평성 문제로 실무에 제한적
아사 현상이라 불리는 무한 연기 현상 발생 가능
에이징 기법으로 완화 가능하지만 잘 사용하지 않음
🔑 HRN 스케줄링 (비선점형)
High Response ratio Next
대기 시간과 CPU 사용 시간 고려한 우선순위 할당
아사 현상 완화 가능하나 공평성 문제 존재
🔑 라운드 로빈 스케줄링 (선점형)
Round Robin, 순환 순서로 타임 슬라이스 내 작업
타임 슬라이스 동안만 작업하고 완료 안 되면 큐 뒤로
FCFS 유사하나 선점형 문맥 교환 시간 고려 필요
🔑 SRT 우선 스케줄링 (선점형)
Shortest Remaining Time, 남은 작업 시간 가장 적은 프로세스 우선 CPU 할당
SJF와 라운드 로빈 혼합형
주기적 시간 계산과 아사 현상 문제로 사용 제한적
🔑 우선순위 스케줄링 (비선점형, 선점형)
우선순위 높은 프로세스에 CPU 할당
고정 및 변동 우선순위 가능
아사 현상과 오버헤드로 효율 저하 우려
우선순위는 시스템 효율성 아닌 프로세스 중요도로 결정됨
🔑 다단계 큐 스케줄링 (선점형)
우선순위별 여러 큐 사용
각 큐는 라운드 로빈 방식으로 처리
상위 큐 작업이 끝나야 하위 큐 작업 실행 가능
지연 문제 해결책이 다단계 피드백 큐 스케줄링
🔑 다단계 피드백 큐 스케줄링 (선점형)
CPU 사용 후 우선