CS/운영체제

#7 PCB(Process Control Block) - 프로세스 제어 블록

RadderNepa 2023. 2. 22. 04:41

● PCB

- 프로그램이 메모리에 올라가서 실행중인 상태를 프로세스라고 하며 OS는 여러개의 프로세스를 전부 다 관리 & 공평하게 실행시켜야한다.

- 프로세스가 만들어지면 OS는 해당 프로세스의 정보를 가지고 있는 PCB(Process Control Block)를 만들고 저장한다.

- PCB들은 연결리스트 형태로 저장된다.     cf) 연결리스트 - 각각의 데이터(노드)가 다음 데이터를 연결하는 자료구조

출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

 

- OS는 프로세스가 종료되면 연결리스트에서 해당 프로세스의 PCB를 제거한다.

출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)


● PCB 구조

출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

1. 포인터

- 부모와 자식 프로세스에 대한 포인터와 할당된 자원에 대한 포인터 등이 있고 프로세스의 한 상태에서 다른 상태로 전환될 때 저장하는 포인터를 가지고 있다.

 

2. 프로세스 상태

- 현재 프로세스의 5가지 상태(생성, 준비, 실행, 대기, 완료)를 의미

 

3. 프로세스 ID(PID)

- 프로세스를 식별하기 위한 숫자가 저장된다.(고유한 ID 값이라고 생각)

 

4. 프로그램 카운터

- 다음에 실행될 명령어의 주소를 포함하는 프로그램 카운터를 저장

- 오늘날 OS는 시분할처리로 여러개의 프로세스를 짧은 시간동안 번갈아가며 실행한다.

- 어떠한 프로세스가 실행되다가 다른 프로세스에게 CPU를 뺏긴 후 다시 실행될 때 원래 실행하던 명령어가 그대로 실행되어야 하기 때문에 프로그램 카운터는 반드시 있어야한다.

출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
출처 - 인프런, 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

 

5. 레지스터 정보

- 프로세스가 실행될 때 사용했던 레지스터 값들이 저장된다.

- 프로그램 카운터와 마찬가지로 CPU를 뺏긴 후 다시 시작할 때 이전에 사용했던 값들을 복구하기 위한 용도이다.

 

6. 메모리 관련 정보

- 프로세스가 메모리 어디에 있는지에 대한 위치 정보, 메모리 침범을 막기 위한 경계 레지스터 값 등이 저장된다.

 

7. CPU 스케줄링 정보

- CPU 스케줄링에 필요한 우선순위, 최종 실행시간, CPU 점유시간 등이 저장된다.


● PCB를 조금 더 자세히 알아보자

- PCB(Process Control Bolock)는 OS가 프로세스를 제어하기 위한 프로세스 상태 정보를 저장한 곳이다.

- PCB는 프로세스의 중요 정보를 가지고 있기 때문에 일반 사용자가 접근하지 못하도록 보호된 메모리 영역에 위치한다.

- 프로세스가 생성될 때마다 고유의 PCB가 생성되고 프로세스가 완료되면 PCB도 제거된다.

- OS는 빠른 PCB 접근을 위해 프로세스 테이블을 사용하여 각 프로세스의 PCB를 관리한다.

https://stackoverflow.com/questions/4880555/what-is-the-linux-process-table-what-does-it-consist-of
https://jhnyang.tistory.com/33

 

cf) 아래 글을 참고했다.

https://yoongrammer.tistory.com/52

 

프로세스 제어 블록 (PCB: Process Control Block) 알아보기

프로세스 제어 블록 (PCB: Process Control Block) 알아보기 PCB(Process Control Bolock)는 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 자료구조입니

yoongrammer.tistory.com

https://stackoverflow.com/questions/4880555/what-is-the-linux-process-table-what-does-it-consist-of

 

What is the linux process table ? What does it consist of?

This term keeps appearing in my Operating System notes, and I'm not entirely sure what it is/where it's stored and how or why.

stackoverflow.com

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%A0%9C%EC%96%B4_%EB%B8%94%EB%A1%9D

 

프로세스 제어 블록 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 프로세스 제어 블록(Process Control Block, 줄여서 PCB)은 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조이다. 작업 제어 블록(T

ko.wikipedia.org

https://jhnyang.tistory.com/33

 

[운영체제]PCB (Process Control Block)란? PCB 정보 & Context Switching 문맥교환 & Overhead 오버헤드

운영체제 목차 프로세스의 정의와 프로세스 상태에 대한 이해를 기반으로 하고 있습니다. 헷갈리시는 분은 이전 포스팅 보고 오기 프로세스를 조금 어렵게(?) 이렇게 표현하기도 해요 프로세스

jhnyang.tistory.com