패스트캠퍼스

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

돌맹이시터 2020. 11. 23. 23:51

 

 

환급미션 36일째...

 

 

 

 

 

운영체제 - 프로세스와 스케쥴러의 이해 - 05. 선점형과 비선점형 스케쥴러

운영체제 - 프로세스와 스케쥴러의 이해 - 06. 스케쥴링 알고리즘 조합

 

 

 

 

- 선점형과 비선점형 스케쥴러

 

 

*선점형 스케쥴러 (preemptive scheduling)

 

비선점형 스케쥴러에 비해 개선됨

하나의 프로세스가 다른 프로세스 대신에 프로세서(cpu)를 차지할 수 있음

프로세서 running 중에 스케쥴러가 중단시키고, 다른 프로세스로 교체 가능

 

 

 

 

 

*비선점형 스케쥴러 (non-preemptive scheduling)

하나의 프로세스가 끝나지 않으면 다른 프로세스는 cpu를 사용할 수 없음

프로세스가 자발적으로 blocking 상태로 들어가거나,

실행이 끝났을 때만(end) 다른 프로세스로 교체 가능

 

 

 

 

 

* 선점형 / 비선점형 스케쥴러 비교 예시

 

 

( 비선점형 )

 

1. 첫 번째 프로세스 실행 시, 비선점형 스케쥴러에 의해서는 실행이 끝났을 때만 다른 프로세스로 교체 가능하기 때문에

아래 예시에서 프로세스1이 끝까지 실행된다.

 

 

 

2. 프로세스2 자체적으로 wait 상태가 되기 때문에 process 2 -> block state로 가게 된다.

 

 

 

3. 다음 ready state queue 에 있는 process3이 실행된다.

마찬가지로 자체적으로 wait 상태가 될 때까지 실행되고, block state queue에 들어가게 된다.

 

 

 

 

 

4. 아직 process2의 wait 상태이기 때문에, 아무것도 실행되지 않다가 process2가 재실행되게 된다.

 

 

 

5. 마지막으로 남은 process3이 실행되고, 종료된다.

 

 

 

 

 

( 선점형 )

-> 2초마다 스케쥴러가 실행되는 상황을 가정

 

 

 

1. 2초간 ready state queue에 먼저 들어온 process 1 실행하고 스케쥴러가 작동됨

 

 

 

2. 스케쥴러에 의해 강제적으로 다음 ready state queue에 있는 프로세스2가 실행되는데,

process2는 자체적으로 wait 상태에 들어가므로 다음 ready state queue에 있는 프로세스3이 연이어 실행된다.

 

 

 

 

 

3. 스케쥴러에 의해 다음 프로세스 (프로세스1) 실행된다.

프로세스 1이 종료되면서 다음 ready state queue에 있는 프로세스3이 실행된다.

 

 

 

 

4. process 3이 자체적으로 wait 상태가 되기 때문에 다음 프로세스가 실행된다.

이 때 process1는 종료된 상태이기 때문에 process2가 실행되게 된다.

 

 

 

 

5. process2는 종료되었고, 

process3은 아직 wait 상태이기 때문에

스케쥴러가 동작하더라도 실행할 프로세스가 없게 되고 (idle) 다음 시점에서 process3이 실행된다.

 

 

 

 

 

 

=>

비선점형 스케쥴러에서는

선행 프로세스의 실행시간이 길어지면 나머지 프로세스에 대해 응답시간이 길어질 수 있는 반면,

 

선점형 스케쥴러에서는

시분할 방식에 따라 어느 시점에서 바로 다음 프로세스를 실행할 수 있기 때문에 응답시간이 상대적으로 짧아질 수 있다.

 

 

 

 

 

 

 

- 스케쥴러 구분 (스케쥴링 정책, policy)

 

•FIFO(FCFS), SJF(shortest job first), priority-based는 어떤 프로세스를 먼저 실행시킬지에 대한 알고리즘

-> 비선점형 스케쥴러에 가깝다.

 

•RoundRobin은 시분할 시스템을 위한 기본 알고리즘 

-> 선점형 스케쥴러

 

 

 

다양한 방식으로 알고리즘을 조합해서 사용할 수 있다.

 

 

 

* 예시

 

•2초 단위로 스케쥴러가 실행되는 방식 가정

•프로세스 상태 고려

•정적 우선순위 기반

•선점형 스케쥴러

 

-> 위의 상황을 가정한 예시이다.

 

 

 

 

1. 우선순위 기반이긴 하지만,

스케쥴러가 2초단위로 실행되는 상황이기 때문에, 두 번째로 실행되는 프로세스는 process3이 된다.

 

 

 

2. 스케쥴러가 동작하는 시점에서 ready state queue에 들어있는 프로세스를 비교했을 때

우선순위 기반이기 때문에process1이 먼저 실행된다.

또한 자체적으로 wait 상태로 들어가기 때문에 다음 ready state에 있는 process2가 연이어 실행된다.

 

 

 

 

3. 다음 스케쥴러가 동작되는 시점에서는 ready state queue에 있는 프로세스가 3가지가 된다.

우선순위를 고려하여 프로세스를 실행하면 다음과 같다.

 

 

 

 

4. 다음 스케쥴러 동작될 때 ready state queue를 비교했을 때 실행하면 다음과 같다.

 

 

 

 

 

5. process 1,3은 종료가 되었고,

남아있는 process2도 대기시간이 끝난 상태이기 때문에 

마지막으로 실행된다.

 

 

 

=>

가령, process1이 입/출력 (쉘), process2,3이 파일을 읽어오면 그런 프로세스라고 가정했을 때

응답시간이 짧아지면서 사용자가 원하는대로 반응을 한다고 느낄 수 있다.          

 

 

 

 

* 게임을 할 때, 키보드/마우스가 렉이 걸린다고 느껴지는 상황(툭툭 끊긴다)일 때

스케쥴링 알고리즘이 개선되어야 한다고 생각해볼 수도 있다.

 

 

 

* 리눅스 스케쥴러 : O(1), CFS와 같이 다양한 방식으로 변경 시도 중

인터렉티브 (쉘), I/O, CPU 중심 프로세스 등

프로세스의 타입을 알고 있으면, 타입에 맞춰 우선순위를 매긴다던지,

여러가지 방안을 통해 스케쥴링 알고리즘을 최적화시킬 수 있게 된다.

 

 

 

 

 

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