상세 컨텐츠

본문 제목

05.2 프로세스의 스케줄링과 상태 변화, 컨텍스트 스위칭

Programming/Windows System

by RACC8N 2020. 4. 5. 15:25

본문

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

 

CPU는 하나인데, 어떻게 여러 개의 프로그램이 동시에 실행 가능한 것인가?

 

기본적으로 CPU는 한 순간에 하나의 프로그램만 실행 가능하다.

-> 하나의 CPU가 여러 개의 프로세스를 번갈아 가면서 실행한다.(아주 빠른 속도로)

 

스케줄링 : 프로세스의 CPU할당 순서 및 방법을 결정짓는 일

스케줄러 : 스케줄링 알고리즘을 적용해서 실제로 프로세스를 관리하는 운영체제 요소

프로그램이 실행되는 과정에서 많은 시간을 I/O에 할당한다

-> I/O관련 작업은 CPU 연산을 필요로 하지 않는다.

 

프로세스의 상태 변화 

Ready 상태 : 프로세스가 CPU에 의해 실행되기를 희망하는 상태 (스케줄러에 의해 관리됨)

Running 상태 : CPU에 의해 실행되는 상태

Blocked 상태 : 프로세스가 실행되지 않는 상태 (스케줄러에 의해 관리되지 않음)

 

1. S(Start) -> Ready 상태 :

  프로세스는 생성과 동시에 Ready 상태로 들어간다. 

2. Ready 상태 -> Running 상태 : 

  스케줄러는 Ready 상태에 있는 프로세스중 하나를 선택해서 CPU에 의해 실행될 수 있도록 한다.

3. Running 상태 -> Ready 상태 :

  현재 Running 상태에 있는 프로세스보다 우선순위가 높은 프로세스가 실행되어 Ready상태에 있는 경우, 현재 프로세스는 Ready상태로 내려오게 된다. (해야할 일이 남았지만 어쩔수 없이 내려오게 되는 상황)

※ 우선순위가 높은 프로세스가 실행 중일 경우, 우선순위가 낮은 프로세스는 실행되지 않는다. 

4. Running 상태 -> Blocked 상태 :

  실행 중에 있는 프로세스가 I/O관련된 일을 하는 경우 실행을 멈추는 상태(Blocked)로 들어간다.

※ I/O관련 작업은 CPU의 연산을 필요로 하지 않으므로 Ready 상태에 있는 프로세스 중 하나를 대신 실행시키는 것이 CPU를 효율적으로 사용할 수 있기 때문이다.

5. Blocked 상태 -> Ready 상태 :

  I/O작업이 완료된 프로세스는 스케줄러의 선택을 기다리기 위해 Ready 상태로 돌아간다.

※ Ready 상태와 Blocked 상태의 차이점 : 두 상태 모두 프로세스가 실행되지 않는 상태이다. 하지만 Ready상태는 스케줄러에 의해 선택될 수 있고, Blocked상태는 스케줄러에 의해 선택될 수 없는 상태이다.

6. Blocked 상태 -> E(Exit) :

  프로세스를 종료한다.

 

컨텍스트 스위칭 (Context Switching)

"CPU 내에 존재하는 레지스터들은 현재 시행 중에 있는 프로세스 관련 데이터들로 채워진다."

-> 스케줄러에 의해 실행중인 프로세스가 변경되면 CPU 내의 존재하는 레지스터들도 컨텍스트 스위칭에 의해 데이터를 변경한다.

 

'Programming > Windows System' 카테고리의 다른 글

06.1 커널 오브젝트에 대한 이해  (0) 2020.04.05
05.3 프로세스의 생성 (CreateProcess)  (0) 2020.04.05
05.1 프로세스(Process)의 이해  (0) 2020.04.05
00. RISC vs CISC  (0) 2020.03.18
03. WIN32 vs WIN64  (0) 2020.03.18

관련글 더보기

댓글 영역