CPU스케줄링 (2)

2022. 11. 14. 22:37cs 상식/운영체제

SJF(Shortest Job First)

 

 

:Burst Time이 짧은 작업 먼저 한다.

 

이런 알고리즘을 만든다 , SJF(Shortest Job First) 만든다" 짧은 작업 먼저" 

문제가 있다, 

  • 어떤 프로세스가 얼마나 실행될지 예측하기 힘들다

 

 

  • Burst Time이 긴 프로세스는 실행이 안 될수 있다.

RR

 

FIFO: 알고리즘은 시분활처리에는 어렵고 일괄처리에 적합하다

SJF: 프로세스의 종료시간을 예측하기 힘들다.

 

 

RR(Round Robin) :가장 단순한 FIFO알고리즘에서 단점을 해결해서 나온것 , 

먼저 들어온 프로세스가 끝나야 다른 프로세스가 시작이 된다는 문제점을 해결하기 위해서 할당시간을 지정하고 

할당 시간이 지나면 강제로 다른 프로세스에게 일정시간 만큼 CPU를 할당한다, 강제로 CPU를 뻇긴 프로세스는 

큐에 가장 뒷부분으로 쫓겨난다.

 

타임슬라이스: 프로세스에게 할당하는 일정 시간 혹은 "타임퀀텀"이라고 불린다.

 

 

Burst Time 

프로세스들은 동시에 큐에 들어왔고 실행순서는 p1 -p2-p3이다.

 

만약 평균 대기시간이 비슷하면! RR이 비효율 적이다 컨텍스트 스위칭 시간이 더 추가되기에 더 느리다 .

 

RR알고리즘은  타임슬라이스에 따라 결과가 달라진다

EX)음악이 5초간 끊긴다.

 

컨텍스트 스위칭이 너무 많이 일어나게 됨으로 타임슬라이스에서 실행되는 프로세스의 처리양보다 

컨텍스트 스위칭 처리하는 양이 더 많아져 배보다 배꼽이 커진다 "오버해드가 크다"라고 한다.

 

=> 최적의 타임 슬라이스를 결정하는 방법은 사용자가 느끼기에 여러 프로세스가 버벅거리지 않고 

동시에 실행하는 것처럼 느껴지면서 오버헤드가 너무 크지 않는 값을 찾아야 한다.

 

 

MLFQ(MultiLevel Feedback Queue)

:오늘날 운영체제에서 가장 많이  쓰이는 CPU 스케줄링 기법이다. 

 

RR의 업그레이드 알고리즘이다.!

 

 

 

프로세스 P1:I/O작업 없이 CPU연산만 하는 프로세스이다.  대부분  CPU로 사용

프로세스 P2:1초 CPU 연산을 하고 10초 동안 I/O작업을 한다 .대부분 I/O 로 사용

 

CPU Bound Process: cpu 사용률과 처리량을 중요하게 생각한다.

I/O Bound Process:  가장중요하게 생각하는 것은 응답 속도이다.. 

 

 

첫번재 상황

 

 

 

 

 

타임슬라이스가 100->1초로 작아질때 한쪽은 손해를 보고 한쪽은 이득을 본다.

타임슬라이스 1초일때  컨텍스트 스위칭을 해서 오버헤드가 생겨 손해이다.

I/O 프로세스는 이득을 본다.

 

 

어떻게 하면 손해를 보지 않는지 해서 나오는게  

MLRQ이다.

작은 크기에 슬라이스를 사용한다.  P1(CPU Bound Process) 같은 프로세스에게는 타임슬라이스를 크게 준다

 

그렇다면 어떻게 CPU Bound Process 와 I/O Bound Process를   구별할까?

cpu를 사옹하는 프로세스가 실행하다가 스스로 cpu를 반납하면 cpu 사용량이 적으니 i/o 일 가능성이 높다

cpu를 스케줄러에 의해 강제로 뺏기는 상황이면 cpu 사용이 많으니 cpu bound Process 확률이 가능성이 높다.

 

우선 순위를 가진 큐를 여러개 준비한다 , 우선순위가 높으면 타임 슬라이스가 작고 

우선순위가 낮으면 타임슬라이스 크기가 커진다.

 

 

 

 

최종적으로는 타임 슬라이스가 무한초에 가깝게 할당이 된다.  FIFO처럼 연속적으로 작업을 마칠수 있다.

 

'cs 상식 > 운영체제' 카테고리의 다른 글

데드락  (0) 2022.11.16
프로세스 동기화  (0) 2022.11.15
CPU스케줄링  (0) 2022.11.14
프로세스와 쓰레드  (0) 2022.11.09
운영체제 들어가기  (0) 2022.11.09