Process의 구조, State와 PCB의 개념

2020. 4. 12. 23:31

1. 프로세스란

프로세스는 동작중인 프로그램이며, 커널로부터 할당받은 자신만의 자원을 이용하여 CPU가 기계어 명령을 실행함에 따라 끊임없이 변화한다. 사용자 입장에서 프로세스의 구조를 바라보면, 프로세스는 크게 텍스트, 데이터, 스택, 힙이라는 네 영역으로 구분할 수 있다.

 

2. 프로세스의 구조

 

 

Text 영역: CPU에서 직접 수행되는 명령어를 가진다. Code 영역이라고도 하며, 코드 자체를 구성하는 메모리 영역으로 Hex 파일이나 Bin 파일 메모리이다.

 

Data 영역: 전역 변수가 이곳에 속한다. 그 외에 프로그램이 실행될 때 생성되고 프로그램이 종료되면 시스템에 반환되며 정적변수, 배열, 구조체 등이 저장되는 곳이다. 이 때 초기화 된 데이터에는 data 영역에 저장되고, 초기화되지 않은 데이터는 BSS(Block Stated Symbol)영역에 저장된다.

 

Heap 영역: 동적으로 할당 받은 내용을 가진다. 동적 데이터 영역이라고 부르기도 한다. 메모리 주소 값에 의해서만 참조되고 사용되는 영역이다.

 

Stack 영역: 지역변수와 인자, 그리고 함수의 리턴 주소를 가진다. 함수를 호출 시에 생성이 되고, 함수가 끝나면 반환이 된다. Stack 사이즈는 각 프로세스마다 할당되지만, 프로세스가 메모리에 로드될 때 Stack 사이즈가 고정되어 있어 런타임시에 Stack 사이즈르 바꿀 수 없다.

 

3. PCB의 개념과 포함 요소

PCBProcess Control Block의 줄임말로, 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓은 곳으로 프로세스의 상태 정보를 저장하는 구조체이다. , 쉽게 말해서 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓을 수 있는 저장 장소를 말한다. 이것은 프로세스 상태 관리와 Context Switching을 위해서 필요하며, PCB는 프로세스 생성시 만들어지며 주 기억장치에 유지된다.

 

PCB에 포함된 정보는 다음과 같다.

Process ID/ Process state / Program counter/ register information / scheduling information / Memory related information/ Accounting information / Status information related to I/O

 

-      PID: 프로세스의 고유 번호를 의미한다.

-      State(상태): 준비, 대기, 실행 등의 상태를 의미한다.

-      포인터: 다음 실행될 프로세스의 포인터이다.

-      Register save area: 레지스터 관련 정보이다.

-      Priority: 스케줄링 및 프로세스의 우선순위이다.

-      또한 할당된 자원 정보도 포함하고 있다.

-      Account: CPU 사용시간, 실제 사용된 시간도 포함한다.

-      입출력 상태 정보를 포함한다.

 

3. Process State

프로세스는 실행되면서 매 순간마다 상태가 변한다. 그림에 나와있는 각각의 프로세스 state는 다음과 같다.

 

Create:

프로세스가 생성되는 단계이다. 생성은 되었지만, 아직 OS에 의해 승인을 받지 못한 상태이다.

 

Ready:

프로세스가 생성되어 주기억장치에 적재가 되고, 실행하는데 필요한 자원을 모두 얻은 상태이다.

Running 상태가 되기 위한 모든 준비가 끝난 상태로 대기 큐에서 대기중인 상태를 말한다.

이 상태에는 여러 개의 프로세스가 CPU이 할당 받기를 기다리며 존재할 수 있다.

 

Running:

프로세스가 CPU를 할당 받아서 실제로 프로세스가 수행되고 있는 상태이다.

단일 처리기에서 단 하나의 프로세스가 이 상태를 갖는 것에 주의해야한다. Running 상태는 2개가 될 수 없다.

 

Suspended ready:

필요한 자원은 모두 얻었지만 주기억장치에 적재되지 못한 상태이다. \

 

Suspended blocked:

필요한 자원도 얻지 않아 없고, 주기억장치에도 적재되지 못한 상태를 말한다.

 

Asleep:

주기억장치에 적재는 되었지만 필요한 자원을 얻지 못한 상태이다.

 

Terminated:

프로세스가 종료된 상태이다.

BELATED ARTICLES

more