초보개발자 긍.응.성
2. Process - 프로세스 상태 본문
단일 처리기 컴퓨터는 임의 시점에 단 하나의 프로세스만을 수행 상태로 수행할 수 있다.
그렇기 때문에 주 메모리에 적재된 프로세스들은 수행상태 이외에도 다른 상태들을 가진다.
Dispatcher (디스패처)
Dispatcher는 운영체제가 한 프로세스로 부터 다른 프로세스로 교체하기 위한 프로그램이다. 시간이 만료되거나 Block 혹은 종료된 프로세스로 부터 준비중인 프로세스를 수행상태로 만들 때 항상 Dispatcher 프로세스가 수행된다.
2-상태(two-state) 상태 모델
2상태 모델에서는 프로세스의 상태를 비수행(Not Running) 상태와 수행(Running) 상태로 나눈다. 운영체제가 새로운 프로세스를 생성할 때, 그 프로세스에 대한 프로세스 제어블록을 생성하고 비수행 상태로 초기화 시킨다. 아래의 Queuing diagram에서 Queue는 수행되지 않는 프로세스가 기다리는 장소이다. 단일 큐의 항목은 특정 프로세스의 PCB를 가리키는 포인터이다. 수행중인 프로세스가 시간이나 입출력 작업으로 인해 인터럽트되면 Dispatcher가 다음에 수행할 프로세스를 큐에서 선택하여 수행을 이어나간다.
5-상태 모델(A Five-State Model)
비수행 상태는 작게 두가지 경우로 나눌 수 있었다. 첫째로, 수행할 준비가 되어있는 상태. 둘째로, 입출력 연산을 기다리며 블록되어 있는 상태이다. 이러한 상황을 더욱 잘 처리하기 위해서는 Not Running상태를 Ready와 Blocked상태로 나누는것이 자연스럽다.
- 수행(Running): 현재 수행중인 프로세스
- 준비(Ready): 기회가 주어지면 수행할 준비가 되어 있는 프로세스
- 블록/대기(Blocked/Waiting): 입출력 연산 완료 등과 같은 어떤 이벤트가 발생할 때 까지 수행될 수 없는 프로세스
- 생성(New): 지금 막 생성된 프로세스. 실행 가능한 프로세스 풀(pool)에는 포함되어 있지 않은 상태이다. PCB가 생성되었다 하더라도 주기억장치에 적재되지 않은 상태이다.
- 종료(Exit): 프로세스 수행이 중지되거나 어떠한 이유로 중단되어서 OS에 의해 수행가능한 프로세스 풀(pool)에서 방출된 프로세스
블록상태의 프로세스는 자신이 기다리는 이벤트가 발생하면 Ready상태로 돌아갈 수 있다. 2-상태 모델 처럼 큐잉 다이어그램으로 나타낼 수 있다. 다른점은 준비큐와 블록큐로 두 개의 큐로 구성될 수 있다. 큰 운영체제에선 이벤트마다의 큐를 만들어 효율성을 높일 수도 있다.
보류된 프로세스(Suspended Process): 7-상태 모델
스와핑(Swapping) - 프로세스의 일부나 전체를 주기억장치로 부터 디스크로 옮겨 놓는 방법이다.
스와핑을 사용하는 이유는 상대적으로 처리시간보다 느린 입출력동작으로 인해 대부분의 프로세스가 Blocked상태여서 프로세서가 Idle상태로 있을 수 있다. 즉, 프로세서가 일하지 않기 때문에 Blocked 상태의 프로세스를 보조기억장치로 옮기고 더욱더 많은 프로세스를 수행하여 이용률을 극대화 시키기 위해서 생긴 방법이다. 스와핑은 당연히 디스크로 주기억장치의 내용을 옮기는 것이기 때문에 오버헤드가 발생하지만 디스크 입출력은 시스템에서 가장 빠른(테이브나 프린터에 비해) 입출력 작업에 속하기 때문에 일반적으로 스와핑은 성능을 향상시킨다.
수행되지 않는 Ready 상태와 Blocked 상태의 프로세스들은 보류될 수 있으므로 추가적으로 두 가지의 상태가 더 생긴다.
- 블록/보류(Blocked/Suspend): 프로세스가 보조기억장치에 있고 사건을 기다리고 있다.
- 준비/보류(Ready/Suspend): 프로세스가 보고기억장치에 있지만, 주기억장치에 적재되면 즉시 수행될 수 있다.
'운영체제(Operating Systems)' 카테고리의 다른 글
4. Process - 수행모드와 프로세스 생성 및 교환 (0) | 2019.12.08 |
---|---|
3. Process - 운영체제의 프로세스 제어 (0) | 2019.12.02 |
1. Process - 프로세스란? (0) | 2019.12.02 |