[운영체제] 프로세스 스케줄링

2017. 3. 5. 20:079급 공무원/컴퓨터 일반

CPU및 자원을

프로세스에게

적절하게 할당하는

작업


# 스케줄링 종류

 > 장기 스케줄링 : 어느 작업을 개시할 것인가? (수행시간이 가장 길다)

 > 중기 스케줄링 : 형성된 프로세스들 또는 프로세스 그룹에서 어느 것을 활성화 시키고 보류할 것인가?

 > 단기 스케줄링 : 대기 리스트에 있는 프로세스 중 어떤 것에 프로세서를 할당할 것인가?


# 스케줄링 방법

 > 비선점형 스케줄링 : 프로세스가 cpu를 할당 받으면, 작업이 끝나야 돌려줌


* FCFS(First Come First service) > 먼저 왔으니까 먼저 써

 : 프로세스가 도착한 순서대로 cpu할당


* SJF(Shortest Job First) > 자, 다음은 누가 제일 빨리 끝낼 수 있지?

 : cpu를 사용하는 시간(실행시간)이 가장 짧은 프로세스에 먼저 cpu할당

 : 실행시간이 짧은 프로세스가 추가될 경우,

   실행시간이 긴 프로세스는 cpu를 할당받지 못함(기아현상, starvation)


* HRN(Highest Response next) > 먼저 왔는데 아직도 cpu를 못 썼어?

 : cpu 사용시간과 더불어 대기시간을 고려하여 cpu할당

: 우선순위(값이 클 수록 빠름) = (대기시간 + 실행시간) / 실행시간

 : SJF의 기아 문제를 해결하기 위한 방법


 > 선점형 스케줄링 : 한 시점에 우선순위가 가장 높은 프로세스가 cpu를 강탈해감


* RR(Round Robin) > 시간 끝났어 뒤로 가

  : 프로세스 도착 순서대로 CPU를 할당하지만, 정해진 시간만큼 사용하고 나면 대기 큐로 돌아간다

   (FCFS의 선점형 버전, 공평함)


* SRT(Shortest Remaining Time) > 얘가 금방 쓰고 준대

  : 실행중인 프로세스를 포함하여 실행시간이 가장 짧은 프로세스에게 cpu할당

   (SJF의 선점형 버전)

  : 모든 프로세스의 남은 시간을 체크해야하므로 오버헤드 증가


* MQ(Multi-level Queue) > 이 작업이 빨리 끝나, 다른 작업은 이따가 하자

  : 작업유형별로 프로세스 분류하여 우선순위 결정

  : 여러 종류의 큐, 각 큐는 자신의 스케줄링 알고리즘 수행, 큐와 큐 사이의 스케줄링 수행됨

  : 프로세스는 다른 큐로 이동 불가


* MFQ(Multi-level Feedback Queue) > 빨리 할 수 있으면 앞으로 서

  : 프로세스 처리 시간을 기준으로 우선순위 결정

  : 우선순위를 갖는 여러개의 큐

  : 프로세스가 다른 큐로 이동할 수 있다


※ 스케줄링 방법과 함께 실행시간, 대기시간, 반환시간을 물어보는 문제가 많이 나옴

* 실행시간 : cpu를 점유하고 사용한 시간

* 대기시간(Waiting time) : 작업 큐에 들어있으면서 cpu를 사용하지 않은 시간

* 반환시간(Turnaround Time) : 실행시간 + 대기시간

* 평균 반환시간 : 각 프로세스들의 반환시간의 평균


* 응답시간 : 응답이 시작되는 데까지 걸리는 시간임!! / 응답을 출력하는데 걸리는 시간이 아님

(이건 스케줄링에서 쓰는 단어가 아닌 것 같은데?)


※ Convoy Effect(호위효과)

 FCFS 알고리즘에서 짧은 프로세스가 CPU를 양도하기를 기다리는 것으로, 짧은 프로세스들이 먼저 처리될 때보다 CPU와 장치 이용률 저하.


※ 기아상태는 Aging 기법을 사용하여 해결

   기아상태는 우선순위알고리즘에서 나타남.