운영체제/프로세스 관리

[운영체제] CPU가 똑똑해지는 법! FCFS부터 Round Robin까지 쉽게 배우는 스케줄링 - 코드카인 티스토리

CodeCaine Explorer 2024. 12. 10. 12:30
728x90
반응형
SMALL

안녕하세요😊 코드카인 여러분!

컴퓨터 성능의 핵심 중 하나인 CPU 스케줄링 알고리즘에 대해 이야기해볼게요. 이 알고리즘은 마치 다양한 음식을 조리하는 요리사가 최적의 순서로 재료를 사용해 요리를 완성하는 과정과 비슷하답니다. 그럼, 함께 CPU 스케줄링 세계로 떠나볼까요?


CPU 스케줄링이란 무엇인가요? 🍳

CPU 스케줄링은 운영 체제가 여러 프로세스(작업) 중 어떤 작업을 CPU에 할당할지 결정하는 과정이에요. 컴퓨터는 한 번에 많은 작업을 처리해야 하기 때문에, 효율적으로 CPU를 사용하는 것이 중요해요.

예시 비유:
여러 손님이 식당에 와서 각각 다른 요리를 주문했어요. 요리사가 어떤 요리를 먼저 만들지 결정해야 하듯, 운영 체제도 프로세스의 순서를 정하는 스케줄링 알고리즘을 사용해요.


주요 CPU 스케줄링 알고리즘 🌟

1. FCFS (First Come, First Serve)

가장 단순한 방식으로, 먼저 도착한 작업을 먼저 처리합니다.

  • 비유: 줄을 선 손님을 순서대로 받는 식당.
  • 특징:
    • 쉬운 구현
    • 그러나, 기다림 시간이 길어질 수 있음(대기열이 길어질 경우).
// FCFS 예제 코드
int[] arrivalTime = {0, 2, 4};
int[] burstTime = {3, 5, 2};
int n = arrivalTime.length;
int[] waitTime = new int[n];

for (int i = 1; i < n; i++) {
    waitTime[i] = waitTime[i - 1] + burstTime[i - 1];
}
System.out.println(Arrays.toString(waitTime)); // [0, 3, 8]

2. SJF (Shortest Job First)

가장 짧은 실행 시간을 가진 작업을 우선 처리합니다.

  • 비유: 조리 시간이 짧은 요리를 먼저 만드는 요리사.
  • 특징:
    • 평균 대기 시간을 최소화.
    • 그러나, 긴 작업이 계속 대기할 가능성 있음(스타베이션).

3. Round Robin (RR)

모든 작업에 동등한 시간을 할당해 순환 처리합니다.

  • 비유: 각 손님에게 동일한 요리 시간을 주는 셰프.
  • 특징:
    • 공정함 강조.
    • 작업 수가 많으면 오버헤드 발생.

4. Priority Scheduling

작업마다 우선순위를 정해, 우선순위가 높은 작업부터 처리합니다.

  • 비유: VIP 손님을 먼저 응대하는 식당.
  • 특징:
    • 중요 작업 우선 처리.
    • 그러나 낮은 우선순위 작업이 무한 대기 가능(스타베이션).
// Priority Scheduling 예제 코드
class Process {
    int id, priority, burstTime;
    Process(int id, int priority, int burstTime) {
        this.id = id;
        this.priority = priority;
        this.burstTime = burstTime;
    }
}

List<Process> processes = Arrays.asList(
    new Process(1, 3, 5),
    new Process(2, 1, 3),
    new Process(3, 2, 2)
);

processes.sort(Comparator.comparingInt(p -> p.priority));
processes.forEach(p -> System.out.println("Process " + p.id + " with Priority " + p.priority));

알고리즘 비교와 선택 💡

CPU 스케줄링 알고리즘을 선택할 때는 아래 요소를 고려해야 해요:

  1. 대기 시간(WT): 작업이 대기열에서 기다린 시간.
  2. 응답 시간(RT): 첫 실행까지 걸린 시간.
  3. CPU 이용률: CPU가 작업에 사용된 비율.

😊 마무리하며..

CPU 스케줄링은 컴퓨터 성능 최적화의 핵심이에요. 요리사처럼 상황에 맞는 알고리즘을 선택해 최적의 성능을 내도록 노력해보세요. 코드카인 여러분의 스케줄링 지식이 한 단계 더 업그레이드되길 응원할게요! 🚀

728x90
반응형
SMALL