프로세스 스케줄링(Process scheduling)
본문 바로가기
Computer Science/Operating System

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

by 조훈이 2022. 10. 27.

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


  정의 

  CPU의 사용률을 최대화 시키기 위한 멀티 프로그래밍의 수단이다. 모든 프로세스들을 동시에 실행하기 위한 작업이다.


  설명 

  실제로는 한 CPU에선 한 프로세스만 실행이 가능하지만, 프로세스들에 해당되는 CPU 코어를 계속해서 신속하게 바꿔줌으로써 (Time sharing) 사용자의 입장에선 모든 프로세스가 계속해서 실행되는 것 처럼 보이게 한다.

 [Time sharing] 

  짧은 간격으로 CPU에 각 프로세스를 할당하여 사용자의 입장에선 마치 실행되고 있는 프로세스들이 모두 동시에 동작하고 있는 것 처럼 만드는 것 이다.

 

  이러한 Process Scheduling을 위한 Queue는 3가지가 존재한다.

 

* Job Queue 

  - 현재 시스템 내에 있는 모든 프로세스들의 집합이다.

 

* Ready Queue 

  - 한 메모리 내에서 CPU에서의 실행을 기다리는 프로세스들의 집합이다. Queue 답게 FIFO(First in First out)으로 진행된다.

 

* Device Queue (Waiting Queue) 

  - Device Queue는 Device가 여러개 이기 때문에 여러개가 존재할 수 있다. I/O나 interrupt 를 기다리는 프로세스들이 존재하는 큐이다.

 

 

  위의 Queue들을 관리하는 데에 스케줄러(Scheduler)가 관여한다. Scheduler는 크게 세 가지가 있다.

 

* 장기 스케줄러 (Long term scheduler)

  - 어떠한 프로세스를 Ready Queue에 넣을 것인지 결정하는 Scheduler 이다. 물리 메모리(Physical Memory)의 공간이 한정적이기 때문에 실행되는 스케줄러 이다. 하지만 요새는 가상 메모리(Virtual Memory)가 쓰이기 때문에 물리 메모리의 용량 문제는 없다. 그래서 요새는 쓰이지 않는 스케줄러이다.

 

* 중기 스케줄러 (Medium term shceduler)

  - 너무 많은 프로세스에게 물리 메모리(Phsical Memory)를 할당한 경우 여유 공간을 마련하기 위해 프로세스를 통째로 메모리에서 디스크로 쫓아낸다.  쫓아진 프로세스는 Suspended 상태라고 불리우며 전부 Disk에 존재하게 된다. 중기 스케줄러 또한 요새 쓰이는 가상 메모리(Virtual Memory) 덕분에 쓰이지 않는 스케줄러이다.

 

* 단기 스케줄러 (Short term scheduler)

  - CPU와 메모리 사이의 스케줄링을 담당한다. 현재 Ready Queue에 존재하는 프로세스들 중 스케줄링 알고리즘에 따라 어떠한 프로세스를 Running 시킬지 결정하게 된다. 보통 단기 스케줄러를 CPU 스케줄러라고 한다. 단기 스케줄러는 크게 선점형/비선점형 으로 나뉜다.

 

  • 선점형 : 한 프로세스가 CPU를 할당 받아서 실행할 수 있을 때 중지시키고 다른 프로세스를 CPU에 할당할 수 있다.
  • 비선점형 : 이미 사용중인 프로세스를 빼지 못하고 끝날 때 까지 실행해야 한다.

 

  단기 스케줄러의 종류는 다양하며, 스케줄러들이 선점형 특성인지 비선점형 특성인지 아니면 선점형/비선점형 특성을 다 갖고있는지 다양하다.

 

 [종류]

  1. FCFS(First-come First-served)
  2. SJF(Shortest Job First)
  3. Priority Scheduling
  4. RR(Round-Robin)

 

   CPU가 어떤 프로세스를 Running할지 정한다는건, Running 하고있던 프로세스를 잠시 일시정지 하고 다른 프로세스를 Running한다는 의미이다. CPU가 처리하고자 하는 프로세스를 변경하는 것을 문맥 교환 (Context Switching) 이라고 한다.

 

문맥 교환 (Context Switching)

  문맥교 교환을 할 때 각 프로세스들이 어디까지 실행이 됐는지에 대한 정보를 저장해야 한다. 그러한 정보는 PCB(Process Control Block) 에 저장이 된다.

 

문맥 교환 링크 : //작성중...


References

* [운영체제] 프로세스 스케줄러(단기,중기,장기) — 박연호의 개발 블로그 (tistory.com)

 

728x90

댓글