운영체제

운영체제 3.2 프로세스 상태

공부승식 2021. 3. 30. 23:05
728x90

프로세스는 다양한 상태가 있는데 

프로그램을 수행하기 위해 그 프로그램에 대한 프로세스 또는 태스크가 생성된다. CPU입장에서 보자면, PC값에 의해 결정된 순서에 따라 명령어들을 수행한다. 개별 프로그램의 관점에서 프로그램의 수행은 자신에 속한 일련의 명령어를 수행한다.

 

3개의 프로세스가 메모리내에 가상메모리 없이 배치되어있다고 하면, A프로세스에서 B프로세스로 교체될때 디스패처를 이용한다. 

운영체제가 한 프로세스가 최대 여섯 명령어를 실행되게 한다면, 프로세스 A,B,C가 있다면, 

A = 12개 명령어

B= 4개 명령어

C= 12개 명령어 라고 하자.

그러면 

A6개->디스패처 6개->B4개  ->입출력 요청 후 완료되기 기다린다. -> 디스패처 아까랑 똑같은 거 6개->C 6개 ->디스패처똑같은거 6개 -> A 남은거 6개 ->디스패처 똑같은거6개->C남은거 6개

이렇게 진행된다. 

 

2-상태(two-state)프로세스 모델일경우 

running과 not running으로 나뉘는데  not running상태에서 디스패치 되면 running이 되고 일시중지 되면not running으로 다시 바뀐다. 이상이다.

프로세스가 비수행상태에서 수행상태로  바뀔때 자신의 상태로 가야하는데 그 상태를 PCB에 저장시켜놔서 수행을 자기상태 그대로 다시 돌아올 수 있도록 한다. 

수행되지 않는 프로세스는 수행될 차례를 기다리면서 큐에 저장된다.  큐의 항목들은 프로세스의 각각의 PCB를 가리키는 포인터이다. 이런 방식도 있고 그냥 프로세스 데이터를 넣은 블록으로 큐를 구성할 수도 있다. 

수행중에 인터럽트 당한 프로세스는 대기 프로세스들의 큐로 옮겨진다. 어떤 경우든 디스패처는 다음에 수행할 프로세스를 큐에서 선택한다.

 

 

프로세스의 생성(creation)과 종료(termination)

 

현재 프로세스 집단에 새로운 프로세스를 추가하고자 할때, 운영체제는 그 프로세스를 관리하기 위한 자료구조를 만들고, 그 프로세스에게 메인 메모리 주소공간을 할당한다. 하나의 프로세스가 다른 프로세스를 생성할시에는 전자를 parent process, 후자는 child process라고 한다. 

 

5-state Model(5-상태 모델)

정지된 프로세스는 수행할 준비(ready)일 수도있지만, 입출력 연산이 완료되길 기다리면서 Block되어 있을 수도 있다. 그래서 단일 큐를 사용할때, 디스패처는 단순히 큐의 맨 끝에서부터 프로세스를 선택하면 안된다. 디스패처는 큐를 살펴보고 블록상태가 아니고, 큐에 가장 오래 머문 프로세스를 찾아야한다. 

이 상황을 위해 state를 Ready 또는 Block으로 나눈다. 

5상태 모델은 생성-준비-수행-블록 - 종료 이렇게 5개로 이루어져 있다. 순서가 이렇다는건 아니다.

 1.수행(running): 현재 수행중인 프로세스. 단일 처리기라면, 한 시점에 하나의 프로세스만이 수행상태일 수 있다.

2. 준비(ready): 기회가 주어지면 수행될 준비가 되어있는 프로세스

3. 블록(Blocked) : 입출력 연산 완료 등과 같은 어떤 이벤트가 발생할 때 까지 수행될 수 없는 프로세스( 아까 B프로세스처럼 4개 끝나고 입출력신호 보내는 경우가 해당)

4.생성(New): 지금 막 생성된상태, 운영체제에 의해 메모리를 할당받지 못했다. 자신의 PCB가 생성되었더라도 , 메인메모리에 적재되지 않은 상태

5. 종료: 프로세스 수행이 중지되거나, 중단된 프로세스.

 

프로세스의 상태 전이를 일으키는 이벤트들의 종류를 나열해보자

1.NULL-> NEW: 어떤 프로그램을 수행하기 위해 새로운 프로세스가 생성.

2.NEW -> Ready: 운영체제가 새로 생성된 프로세스를 받아들일 준비가 되었을 때, 그 프로세스를 생성 상태에서 준비상태로 전이시킨다. 대부분의 시스템은 프로세스의 수에 제한을 두거나, 프로세스에게 할당되는 가상메모리의 양을 제한한다. 그 이유는 프로세스가 너무 많아져서 시스템 성능이 떨어지는걸 막기 위해.

3. Ready-> Running :  수행할 프로세스를 선택할 때가 되면, 운영체제는 준비상태에 있는 프로세스들 중 하나를 선택한다. (스캐줄러 또는 디스패처가 선택) 

4. Running -> Exit : 수행중인 프로세스가 작업을 완료하거나 수행이 중단되면, 운영체제는 그 프로세스를 종료한다.

5. Running -> Ready: 프로세스가 자신에게 허용된 최대 처리기 시간을 모두 사용했거나, 높은 우선순위를 가진 프로세스가 인터럽트를 일으켰을 경우.

6.Running -> Block: 프로세스가 자원을 요구했는데 기다려야 한다면, 블록 상태로 전이됨. 프로세스는 보통 시스템 서비스 호출을 통해 운영체제에게 어떤 서비스를 요청한다. 만약 프로세스는 운영체제가 즉시 수행할 수 없는 서비스를 요청한다면, 또는 프로세스가 입출력동작처럼 프로세스가 수행을 재게하기 전에 완료되어야하는 행동을 시작할때도 프로세스를 블록시킨다. 

7.Ready-> Exit : 부모프로세스가 자식 프로세스를 언제든지 종료시킬 수 있다. 부모프로세스가 종료되면 자식프로세스도 동시에 종료되는것도 포함한다. 

 

 

Suspended Process (보류된 프로세스)

한 메인 메모리에 과도하게 많은 프로세스가 상주한다면, 처리기는 대부분의 시간동안 대기하는 상태가 된다. 

과도한 프로세스 상주를 해결하기 위해 swapping을 사용한다. 프로세스의 일부나 전체를 메인메모리로부터 디스크로 옮겨놓는 방법이다. 

메인메모리에있는 프로세스들 중에서 준비상태에 있는 프로세스가 하나도 없으면, 운영체제는 블록된 프로세스들 중에 하나를 하드디스크로 내보내고 Suspended queue에 넣는다. 이 큐에는 메인 메모리에서 잠시 쫒겨나거나 보류된 프로세스들이 존재한다. 운영체제는 보류큐에 있는 다른 프로세스를 주 기억장치로 들여오거나 새로운 프로세스 요청을 받아들인 후 , 새로이 도착한 프로세스를 가지고 수행을 계속한다.-> 성능을 향상시킨다 보통. 

'운영체제' 카테고리의 다른 글

운영체제 4.1 프로세스와 쓰레드  (0) 2021.04.07
운영체제 3.3 Process Description  (0) 2021.04.01
운영체제 3장 3.1  (0) 2021.03.30
운영체제 2.1단원 복습  (0) 2021.03.16
운영체제 3월 9일 3번째 수업.  (0) 2021.03.09