본문 바로가기

Windows/_System Programming

프로세스의 생성과 소멸

프로세스(Process) : 메모리에 로드되어 실행중인 프로그램

1. 프로세스를 구성하는 요소

메모리 구조 : 프로세스 생성시 만들어진다.


Register Set : 프로세스 실행을 위해 필요한 데이터들로 채워진다.



2. 프로세스의 스케줄링과 상태 변화

프로세스의 스케줄링(Scheduling) : 프로세스의 CPU 할당 순서 및 방법을 결정짓는 일
(스케줄링 알고리즘(Scheduling Algorithms) : 스케줄링에 사용되는 알고리즘)

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


(참고 : 멀티 프로세스(Multi-Process) 운영체제의 CPU 사용

실행해야 할 프로세스 여러개라면
멀티 프로세스는 모든 프로세스를 일단 실행시킨 후 운영체제의 스케줄러에 의해 프로세스들을 관리한다.

일반적으로 프로그램은 많은 시간을 I/O(입출력)에 할당한다.
프로그램이 I/O 를 하고 있을때 CPU는 일을 하지 않고 가만히 있는다.

이때 스케줄러가 다른 프로세스로 교체를 하여 CPU를 쉬지 않게 하는것이 멀티 프로세스 기반이다)


프로세스의 상태 변화 :


1. S(Start) : 프로세스 생성 -> Ready

프로세스는 생성과 동시에 Ready 상태로 들어간다.
Ready 상태에 있는 프로세스는 CPU(정확히 말하면 운영체제의 스케줄러)에 의해 실행되기를 기다린다.

2. Ready -> Running

Ready 상태에 있는 프로세스들은 스케줄러에 의해 관리된다.
스케줄러는 Ready 상태에 있는 프로세스중 하나를 선택해서 CPU에 의해 실행될 수 있도록 한다.
(스케줄링 알고리즘 기반)

스케줄러에 의해 선택된 프로세스는 Running 상태가 되어 실행된다.

3. Running -> Ready

일의 중요도에 따라 프로세스들은 생성시 우선순위(Priority)가 매겨진다.
우선순위가 더 높은 프로세스가 Ready 상태에 있다면 스케줄러는 실행중인 프로세스를 Ready상태로 내리고
실행시킨다. Ready 상태로 간 프로세스는 우선순위가 더 높은 프로세스가 종료되기만을 기다린다.

4. Runnimg -> Blocked

실행 중에 있는 프로세스가 실행을 맘추는 상태(Blocked)로 들어간다.
I/O 에 관련된 일을 하는 경우(CPU에 의해 더이상 실행될 수 없다) 스케줄러는 Blocked 상태로 프로세스를 내리고
Ready 상태인 프로세스 중 하나를 실행시킨다.

5. Blocked -> Ready

Blocked 상태는 스케줄러에 의해서 선택될 수 없다.
따라서 Blocked 에 있는 프로세스는 다시 실행될 수 있는 Ready 상태로 간다.

예) :  I/O 가 완료된 프로세스

6. Blocked -> E(Exit)

프로세스를 종료시킬 경우 Blocked 상태를 거쳐 E(Exit)상태로 간다.


컨텍스트 스위칭(Context Switching)

CPU 내에 존재하는 레지스터들은 현재 실행 중에 있는 프로세스 관련 데이터들로 채워진다.

스케줄러에 의해 실행중인 프로세스가 변경되면 CPU 내의 존재하는 레지스터들도 컨텍스트 스위칭에 의해

데이터를 변경한다.


(참고 :

실행되는 프로세스의 변경과정에서 발생하는 컨텍스트 스위칭은
레지스터 갯수가 많을수록 프로세스별로 관리되어야 할 데이터 종류가 많을수록 시스템에 많은 부담을 준다)

'Windows > _System Programming' 카테고리의 다른 글

CreateProcess 함수  (0) 2010.02.10
프로세스(Process) 생성 소스  (0) 2010.02.10
명령 프롬프트(Cmd) 작성  (0) 2010.02.09
64비트 기반 프로그래밍  (0) 2010.02.08
Windows에서의 문자셋(Character Sets)  (0) 2010.02.08