hahahia

프로세스와 스케줄링 및 컨텍스트 스위칭 본문

Windows Programming/Windows::System

프로세스와 스케줄링 및 컨텍스트 스위칭

hahahia 2012. 3. 6. 20:53

프로세스란?
- 실행 중에 있는 프로그램을 의미함.(메인 메모리로 이동하여)

프로세스를 구성하는 요소
- 메모리 구조 + Register Set

프로세스의 스케줄링(Scheduling)
- 프로세스의 CPU 할당 순서 및 방법을 결정짓는 일
- 이 때 사용되는 알고리즘을 스케줄링 알고리즘(Scheduling Algorithms)이라 한다.

스케쥴러
- 스케줄링 알고리즘을 적용해 실제로 프로세스를 관리하는 운영체제 요소(모듈)

프로세스의 상태 변화
- 멀티 프로세스 운영체제에서는 프로세스 하나가 계속해서 실행되는 것이 아니고, 여러 개의 프로세스들이 돌아가면서 실행되기 때문에, 프로세스 각각의 상태는 시간 흐름에 따라 변화한다.


1. S(Start) -> Ready 상태로의 전이

- 프로세스가 생성이 되면 스케줄러에 의해 선택되기를 바라며 Ready상태가 되어 실행을 기다리며 존재한다.

2. Ready -> Running 상태로의 전이

- 스케줄러는 Ready 상태에 있는 프로세스 중 하나를 선택해 CPU에 의해 실행되게 함(스케줄링 알고리즘 기반)
- 스케줄러에 의해 선택된 프로세스는 Running 상태가 되어 실행되는 것이다.

3. Running -> Ready 상태로의 전이

- 일의 중요정도에 따라 우선순위가 매겨진다.
- 예를 들어 높은 우선순위의 프로세스가 생성되었고 Ready 상태가 되었다. 그리고 낮은 우선순위의 Running상태의 프로세스는 Ready 상태로 내리고 높은 순위의 프로세스가 Running 상태로 변한다

4. Running -> Blocked 상태로의 전이

- 데이터 입, 출력에 관련된 일을 하는 경우 발생.
- 데이터 입, 출력시 CPU에 의해서 프로세스가 실행될수 없다.
- 따라서 데이터 입, 출력을 진행중인 프로세스를 잠시 내려오게 하고(Blocked) Ready 상태의 프로세스 중 하나를 실행시킴(CPU를 효율적으로 사용)

5. Blocked -> Ready 상태로의 전이

- Blocked 상태는 스케줄러에 의해 선택될 수 없다.
- 따라서  다시 Running 하기 위해서는 Ready 상태를 거쳐야만 한다.
- ex) 입, 출력이 완료된 프로세스 

6. Blocked -> Exit

- 프로세스 종료 

컨텍스트 스위칭(Context Switching)
-
CPU 내에 존재하는 레지스터들은 현재 실행 중에 있는 프로세스 관련 데이터들로 채워진다.
- 스케줄러에 의해 실행된 프로세스가 변경될 시 CPU 내에 존재하는 레지스터들은 컨텍스트 스위칭에 의해 데이터를 변경한다.

 
- 실행되는 프로세스의 변경과정에서 발생하는 컨텍스트 스위칭은 시스템에 많은 부담을 준다. 따라서 멀티 프로세스 기반의 프로그램 실행은 많은 부분 성능 향상에 도움을 줄 수도 있지만 컨텍스트 스위칭이 미치는 영향을 고려할 경우 오히려 성능 저하를 가져올 수 있다.

참고 윈도우즈 시스템 프로그래밍 | 윤성우 저 | 한빛미디어 
Comments