[TIL] # 35 스케쥴러

ddalkigum·2021년 1월 4일
2

TIL

목록 보기
34/50
post-thumbnail
post-custom-banner

스케쥴러

Context Switching이 자주 일어나게 되면 CPU가 일을 하지 못하게되면서
오버헤드가 발생하게 된다

이러한 오버헤드를 줄이기 위해 필요한 것이 운영체제의 스케쥴러 이다

비선점 스케쥴링

어떤 프로세스가 CPU를 점유하고 있다면 작업이 완료될 때까지
다른 프로세스가 CPU를 사용하지 못하게 하는 방식

장점

프로세스가 CPU할당이 끝날때 까지 다른 프로세스가 선점을 할 수 없으므로
Context Swtching이 최소한으로 일어나게 된다

단점

긴급하게 처리되어야 할 프로세스가 늦게 처리되는 경우가 발생한다

FCFS ( First Come First Service )

먼저 Ready Queue에 도착한 순서부터 CPU에 할당될 수 있도록 하는 알고리즘

작업시간을 예측하기 쉽다는 장점이 있지만

처리시간은 긴데 중요하지 않을 작업때문에 처리시간은 짧지만 중요한 작업이
뒤로 밀려나는 경우가 생긴다

이런 상태를 호위상태 ( Convoy Effect ) 라고 한다

SJF ( Shortest Job First )

이름 그대로 처리시간이 짧은 프로세스 순서대로 처리하는 방식이다

모든 방식을 통틀어서 처리 시간이 가장 짧다 = 가장 빠르게 처리가 가능하다

이러한 경우에도 단점은 존재하는데
CPU처리시간이 긴경우 대기시간이 언제까지 될지 모른다
이렇게 되면 무한정으로 기다리게 되는 경우가 생기는데

이를 기아상태 ( Starvation ) 이라고 한다

HRN ( Highest Response Ration Next )

SJF 방식에서 기아상태를 해결하기 위해 만들어진 방식

우선순위를 단순히 처리시간만으로 처리하지 않고, Ready Queue에서 대기한 시간을 고려한다

우선순위 정하는 공식

( 대기시간 / CPU 처리시간 ) / CPU 처리시간

대부분 위의 공식으로 처리하게 된다

이처럼 기다린 시간에 비례해서 우선순위를 높이는 방식을 에이징 ( aging ) 기법이다 한다

HRN 방식의 경우 선점형식에서 처리하게 될경우 Context Swtching이 너무 많이 일어나기 떄문에
비선점일때, 사용하게 된다

여기서 문제점이 발생한다

SJF 방식과 HRN 방식의 경우 대기시간과 처리시간을 기준으로 순서를 정하게 되는데
현실적으로 프로세스마다 CPU 처리시간이 얼마나 걸릴지 알기가 어려워 문제가 사용이 어렵다

우선순위 ( Priority )

우선순위는 높은곳에서 낮은곳으로 향하게 된다

운영체제에서는 우선순위를 숫자로 표현을 하게되는데,
숫자가 낮을 수록 우선순위가 높다

여기서도 에이징 기법이 사용되게 되는데
우선순위가 낮을 경우 앞에 우선순위가 높은 프로세스가 계속 가게되면
무한정 기다리게 되는 기아현상이 발생하기 때문이다

동적 우선순위

특징이 있다면 동적 우선순위의 경우는

  1. 구현방법이 어렵다
  2. 시스템의 반응속도가 빠르다

정적 우선순위

동적 우선순위와는 반대이다

  1. 구현방법이 비교적 쉽다
  2. 시스템의 반응속도가 느리다
profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒
post-custom-banner

0개의 댓글