Fundamental/Management

프로세스 스케줄러 & 프로세스 우선순위

로샤스 2014. 5. 29. 13:35

프로세스란?

 프로세스란 실행 중인 프로그램을 의미한다.

 윈도우 사용자가 특정 프로그램을 실행시키면 하드디스크에 저장된 프로그램이 메모리(RAM)에

 올라오게 되고, 메모리에 올라온 프로그램은 CPU를 통해 연산되는데 하드디스크에서 메모리로

 올라온 프로그램을 프로세스라고 한다.

 

□ 프로세스 스케줄러 

 프로세스란 실행중인 프로그램이며, 프로세스를 실행하기위해서는 하나의 CPU(코어)가 필요하다고

 하였으므로 하나의 프로세스를 실행하기 위해서는 하나의 CPU(코어)가 필요하다.

 가장 이상적인 방법으로는 실행되는 프로세스 수 만큼 CPU(코어)를 가지고 있는 것이지만 이는 현실

 적으로 불가능 하며, 실질적으로는 실행되는 프로세스의 수보다 CPU(코어)의 개수가 적다.

 이를 해결하기 위해서는 프로세스 스케줄러가 필요한데 프로세스 스케줄러가 하는 일은  여러

 프로세스들이 CPU를 할당받을 수 있도록 관리해주는 프로세스이다.

프로세스 스케줄러란 프로세스들이 CPU를 할당받을 수 있도록 관리해주는 프로세스이다.

 

□ 선점형 OS, 비선점형 OS

 프로세스 스케줄러가 프로세스를 어떻게 관리하느냐에 따라 OS가 선점형 OS와 비선점형 OS로 구분

 될 수 있다.

 현재 우선순위가 2인  "A Process"가 실행되고 있다.

 이 상태에서 OS사용자가 우선순위가 5인 "B Process"를 실행 시켰다고 가정해보자.

 B의 우선순위가 A의 우선순위보다 높으므로 A가 CPU할당시간을 다 사용하면 B에세 CPU 권한을

 넘겨 주어야 한다.

 비선점형 OS경우에는 높은 우선순위의 프로세서에게 CPU권한을 넘겨주는 일을 스케줄러가 하는 것

 이 아니라 프로그래머가 직접 해주어야 한다.

 때문에 선점형 OS에 비해 스케줄러가 하는 일이 적으며, 프로그래머가 신경써야할 부분이 많아진다.

 선점형 OS경우에는 높은 우선순위의 프로세스가 등장했을 때 스케줄러가 직접 프로세스들의

 우선순위를 조정해준다.

 선점형 OS의 경우 멀티 프로세스 기반 OS에 적절한데 프로그래머가 직접 신경쓰지 않아도 프로세스

 들을 위선순위에 따라 프로세스들을 CPU사용을 조정해 주므로 프로그래머가 신경써야 할 부분들이

 적기 때문이다.

 

□ 우선순위 스케줄링알고리즘, 라운드로빈 알고리즘

 Windows에서 사용하는 대표적인 선점형 OS알고리즘으로는 ①우선순위 스케줄링과, ②라운드로

 빈스케줄링 알고리즘이 있다.

 먼저 우선순위 스케줄링 알고리즘은 높은 우순선위의 프로세스부터 선택하는 알고리즘 이다.

 라운드로빈 스케줄링 알고리즘 동일한 우선순위의 프로세스가 CPU시간을 동등하게 받을 수 있도

 록 하는 알고리즘 이다.

 우선순위

프로세스 

8

 

7

H, I 

6

 

5

 

4

D, E, F 

3

 

2

 

1

A, B, C

0

 

 

 현재 우선순위 7인 프로세스 2개, 4인 프로세스 3개 1인 프로세스 3개가 있다.

 그럼 먼저 우선순위 스케줄링알고리즘에 따라 우선순위가 7인 프로세스가 선택될 것이다.

 우선순위 7인 프로세스를보면 두개의 프로세스 H, I가 있다.

 이 두개의 프로세스가 동등하게 CPU시간을 동등하게 받을 수 있록 해주는 알고리즘이 라운드로빈

 알고리즘 이다.

 

 여기서 생각해 볼 것이 그럼 우선 순위가 낮은 D, E, F, A, B, C는 H, I가 종료되기 까지 실행될

 수 없지만 대부분의 프로세스들이 I/O작업을 하므로 H, I가 모두 I/O작업을 하는동안에는 조금이나

 마 실행될 수 있을 것이다.

 

스케줄링 알고리즘에 의해서 스케줄링이 진행되는 시점

 ① CPU시간을 다 사용하였을 때

  프로세서 우선순위에 따라서 다른 프로세서를 실행시켜야 한다.

 ② 프로세서가 생성, 종료되었을 때

  프로세서가 생성 되거나, 종료되었을 때에도 프로세서 우선순위에 따라 프로세서 실행순서를

  조정 해주어야 한다.

 ③ I/O작업을 할 때

  I/O작업을 하는 동안에는 CPU를 사용할 수 없으므로 다른 프로세서에게 CPU를 넘겨 주어야 한다.

 

 

 

 

 

 

출처 : http://blog.naver.com/pnh0105?Redirect=Log&logNo=80209228635