728x90
반응형
SMALL
CPU 스케줄링 알고리즘 (예: FCFS, SJF, Round Robin)
CPU 스케줄링 알고리즘은 컴퓨터의 CPU(중앙처리장치)가 여러 작업(프로세스)을 처리할 때 어떤 순서로 처리할지를 결정하는 방법입니다. 이 방법들은 시스템의 응답성을 높이고, 효율적으로 CPU를 사용할 수 있게 도와줍니다.
1. FCFS (First-Come, First-Served)
- 정의: 먼저 도착한 작업부터 순서대로 처리하는 방법입니다. 마치 줄을 서서 기다리는 것처럼, 작업들이 도착한 순서대로 처리됩니다.
- 쉽게 말하면: 식당에서 사람들이 줄을 서서 주문을 기다리는 것과 같아요. 줄 맨 앞에 있는 사람이 먼저 주문을 하고, 뒤에 있는 사람은 앞사람이 끝나길 기다려야 해요.
- 특징:
- 비선점형(Non-preemptive)
- 쉽게 말하면: 앞사람이 주문을 다 할 때까지 다른 사람이 끼어들 수 없어요.
- : 한 번 CPU가 작업을 시작하면, 그 작업이 끝날 때까지 다른 작업으로 교체되지 않습니다.
- 구현이 간단하지만, 모든 작업이 오래 걸리는 작업을 기다려야 할 수 있습니다. 이를 대기 시간이 길다고 합니다.
- 비선점형(Non-preemptive)
- 장점:
- 구현이 매우 간단하고, 관리하기 쉽습니다.
- 특정 상황에서는 공정하게 느껴질 수 있습니다. (먼저 온 순서대로 처리하니까요)
- 단점:
- 대기 시간이 길어질 수 있습니다. 특히, 앞쪽에 긴 작업이 있을 때, 뒤쪽의 작은 작업들이 많이 기다려야 합니다.
- 쉽게 말하면: 앞사람이 메뉴를 길게 고르면, 뒤에서 기다리는 사람들은 오래 기다려야 해요.
- 대기 시간이 길어질 수 있습니다. 특히, 앞쪽에 긴 작업이 있을 때, 뒤쪽의 작은 작업들이 많이 기다려야 합니다.
- 예시:
- 작업 도착 순서: A(3초), B(5초), C(2초)
- 실행 순서: A → B → C
2. SJF (Shortest Job First)
- 정의: 작업 중에서 가장 짧은 실행 시간을 가진 작업을 먼저 처리하는 방법입니다.
- 쉽게 말하면: 식당에서 주문을 받을 때, 조리 시간이 짧은 메뉴부터 먼저 만드는 것과 비슷해요. 빨리 끝낼 수 있는 일을 먼저 처리하는 거죠.
- 특징:
- 비선점형(Non-preemptive)과 선점형(Preemptive) 모두 가능
- 쉽게 말하면: 짧은 질문은 바로 답해주고, 긴 질문은 나중에 답하는 것과 비슷해요.
- 비선점형은 시작한 작업을 끝까지 처리하는 것이고, 선점형은 더 짧은 작업이 들어오면 현재 작업을 멈추고 그 짧은 작업부터 처리하는 방식입니다.
- 짧은 작업이 먼저 처리되므로, 평균 대기 시간을 줄일 수 있습니다.
- 비선점형(Non-preemptive)과 선점형(Preemptive) 모두 가능
- 장점:
- 평균 대기 시간이 짧아져서 효율적인 처리가 가능합니다.
- 쉽게 말하면: 간단한 일부터 처리하면 전체적으로 더 빨리 끝낼 수 있어요.
- 긴 작업이 나중에 처리되므로, 작은 작업들이 빠르게 끝날 수 있습니다.
- 평균 대기 시간이 짧아져서 효율적인 처리가 가능합니다.
- 단점:
- 기아 상태(Starvation)
- 쉽게 말하면: 계속 짧은 질문만 먼저 답해주면, 긴 질문은 영영 답을 못 받을 수 있어요.
- 발생 가능: 짧은 작업들이 계속 들어오면, 긴 작업은 계속 기다려야 할 수 있습니다.
- 작업의 실행 시간을 미리 알기 어려운 경우에는 사용하기 어렵습니다.
- 기아 상태(Starvation)
- 예시:
- 작업 실행 시간: A(3초), B(5초), C(2초)
- 실행 순서: C → A → B
3. Round Robin (RR)
- 정의: 각 작업에게 시간 할당량(Time Quantum)을 정해 주고, 그 시간만큼만 CPU를 사용하게 한 후, 다른 작업에게 기회를 주는 방식입니다. 모든 작업이 순서대로 시간을 나눠가지는 방식입니다.
- 쉽게 말하면: 식당에서 한 명에게만 10분 동안 주문할 기회를 주고, 시간이 지나면 다음 사람에게 기회를 주는 것과 비슷해요. 시간이 다 되면 뒤로 가서 다시 줄을 서야 해요.
- 특징:
- 선점형(Preemptive)
- 쉽게 말하면: 한 사람이 주문할 때 시간이 다 되면, 완전히 주문을 끝내지 않았더라도 다음 사람에게 기회를 줘요.
- 주어진 시간 할당량이 지나면, 작업이 끝나지 않았더라도 강제로 CPU를 다른 작업에게 넘깁니다.
- 시간 할당량이 너무 크면 FCFS처럼 작동하고, 너무 작으면 자주 전환해서 오히려 효율이 떨어질 수 있습니다.
- 선점형(Preemptive)
- 장점:
- 응답성이 좋아집니다. 모든 작업이 조금씩이라도 CPU를 사용할 수 있기 때문에, 대기 시간이 줄어듭니다.
- 쉽게 말하면: 질문이 길어도 잠시 답을 듣고, 다시 기회를 기다릴 수 있어요.
- 공정함: 모든 작업에게 균등한 기회를 주기 때문에, 특정 작업이 오랫동안 기다리지 않습니다.
- 응답성이 좋아집니다. 모든 작업이 조금씩이라도 CPU를 사용할 수 있기 때문에, 대기 시간이 줄어듭니다.
- 단점:
- 시간 할당량을 잘못 설정하면 성능이 떨어질 수 있습니다.
- 쉽게 말하면: 한 사람에게 너무 많은 시간을 주면 뒤에 있는 사람들이 많이 기다리게 되고, 너무 적은 시간을 주면 질문에 답을 다 못할 수 있어요.
- 오버헤드(Overhead): 자주 작업이 전환되기 때문에, 작업 전환에 따른 오버헤드가 발생할 수 있습니다.
- 시간 할당량을 잘못 설정하면 성능이 떨어질 수 있습니다.
- 예시:
- 시간 할당량: 2초
- 작업 실행 시간: A(4초), B(5초), C(3초)
- 실행 순서:
A(2초) → B(2초) → C(2초) → A(2초 남음) → B(3초 남음) → C(1초 남음) → A 완료 → B(3초 남음) → C 완료 → B 완료
스케줄링 알고리즘의 비교
알고리즘 | 설명 | 장점 | 단점 | 적합한 경우 |
---|---|---|---|---|
FCFS | 도착 순서대로 처리 | 구현이 간단 | 긴 작업이 있으면 대기 시간 증가 | 작은 시스템이나 간단한 처리에 적합 |
SJF | 짧은 작업을 먼저 처리 | 평균 대기 시간 감소 | 긴 작업이 기다리게 될 수 있음 | 작업 시간이 예측 가능한 경우 |
Round Robin | 일정한 시간 동안 순환 처리 | 응답성 향상, 공정함 | 시간 할당량 설정이 중요 | 사용자 인터페이스가 중요하거나, 다중 사용자 시스템 |
쉽게 요약
- FCFS: 먼저 온 사람이 먼저 처리됩니다. 줄 서기 같은 느낌이에요.
- SJF: 짧은 작업부터 먼저 처리됩니다. 간단한 일부터 끝내는 전략이죠.
- Round Robin: 모든 작업에게 정해진 시간만큼 차례로 기회를 줍니다. 놀이공원에서 타임 제한이 있는 놀이기구 같은 방식이에요.
2024.10.29 - [네트워크] - 로드 밸런싱(Load Balancing)이란? : 쉬운설명
2024.12.10 - [네트워크] - 로드 밸런싱의 주요 기술 : 쉬운설명
반응형
SMALL
'운영체제' 카테고리의 다른 글
프로세스의 주요 구성 요소 : 쉬운 설명 (0) | 2024.12.12 |
---|---|
효율적인 프로세스 상태 관리 방법: 쉬운 설명 (1) | 2024.12.10 |
프로세스의 네 가지 상태 : 쉬운설명 (1) | 2024.12.10 |
프로세스와 스레드의 차이 : 쉬운 설명 (0) | 2024.12.10 |
프로세스 상태가 PCB와 문맥 교환에 미치는 영향 (0) | 2024.12.10 |