CPU 스케줄링

2024. 4. 4. 00:01CS

 지난 글에서는 프로세스와 스레드에 대해 알아보았습니다. CPU 스케줄링은 언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업입니다. 이번에는 CPU 스케줄링의 중요성과 다양한 스케줄링 알고리즘에 대해 알아보겠습니다.

1. CPU 스케줄링의 중요성

 CPU 스케줄링은 시스템의 전반적인 성능에 직접적인 영향을 미치는 핵심적인 역할을 합니다. 효율적인 스케줄링 없이는 시스템 자원이 낭비되고, 사용자 경험이 저하될 수 있습니다. 특히, 멀티태스킹 환경에서는 다양한 프로세스가 동시에 CPU 접근을 요구하므로, 어떤 순서로 요청을 처리할지 결정하는 것이 중요합니다.

2. 스케줄링 기준

CPU 스케줄링을 평가할 때 고려해야 할 주요 기준은 다음과 같습니다.

  • 처리량(Throughput): 단위 시간당 처리할 수 있는 작업의 양
  • 응답 시간(Response Time): 요청을 한 후 첫 번째 응답을 받기까지의 시간
  • 대기 시간(Waiting Time): 실행을 위해 준비 큐에서 대기하는 시간
  • 반환 시간(Turnaround Time): 프로세스가 시작되어 완료될 때까지 걸린 전체 시간
  • CPU 사용률(CPU Utilization): CPU가 작업 처리에 실제로 사용된 시간의 비율. 여기서 높은 CPU 사용률은 시스템이 자원을 효율적으로 사용하고 있다는 의미입니다.

3. 주요 스케줄링 알고리즘

  1. FCFS (First-Come, First-Served)
    • 가장 간단한 형태의 스케줄링으로, 먼저 온 요청을 먼저 처리합니다. 하지만 평균 대기 시간이 길어질 수 있는 단점이 있습니다.
  2. SJF (Shortest Job First)
    • 가장 짧은 시간이 걸리는 작업을 우선적으로 처리합니다. 이론적으로 최소의 평균 대기 시간을 보장하지만, 실행 시간을 예측하기 어렵다는 문제가 있습니다.
  3. 라운드 로빈(Round Robin)
    • 각 프로세스에 동일한 크기의 시간 할당량(TQ)을 주고, 순서대로 CPU 시간을 할당합니다. 시간 할당량의 크기에 따라 시스템의 성능이 달라질 수 있습니다.
  4. 우선순위 스케줄링(Priority Scheduling)
    • 프로세스에 우선순위를 부여하고, 가장 높은 우선순위를 가진 작업부터 처리합니다. 우선순위 결정 방식에 따라 다양하게 구현될 수 있으나, 낮은 우선순위 작업이 지나치게 오래 기다리는 기아 현상이 발생할 수 있습니다.

'CS' 카테고리의 다른 글

비트(bit)란?  (1) 2024.05.01
자바(JAVA) 컬렉션(Collection)  (1) 2024.04.19
[JAVA] Garbage Collection(가비지 컬렉션)  (1) 2024.04.13
메모리의 구조  (0) 2024.04.09
프로세스(Process)와 스레드(Thread)  (0) 2024.04.01