프로세스의 상태(state)

OS 2015. 8. 1. 23:11

프로세스(Process) 

"메모리에 로드되어 실행중인 프로그램"

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


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


일반적으로 프로그램은 많은 시간을 I/O(입출력)에 할당한다. 

프로그램이 I/O 를 하고 있을때 CPU는 일을 하지 않고 가만히 있는다.

(이때 스케줄러가 다른 프로세스로 교체를 하여 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 내의 존재하는 레지스터들도 컨텍스트 

스위칭에 의해 데이터를 변경한다.

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


참조 : http://dakuo.tistory.com/80


'OS' 카테고리의 다른 글

뮤텍스와 세마포어 차이  (3) 2015.07.31
컨텍스트 스위칭 - Context Switching  (0) 2015.07.31
동기와 비동기  (0) 2015.07.31
프로세스와 스레드 차이  (0) 2015.07.31
데드락 교착상태  (0) 2015.07.31
Posted by slender ankles
,