CS/운영체제

CPU 스케줄링(CPU) : 프로그램 중 어떤 걸 먼저 실행할지 정하는 방법

나디아 Nadia 2025. 5. 2. 14:16

 

CPU 스케줄링

: 컴퓨터가 여러 프로그램 중 어떤 걸 먼저 실행할지 정하는 방법

  • 프로그램 실행 → 메모리에 프로세스가 생성됨
    → 프로세스 내에는 1개 이상의 쓰레드가 있음
    → 프로세스들은 CPU를 차지하기 위해 운영체제의 명령을 기다림
    → 운영체제는 모든 프로세스에게 CPU를 할당/해제함

    CPU 스케줄링

  • CPU Burst: CPU를 할당받아 실행하는 작업
    I/O Burst:
    입출력 작업

 

 

 

CPU 스케줄링에서 스케줄러(운영체제)가 고려해야 할 사항

  1. 어떤 프로세스에게 CPU 리소스를 줘야 하는가?
    • 메모리에는 수많은 프로세스들이 있는데, 여기서 어떤 프로세스에게 CPU 사용권을 줘야 하는지 고려해야 함
  2. CPU를 할당받은 프로세스가 CPU를 얼마 동안 사용해야 하는가?
    • 오늘날에는 시분할 처리 방식을 사용함
      → 여러 프로세스에게 짧은 시간 동안 돌아가면서 CPU를 할당하는 방식
      • ex) 프로세스 A에게 1초 동안 CPU를 주고, 1초 뒤에 CPU를 뺏어서 프로세스 B에게 1초 동안 주는 방식
  • 위 2가지 사항은 컴퓨터 성능에 큰 영향을 미침

 

 

 

스케줄링 목표

  1. 리소스 사용률 ⬆: CPU 사용률 or I/O 디바이스의 사용률을 높이는 것
  2. 오버헤드 최소화 ⬇: 스케줄링을 위한 계산이 너무 복잡하거나, 컨텍스트 스위칭이 너무 많으면 비효율적이므로 최소화해야 함
  3. 공평성: 모든 프로세스에게 공평하게 CPU가 할당되어야 함
  4. 처리량 ⬆: 같은 시간 내에 더 많은 처리를 할 수 있는 방법을 목표로 함
  5. 대기시간 ⬇: 작업 요청부터 실제 작업 진행 전까지의 대기 시간을 짧게 만드는 것
  6. 응답시간 ⬇: 응답시간이 짧은 것을 목표로 함
    • 대화형 시스템에서는 사용자의 요청에 얼마나 빨리 반응하는지가 중요

 

 

 

스케줄링 목표 간의 상충

  • 위의 목표들을 다 최고로 달성할 수는 없음
    • ex) 처리량을 높이려면 ⬆ → CPU를 하나의 프로세스에 더 오래 할당해야 함
      ↔  응답시간을 줄이려면 ⬇ → 여러 프로세스에 골고루 CPU를 할당해야 함

      처리량과 응답시간의 목표는 조건이 상반되기 때문에 둘을 동시에 달성할 수 없음
  • 이럴 때는 사용자가 사용하는 시스템에 따라 목표를 다르게 설정함
    • ex) 터치스크린 시스템: 빠른 응답이 필요함 ⇒ 응답시간 ⬇
      과학 계산 시스템: 처리량 ⬆
      일반 사용자 시스템: 목표 밸런스 유지