📌 프로세스 스케줄링이란?
프로세스 스케줄링은 운영체제에서 CPU를 프로세스들에게 효율적으로 배정하는 기술입니다. 여러 개의 프로세스가 실행 대기 상태에 있을 때, CPU를 어떻게 분배할 것인지를 결정하는 과정이 바로 프로세스 스케줄링입니다. 이 스케줄링 방식을 통해 프로세스 처리 효율성과 시스템 성능을 극대화할 수 있습니다.
스케줄링 방식은 크게 선점 스케줄링과 비선점 스케줄링으로 나뉩니다.
📌 선점 스케줄링 vs. 비선점 스케줄링
🔎 선점 스케줄링 (Preemptive Scheduling)
선점 스케줄링은 CPU 사용 중인 프로세스를 강제로 중단하고, 다른 프로세스에게 CPU를 배정할 수 있는 방식입니다.
- 장점: 응답 시간을 줄이고, 긴급한 프로세스를 빠르게 처리할 수 있음.
- 예시: SRT, RR, MLFQ 등.
🔎 비선점 스케줄링 (Non-preemptive Scheduling)
비선점 스케줄링은 프로세스가 CPU를 한 번 점유하면 작업이 끝날 때까지 사용하는 방식입니다.
- 장점: CPU 처리의 예측이 가능하고, 프로세스가 중간에 중단되지 않음.
- 예시: FCFS, SJF, HRN 등.
주요 프로세스 스케줄링을 선점 스케줄링과 비선점 스케줄링으로 나누어 설명하겠습니다.
1️⃣ 선점 스케줄링 (Preemptive Scheduling)
선점 스케줄링은 현재 실행 중인 프로세스를 중단하고, 다른 프로세스가 CPU를 사용할 수 있도록 하는 방식입니다. 주로 긴급한 작업을 먼저 처리해야 할 때 사용됩니다.
- SRT (Shortest Remaining Time)
- 설명: 실행 중인 프로세스의 남은 실행 시간이 더 긴 경우, 남은 실행 시간이 더 짧은 프로세스가 도착하면 실행 중인 프로세스를 중단하고, 새로운 프로세스를 실행합니다.
- 장점: 짧은 작업을 먼저 처리하여 응답 시간을 줄일 수 있습니다.
- 단점: 긴 작업이 자주 중단될 수 있어 비효율적일 수 있습니다.
- RR (Round Robin)
- 설명: 모든 프로세스에 동일한 시간 할당량을 주고, 해당 시간 동안만 실행한 후 다음 프로세스로 전환합니다. 주기적으로 모든 프로세스에게 CPU가 돌아가도록 설계된 방식입니다.
- 장점: 공정하게 자원을 분배하며, 응답 시간이 빠릅니다.
- 단점: 할당 시간이 너무 짧으면 빈번한 문맥 교환으로 인해 오버헤드가 증가할 수 있습니다.
- MFQ (Multi-Level Feedback Queue) 다단계 피드백 큐 스케줄링
- 설명: 프로세스들이 여러 레벨의 우선순위 큐에 배정되며, 각 프로세스가 CPU를 사용할 때마다 우선순위가 변동합니다. 처음엔 높은 우선순위 큐에 있다가, 시간이 지나면 낮은 우선순위 큐로 이동할 수 있습니다.
- 장점: 시간이 지나도 낮은 우선순위 프로세스가 CPU를 받을 수 있어 기아 문제를 해결합니다.
- 단점: 설정이 복잡하고, 우선순위 조정이 필요합니다.
2️⃣ 비선점 스케줄링 (Non-preemptive Scheduling)
비선점 스케줄링은 프로세스가 CPU를 점유하면 작업이 끝날 때까지 다른 프로세스가 CPU를 가로채지 않는 방식입니다. 즉, 한번 CPU를 할당받으면 중단 없이 끝까지 실행됩니다.
- FCFS (First Come First Served)
- 설명: 가장 먼저 도착한 프로세스부터 차례대로 CPU를 할당받아 실행됩니다.
- 장점: 구현이 간단하며, 일괄 처리 시스템에 적합합니다.
- 단점: 먼저 도착한 긴 작업 때문에 뒤에 도착한 짧은 작업들이 오랜 시간 대기해야 하는 대기 시간 증가 문제를 겪을 수 있습니다.
- SJF (Shortest Job First)
- 설명: CPU 사용 시간이 가장 짧은 프로세스부터 우선적으로 실행하는 방식입니다.
- 장점: 평균 대기 시간이 최소화됩니다.
- 단점: 실행 시간이 긴 프로세스가 무한정 대기하는 기아 현상이 발생할 수 있습니다.
- HRN (Highest Response Ratio Next)
- 설명: 대기 시간과 실행 시간을 고려해 응답 비율이 높은 프로세스를 우선 처리하는 방식입니다.
- 응답 비율은 (대기 시간 + 실행 시간) / 실행 시간으로 계산됩니다.
* 실행시간 = 서비스시간 - 장점: SJF의 기아 문제를 보완하며, 공정한 CPU 분배가 가능합니다.
- 단점: 구현이 복잡할 수 있습니다.
2020년 정보처리기사 실기 기출문제
문제
스케줄링 방식에서 HRN(Highest Response ratio Next) 우선순위 계산식을 쓰시오.
답
(대기 시간 + 서비스 시간) / 서비스 시간
* 실행시간 = 서비스시간
해설
HRN(Highest Response-ratio Next) 스케줄링 방식은 대기 시간과 **서비스 시간(실행 시간)**을 기반으로, 응답 비율이 높은 프로세스를 우선 실행하는 방식입니다. 이 알고리즘은 SJF(Shortest Job First)의 단점을 보완하여, 긴 대기 시간을 가진 프로세스도 일정 비율 이상으로 우선순위를 받을 수 있도록 설계되었습니다.
HRN(Highest Response-ratio Next) 스케줄링 알고리즘은 **응답 비율(Response Ratio)**을 계산하여 가장 높은 응답 비율을 가진 프로세스에게 CPU를 할당합니다.
- 대기 시간: 프로세스가 대기 중인 시간.
- 서비스 시간(실행 시간): 프로세스가 CPU에서 실제로 실행되는 데 필요한 시간.
우선순위 계산 공식:
이 식을 보면, 대기 시간이 길어질수록 응답 비율이 커져 우선순위가 높아집니다. 이는 긴 시간 동안 대기하던 프로세스가 계속 대기 상태에 머물지 않도록 CPU 자원을 받을 수 있게 해줍니다.
2024년 2회 정보처리기사 실기 기출문제
문제
아래의 표를 확인하여 SRT 스케줄링의 평균 대기시간을 계산하여 작성하시오.
답
6.5
해설
- SRT는 선점형 스케줄링 방식 중 하나입니다. 각 프로세스의 남은 실행 시간(Remaining Time) 을 비교해서, 가장 남은 시간이 짧은 프로세스를 먼저 실행합니다. 실행 중 더 짧은 작업이 도착하면, 현재 작업을 중단하고 그 작업으로 교체합니다.
- 대기시간이란 CPU를 사용하지 않고 기다린 시간입니다.
- 종료시간(Finish Time): 해당 프로세스가 완전히 끝난 시각
- 도착시간(Arrival Time): 프로세스가 시스템에 도착한 시각
- 실행시간 = 서비스시간(Burst Time): 프로세스가 CPU를 실제로 사용한 총 시간
✅ SRT(Shortest Remaining Time) 스케줄링 시뮬레이션
매 시간마다 현재까지 도착한 프로세스 중에서 "남은 시간이 가장 짧은 프로세스"를 선택해서 실행합니다.
시간 | 실행 중인 프로세스 | 설명 |
0 | A (8→7) | A 도착 |
1 | B (4→3) | B 도착 남은시간 짧아 B 선점 |
2 | B (3→2) | C 도착 남은시간 짧아 B 선점 |
3 | B (2→1) | D 도착 남은시간 짧아 B 선점 |
4 | B (1→0) | 남은시간 짧아 B 선점 B 종료 (종료시간: 4초) |
5 | D (5→4) | 남은시간 짧아 D 선점 |
6 | D (4→3) | 남은시간 짧아 D 선점 |
7 | D (3→2) | 남은시간 짧아 D 선점 |
8 | D (2→1) | 남은시간 짧아 D 선점 |
9 | D (1→0) | 남은시간 짧아 D 선점 D 종료 (종료시간: 9초) |
10 | A (7→6) | 남은시간 짧아 A 선점 |
11 | A (6→5) | 남은시간 짧아 A 선점 |
12 | A (5→4) | 남은시간 짧아 A 선점 |
13 | A (4→3) | 남은시간 짧아 A 선점 |
14 | A (3→2) | 남은시간 짧아 A 선점 |
15 | A (2→1) | 남은시간 짧아 A 선점 |
16 | A (1→0) | 남은시간 짧아 A 선점 A 종료 (종료시간: 16초) |
17 | C (9→8) | 남은시간 짧아 C 선점 |
18 | C (8→7) | 남은시간 짧아 C 선점 |
19 | C (7→6) | 남은시간 짧아 C 선점 |
20 | C (6→5) | 남은시간 짧아 C 선점 |
21 | C (5→4) | 남은시간 짧아 C 선점 |
22 | C (4→3) | 남은시간 짧아 C 선점 |
23 | C (3→2) | 남은시간 짧아 C 선점 |
24 | C (2→1) | 남은시간 짧아 C 선점 |
25 | C (1→0) | 남은시간 짧아 C 선점 C 종료 (종료시간: 25초) |
✅ 평균 대기시간
평균 대기시간 = (9 + 0 + 15 + 2) / 4 = 26 / 4 = 6.5초
- 프로세스 A : 10초-1초 = 9초
- 프로세스 B : 대기시간 없이 바로 실행되어 바로 종료 따라서 0초
- 프로세스 C : 17초 - 2초 = 15초
- 프로세스 D : 5초 - 3초 = 2초
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'코딩일기 > 자격증' 카테고리의 다른 글
[정보처리기사] [ Java ] for 루프를 사용하여 배열 출력 | 2020년 정보처리기사 기출문제 (0) | 2024.09.06 |
---|---|
[정보처리기사] [ C ] 버블 정렬 코드 | 2020년 정보처리기사 기출문제 (0) | 2024.09.06 |
[정보처리기사] 튜플 수 구하기 | SQL : SELECT, DISTINCT, COUNT | 2020년 정보처리기사 실기 기출문제 (0) | 2024.09.06 |
[정보처리기사] 인터페이스 구현 : JSON, XML, AJAX, REST | 정보처리기사 실기 기출 모음 (0) | 2024.09.05 |
[정보처리기사] 프로토콜이란? 프로토콜의 개념과 3가지 기본 요소 | 정보처리기사 실기 기출문제 (1) | 2024.09.05 |