📌 CPU 스케줄링

CPU 스케줄링은 작업을 처리하기 위해 프로세스들에게 CPU를 할당하기 위한 정책을 계획하는 것이다. CPU를 효율적으로 사용하기 위해서는 프로세스들을 잘 배정해야 한다. CPU 스케줄링은 Ready Queue에 있는 프로세스를 대상으로 CPU를 할당하는 순서와 방식을 결정한다.

📌 CPU 스케줄링은 왜 필요할까?

프로세스가 CPU를 점유하여 작업을 수행하는 도중 I/O 또는 Interrupt가 발생하면 일시적으로 프로세스는 CPU를 사용하지 않는데도 CPU를 계속 점유하고 있다. 이러한 상황을 줄여서, CPU를 최대한 활용하면 시스템의 성능 개선을 꾀할 수 있다.
결국 "어떻게 프로세스들이 CPU를 효율적으로 사용하게 할 것인가?"라는 고민에서 CPU 스케줄링이 출발한다고 할 수 있다.

📌 프로세스의 생명 주기

프로세스 실행은 CPU 실행입/출력 대기의 사이클로 구성된다.
프로세스의 실행은 CPU 실행(execution)과 I/O 요청 대기(I/O wait)가 번갈아가며 이루어지는데, 이를 CPU I/O Burst Cycle이라고 한다.

  • 생성(new): 프로세스가 메모리에 올라간 상태
  • 준비(ready): 다른 프로세스가 CPU를 사용하고 있어, 할당을 기다리고 있는 상태
  • 수행(running): 프로세스가 CPU를 점령하여 명령어가 실행되고 있는 상태
  • 대기(waiting): I/O requests나 이벤트가 완료될 때까지 기다리고 있는 상태로, 해당 작업이 완료되면 ready queue로 이동함
  • 종료(terminated): 프로세스의 명령어가 끝까지 진행되었거나 중간에 exit()이 발생하면 프로세스가 종료됨

📌 CPU 스케줄링 방식

CPU 스케줄링은 크게 선점 스케줄링과 비선점 스케줄링으로 구분된다.

선점형 스케줄링: 하나의 프로세스가 CPU를 차지하고 있을 때, 우선 순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식

장점

  • 비교적 응답이 빠르다

단점

  • 처리 시간을 예측하기 힘들다
  • 높은 우선순위 프로세스들이 계속 들어오는 경우 오버헤드가 발생할 수 있다

그래서 선점형 스케줄링은 우선순위가 높은 프로세스를 빠르게 처리해야 할 경우 유용하다.

비선점 스케줄링: 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식

장점

  • 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다
  • 응답 시간을 예측할 수 있다

단점

  • 짧은 작업을 수행하는 프로세스라도 긴 작업이 종료될 때까지 기다려야 할 수도 있다

그래서 비선점형 스케줄링은 처리 시간 편차가 적은 특정 프로세스 환경에 유용하다.

📌 선점/비선점 스케줄링에 속하는 CPU 스케줄링 알고리즘 기법의 종류

<선점 스케줄링 알고리즘>

선점 스케줄링에 속하는 CPU 스케줄링 알고리즘 기법에는 SRT 라운드로빈 다단계 큐 다단계 피드백 큐 스케줄링이 있다.

  • SRT: Shortest Remaining Time 스케줄링으로, 짧은 시간 순서대로 프로세스를 수행한다. 남은 처리 시간이 더 짧은 프로세스가 ready queue에 들어오면 그 프로세스가 바로 CPU를 선점한다.

  • 라운드 로빈 스케줄링: 각 프로세스가 같은 크기의 CPU 시간을 할당받는 스케줄링 방식이다.

  • 다단계 큐 (Multi-level Queue) 스케줄링: Ready Queue를 여러 개 사용하는 스케줄링 방식이다. 각각의 Queue는 자신의 스케줄링 알고리즘을 수행하며, Queue와 Queue 사이에도 우선순위를 부여한다.

  • 다단계 피드백 큐 스케줄링: 다단계 큐와 비슷하나, 프로세스들이 큐를 이동할 수 있다.

<비선점 스케줄링 알고리즘>

비선점 스케줄링에 속하는 CPU 스케줄링 알고리즘 기법에는 HRN SJF 우선순위 기한부 스케줄링이 있다.

  • HRN: Highest Response ration Next 스케줄링으로, 수행시간의 길이와 대기 시간을 모두 고려해 우선 순위를 정하는 스케줄링 방식이다.

  • SJF: Shortest Job First 스케줄링으로, 선점 스케줄링의 SRT와 동일하게 Queue 안에 있는 프로세스 중 수행시간이 짧은 것을 먼저 수행하며, 평균 대기 시간을 감소시킨다.

  • 우선순위 (priority) 스케줄링: 프로세스에게 우선순위를 정적 / 동적으로 부여하여 우선순위가 높은 순서대로 처리한다.

  • 기한부 (deadline) 스케줄링: 작업을 명시된 시간이나 기한 내에 완료하도록 스케줄링한다.

출처

0개의 댓글