본문 바로가기

Programming/Operating System

운영체제 · 프로세스 스케줄링

프로세스 스케줄링 (Process Scheduling)


정의 : 멀티 프로그래밍 환경에서 사용되는 것으로, 프로세스들에게 자원 할당을 적절히 함으로써 시스템의 성능을 개선하는 것

✓ CPU 이용률을 극대화하여 다수의 프로세스를 처리할 수 있다.






스케줄러의 종류


장기 스케줄러 (Long-term Scheduler)

  • 잡 스케줄러(Job Scheduler)라고도 하며, 디스크에 있는 프로세스들을 메모리로 적재하는 역할을 한다.
  • 즉, 장기 스케줄링은 생성된 프로세스들 중 어떤 프로세스에 메모리를 할당하여 준비 큐(Ready Queue)로 보내는 것이다.
  • Unix, Microsoft Windows 등의 시분할 시스템에는 장기 스케줄러가 없다.


단기 스케줄러 (Short-term Scheduler)

  • CPU 스케줄러(CPU Scheduler)라고도 하며, 준비 상태의 프로세스를 하나 선택하여 CPU에 할당하는 역할을 한다.
  • 즉, 단기 스케줄링은 준비 큐에 있는 프로세스 중 어떤 프로세스를 실행(Running) 시킬지 결정하는 것이다.
  • 장기 스케줄러에 비해 실행 간격이 짧으며, 실행 빈도가 높다.


중기 스케줄러 (Mid-term Scheduler)

  • 메모리에서 프로세스를 제거하여 멀티 프로그래밍의 정도를 완화시키는 역할을 한다.
  • 스와핑 작업을 통해 프로세스 혼합 상태를 개선하거나, 가용 메모리를 확보한다.
  • 스와핑(Swapping) : 메모리에 적재된 프로세스를 디스크로 옮기고(스왑 아웃; Swap out), 디스크에 있는 프로세스를 메모리로 다시 적재하는(스왑 인; Swap in) 작업이다.



[그림 1] 프로세스 상태에 따른 스케줄러