운영체제 OS

[OS/운영체제] Process Scheduling 프로세스 스케줄링

프로세스- 프로그램이 실행된 것 (효율적 관리가 필요)

 

프로그램은 디스크에 있는 수동적인 성격, 프로세스는 능동적인 성격을 가집니다.

즉, 프로그램은 executable file이 메모리에 load되면(올라오는순간!) 프로세스가 됩니다. 

 

프로세스 상태 Process State

new: 프로세스가 created(생성) 되었음

running: Instructions가 executed(실행)중임

waiting: 프로세스가 어떤 event(이벤트) 발생을 대기중

ready: 프로세스가 processor(프로세서)에게 일을 할당 받기를 대기중

terminated: 프로세스가 execution(실행)을 마무리함

CPU switch from Process to Process

Process Scheduling 프로세스 스케줄링

OS의 중요기능은 한정된 자원을 프로세스에 효율적으로 분배하는 겁니다.

그리고 위에 언급했듯이, 프로그램은 메모리에 올라오는 순간! 프로세스가 됩니다.

 

그래서 OS는, CPU(하드웨어) 효율을 높이기 위해서, CPU위에 올라가는 프로세스들을 time sharing하며 switch합니다

 

Process scheduler가 CPU위의 다음 실행하는 프로세스를 선택합니다.

Scheduling Queue는 프로세스들로 이루어졌고, Job queue, Ready queue, Device queue로 이루어졌습니다.

새로운 프로세스는 초기에 ready queue에 놓인 후, 실행을 위해 선택(dispatch)될 떄까지 ready queue에서 기다립니다.

 

일단 프로세스에게 CPU가 할당되면, 아래 event 중 하나가 발생하기 전까진 그 해당 프로세스는 그 CPU에서 실행됩니다.

-프로세스가 입출력 요청

-프로세스가 새 자식 프로세스 생성

-프로세스가 인터럽트 발생을 기다림

-인터럽트 또는 할당시간간격 만료.

이 중 하나의 event 발생시 프로세스는 코어에서 준비 큐에 돌아갈 수 있습니다.

 

스케줄러

-Short-term scheduler (or CPU scheduler) : 어떤 프로세스가 다음에 실행되고 CPU를 할당하는지 결정

"CPU scheduling"은 모두 이 단기 스케줄링을 뜻합니다. 일반적으로 부르는 프로세스 스케줄링이 여기에 해당해요.

-Long-term scheduler (or job scheduler) : 어떤 작업을 커널에 등록해 프로세스로 만들어줄 것인가. ready queue에 들어갈지 결정합니다.  multiprogramming 정도를 조절하는 역할입니다. 

-Medium-term scheduler : multiple programming 정도가 줄어야 한다면 추가될 수 있음. 보류 상태의 프로세스들 중에서 어느 프로세스에게 메모리를 할당해 줄 것인가를 결정합니다. (위에 프로세스의 상태 State 참고)