티스토리 뷰

PCB(Process Control Block)


Process Metadata

프로세스는 컴퓨터에서 연속적으로 실행되고 있는 동적인 상태의 컴퓨터 프로그램, 즉 하나의 작업 단위이다. 프로세스는 여러가지 특징을 가지고 있는데 이러한 특징을 Process Metadata 라고 한다. 이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)에 저장된다. 이러한 메타 데이터를 통해 CPU는 각 프로세스를 구분할 수 있고, 이를 통해 프로세스가 여러 개일 때 전부 관리할 수 있다. 이렇게 프로세스 여러 개를 CPU 스케쥴링을 통해 관리하는 것을 Process Management 라고 한다. 

 

 

※Process Metadata 

- process-id : 새로운 프로세스에 시스템이 할당해주는 고유 id
- process- state : 프로세스의 라이프 타임과 관련된 상태로, waiting, running, ready, blocked, end, suspend-wait, suspend-ready 가 있다
- priority : 프로세스 스케줄링을 위한 우선순위이다
- Process Accounting Information : CPU를 사용한 시간, CPU 할당 시간 등이 있다
- Program Counter : 이전에 배운 PC로 다음 작업할 명령어 위치를 기억한다
- List of Open Files : 실행 중에 프로그램에 필요한 모든 파일의 정보를 포함한다
- Process I/0 status information : 해당 프로세스가 실행 중에 할당을 요구한 I/O 장치에 대한 정보를 담는다
- CPU 레지스터 : context switch가 발생하면 이 때의 레지스터 정보를 기억해서 다시 프로세스가 CPU 할당을 받으면 사용한다. accumulator, index, stack pointer 와 같은 레지스터의 값이 저장된다
- PCB Pointer : 준비중인 다음 프로세스의 주소를 가리킨다. 준비 상태나, 대기 상태의 큐를 구현할 때 다음을 가리키는 포인터로 사용된다
- Memory management information : 메모리 관리 정보로 프로세스가 메모리의 어디에 있는 지 나타내는 메모리 정보와 메모리 보호를 위한 경계 레지스터, 한계 레지스터 값등이 저장된다. 또한, segmentation table , page table 등 정보도 보관한다
- PPID, CPID : 부모 프로세스를 가리키는 PPID, 자식 프로세스를 관리하는 CPID가 저장된다.

 


Metadata의 생성과 PCB

이 Metadata는 프로세스가 생성되면 PCB에 저장된다.

 

1. 프로그램 실행

2. 프로세스 생성(프로그램을 메모리에 적재)

3. 프로세스 메타 데이터 생성

4. 메타 데이터를 PCB에 저장

(이때, 한 PCB에는 한 프로세스의 정보가 담긴다.)

 

Process 생성

 

PCB


PCB의 필요성

 

프로세스가 여러 개 생성될 때, CPU는 프로세스 상태에 따라 교체 작업을 수행한다. 따라서 수행대기 중인 프로세스에 관한 저장 값을 PCB에 저장해 두어야 한다. PCB는 연결리스트(LinkedList) 방식으로 관리되어 삽입과 삭제가 용이하다. 따라서 프로세스가 생성될 때 PCB List Head 에 PCB가 삽입되고, 프로세스가 완료되면 PCB가 삭제되는 식으로 관리된다. 

 

※ 교체작업 

1. Interrupt 발생
2. 할당 받은 프로세스 Waiting 상태로 변경
3. 다른 프로세스를 Running 상태로 변경

 

 

문맥 교환(Context Switching)


Context Switching 란 ?

 

현재 CPU가 실행하고 있는 프로세스 정보를 문맥(Context)라고 하며 이를 교환하는 행위가 문맥 교환(Context Switching)이다. 수행 중인 Task(Process/Thread)가 변경될 때, CPU 레지스터 정보가 변경되는 것을 뜻한다. 즉, 이전 프로세스의 상태를 PCB에 보관하고 다른 프로세스의 정보를 PCB에서 읽어와 CPU 레지스터에 적재하는 과정이다.

 

 

* Context

CPU가 다루는 프로세스/스레드에 대한 정보로 대부분 레지스터에 저장되어 있고 PCB로 관리한다.

 


상태 변경

 

 

 

CPU를 차지하며 Running 상태이던 프로세스가 나가고 새로운 프로세스가 Running 상태가 되는 작업이며, 이때 각 프로세스의 PCB가 변경된다. 즉, 실행 상태에서 나가는 프로세스의 PCB는 작업 내용을 저장하며 실행 상태로 들어오는 프로세스는 PCB 내용을 바탕으로 CPU가 세팅 된다.

 

Context Switching 은 보통 인터럽트 발생, 현재 프로세스의 선점 허용 기간을 모두 소모한 상황, 입출력을 위해 대기하는 경우에 발생하게 된다. 

 


Context Switching 이 필요한 이유

 

CPU는 한 번에 하나의 프로세스만 수행할 수 있지만, 실생활에서 우리는 여러 개의 프로세스를 동시에 수행하고자 한다. 따라서 CPU는 여러 개의 프로세스를 번 갈아가면서 수행함으로써 동시에 수행하는 것처럼 보이게 하기 위하여 Context Switching을 사용한다.

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함