패스트캠퍼스

[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 35회차 미션

돌맹이시터 2020. 11. 22. 23:31

 

 

환급미션 35일째...

 

 

 

운영체제 - 프로세스와 스케쥴러의 이해 - 03. 프로세스 상태와 스케쥴러

운영체제 - 프로세스와 스케쥴러의 이해 - 04. 프로세스 상태 기반 스케쥴링 알고리즘 기본

 

 

 

 

- 멀티 프로그래밍과 wait

 

멀티 프로그래밍 : cpu 활용도를 극대화하는 스케쥴링 알고리즘

wait : 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정

 

 

위 그림에서 Combined == Scheduler로 가정,

제일 먼저 A process 가 실행 가능한 상태,

A가 끝나는 시점에 B process가 실행 가능한 상태,

B가 끝나는 시점에 C process가 실행 가능한 상태인데

이를 연달아 실행하게 되는 상태가 cpu의 활용도가 증가하게 되는 것이다.

 

 

 

* 프로세스 상태

 

running state : 현재 cpu의 실행 상태 (싱글코어라면 1개)

ready state : cpu에서 실행 가능 상태 (실행대기상태)

block state : 특정 이벤트 발생 대기 상태 == wait (ex)저장매체 - 파일 읽기,

 

new : 프로세스 생성 중, ready state가 아직 되기 전의 상태 

exit : 시스템 리소스 등을 종료하기 위해 필요한 시간

 

-> 스케쥴링 알고리즘에서 고려해야 하는 각 state

 

 

 

* 프로세스 상태 간 관계

 

 

위의 그림을 참고하여 아래 순서대로 진행된다. (running state에서 시작하는 상황이라고 가정)

 

1. (running -> block state) 특정 이벤트 대기

4. (block -> ready state) 프로세스가 실행 가능한 상태가 된다.

2. (ready -> running state) 스케쥴러가 다른 ready상태의 process를 선택하여 running state로 바꿈

3. (running -> ready state) 스케쥴러가 선택적으로 running state의 프로세서를 ready state로 변경함 

 

 

 

 

 

 

 

 

1. 시작시점에 1,2,3 process 모두 ready state -> process2 block state (가정)

2. 다음 시점에서 process1,3 ready state & process2 block state -> 다음 process 선택

 

 

 

 

일반적으로 아래와 같은 형태의 알고리즘으로 선택하게 된다.

 

 

 

1. 세 개의 queue를 둔다. ( ready state queue/ running state queue / block state queue )

*queue == FIFO(first in first out)

 

2. 큐의 정책에 따라(FIFO, first in first out) 시작 시점에 하나의 프로세스를 가져온다. -> process 1부터 실행

첫 번째 프로세스를 선택한 직후의 시점.

(ready state queue 는 1-2-3 에서 1이 먼저 실행되고 2-3이 남은 상태에서 다음 ready state queue를 나타냄.)

 

3. 스케쥴러가 다음 프로세스를 선택

 

 

4. 알고리즘에 따라 process2가 실행되는데, 다음 시점에 wait 상태가 되기 때문에

running state -> block state queue로 넘어가게 된다.

 

 

5. 알고리즘에 따라 다음으로 process3이 실행됨

 

6. 그 다음 시점에서 process는 다시 실행가능하기 때문에 running -> ready state queue에 들어가게 된다.

 

 

 

7. 다음 ready state에 있던 process1 -> running state queue로 가게 된다.

 

 

 

 

8. 다음 ready state인 process3이 실행되는 시점에 process2의 대기시간이 끝나게 되면서

block state -> ready state queue로 넘어가게 된다.

 

 

 

 

9. process2가 실행되면서 running state queue로 넘어가게 되고,

process3의 대기시간이 아직 끝나지 않은 상태이기 때문에 block state queue에 남게 된다.

 

 

 

 

 

 

 

10. 그 다음 시점에서 process2는 큐에서 없어지게 되고,

process3은 그대로 block state queue에 남아있게 된다.

이 때 cpu는 아무것도 실행되지 않는 상태가 되고, 이를 CPU idle 상태라고 한다.

 

 

11. process3의 대기 상태가 끝날 때까지 block -> ready -> running state queue로 각각 넘어가게 되고

실행 이후에는 큐에서 사라지게 된다.

최종적으로 실행되는 cpu의 상태는 아래와 같다.

 

 

 

 

 

위에서 진행된 예시는

프로세스 상태를 기본으로 한 기본적인 알고리즘을 보여준다.

 

만약 'Queue' 자료구조를 사용한 것이 아니라,

우선순위 정책 또는 최단작업우선(SJF) 스케쥴링 알고리즘을 사용했다면 프로세스 실행순서는 달라질 수 있다.

 

 

 

 

 

 

 

 

올인원 패키지 : 컴퓨터 공학 전공 필수👉https://bit.ly/3i4sCVE