CS 상식 - 운영체제

[CS 상식 - 네트워크] CPU 스케줄링

beginner-in-coding 2025. 2. 14. 17:55

01. CPU 스케줄링 (CPU scheduling)

  • 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 분배하는 것
  • 컴퓨터의 성능과 직결

02. 프로세스 우선순위

  • 프로세스마다 우선순위가 다름
  • 우선순위가 높음: 먼저 수행해야 하는 중요한 업무
    • 대표적: 입출력 작업
  • 집중 프로세스
    • 입출력 집중 프로세스 (I/O bound process): 입출력 버스트가 많은 프로세스
      • 입출력이 많은 프로세스
      • 예시: 비디오 재생, 디스크 백업 작업
      • 실행 상태 시간  < 입출력을 위한 대기 상태 시간
    • CPU 집중 프로세스 (CPU bound process): CPU 버스트가 많은 프로세스
      • CPU 작업이 많은 프로세스
      • 예시: 복잡한 수학 연산, 컴파일, 그래픽 처리 작업 담당
      • 대기 상태 시간 < 실행 상태 시간
    • 버스트
      • CPU 버스트 (CPU burst): CPU를 이용하는 작업
      • 입출력 버스트 (I/O burst): 입출력을 이용하는 작업
      • 프로세스는 일반적으로 CPU 버스트와 입출력 버스트를 반복하며 실행
  • 입출력 집중 프로세스가 CPU 집중 프로세스보다 우선순위되는 이유
    • 입출력 집중 프로세스를 가능한 빨리 실행시켜 입출력 장치를 끊임없이 작동시키고, 그다음 CPU 집중 프로세스를 집중적으로 CPU를 할당하는 것이 더 효율적임
    • 입출력 장치가 입출력 작업을 완료하기 전까지는 입출력 집중 프로세스는 대기 상태가 될 예정이기 때문에 먼저 처리 후 다른 프로세스가 CPU를 사용할 수 있도록 하는 것

03. 스케줄링 큐

  • CPU가 모든 프로세스의 PCB를 찾는 것은 비효율적
  • 운영 체제는 CPU를 사용할 프로세스를 큐 (Queue)에서 관리
    • Queue 자료구조는 FIFO (선입선출)이지만, 스케줄링에서는 반드시 FIFO일 필요는 없음
  • 운영체제는 세 개의 Queue로 프로세스를 줄세임
    • CPU를 사용하는 프로세스
    • 메모리로 적재되고 싶은 (새로 생성) 프로세스
    • 특정 입출력을 이용하고 싳은 프로세스
  • 큐의 종류
    • 준비 큐 (Ready Queue): CPU를 이용하고 싶은 프로세스들이 서는 줄
    • 대기 큐 (Waiting Queue): 입출력 장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
  • 큐에서 순서대로 프로세스를 하나씩 꺼내어 실행하지만, 그 중 우선순위가 높은 프로세스를 먼저 실행
  • 대기 큐: 같은 장치를 요구한 프로세스끼리 대기 큐에서 기다림

04. 선점형과 비선점형 

  • 선점형 스케줄링 (preemptive scheduling)
    • 프로세스가 CPU(자원)을 사용하고 있더라도 운영체제가 자원을 강제로 뺏어 다른 프로세스에게 할당해줄 수 있는 것
    • 자원 사용을 독점할 수 없음
  • 비선점 스케줄링 (non-preemptive scheduling)
    • 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까지 다른 프로세스가 끼어들 수 없음
    • 자원을 독점할 수 있음
    • 사용하고 있는 프로세스의 사용이 모두 끝날 때까지 기다려야함
  • 대부분의 운영체제: 선점형 스케줄링
  • 각각의 장단점
    • 선점형 스케줄링
      • 장점
        • 더 급한 프로세스가 언제든 끼어들어 사용할 수 있는 스케줄링 방식
        • 한 프로세스의 자원 독점을 막음
        • 프로세스들이 골고루 자원을 사용할 수 있게함
      • 단점
        • 문맥 교환 과정에서 오버헤드가 발생할 수 있음
    • 비선점형 스케줄링
      • 장점
        • 문맥 교환의 횟수가 적음 → 문맥교환에서 발생하는 오버헤드가 적음
      • 단점
        • 하나의 프로세스가 자원을 사용중이라면 당장 사용해야함에도 기다려야함