본문 바로가기
  • AI (Artificial Intelligence)
Fundamental/Management

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

by 로샤스 2014. 5. 29.

프로세스란?

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

 윈도우 사용자가 특정 프로그램을 실행시키면 하드디스크에 저장된 프로그램이 메모리(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

 

 

 

 

 

 

 

댓글