프로세스의 스케줄링(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 내의 존재하는 레지스터들도 컨텍스트 스위칭에 의해 데이터를 변경한다.
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 |
댓글 영역