공부

[컴퓨터구조] 프로세스, 프로세스 제어 블록(PCB, Process Control Block)

AVONADO 2026. 3. 18. 19:47

 

정처기를 따다말았다보니 기초가 모자른거같아서 ㅠ_ㅠ

컴구랑 운영체제 공부 좀 해야겄습니다

 

 

프로세스

 - 실행중인 프로그램, 즉 CPU 메모리에 올라와 있는 프로그램.

 

포그라운드 프로세스

 - 사용자가 보는 앞에서 실행되는 프로세스

 

백그라운드 프로세스

 - 사용자가 보지 못하는 뒤편에서 실행되는 프로세스

 - 사용자와 상호작용할 수 없는 프로세스를 서비스, 리눅스에선 데몬이라고 부름.

 

CPU에 모든 프로그램이 한번에 올라가 실행될 수 없어서 자기에게 할당된 시간만큼만 올라올 수 잇음.

시간이 끝났음을 알리는 인터럽트가 발생하면 다음 차례가 올 때까지 또 무한 대기~

 

여기서 운영체제의 역할!! 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분함.

이를 위해 운영체제는 프로세스 제어 블록(이하 PCB)를 이용합니다.

 

프로세스 제어 블록(PCB, Process Control Block)

 - 프로세스와 관련된 정보를 저장하는 자료 구조

 - 메모리의 커널 영역에 생성 됨

 - 옷이나 가전제품에 달려 있는 태그에 해당 제품을 식별하기 위한 정보가 있는 것처럼 프로세스 제어 블록에는 해당 프로세스를 식별하기 위해 꼭 필요한 정보들이 저장 됨

 - 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기 됨

 

PCB에 담긴 정보들

 

 - 프로세스 ID

 프로세스 ID, 이하 PID는 특정 프로세스를 식별하기 위해 부여하는 고유한 번호

 같은 일을 수행하는 프로그램이라 할지라도 두 번 실행하면 PID가 다름

 

 - 레지스터 값

  프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들

  프로세스는 자신의 실행상태가 돌아오면 이전까지 사용했던 레지스터의 중간값들을 모두 복원함(이전까지 진행했던 작업들을 마저 진행해야하니까)

 

 - 프로세스 상태

 현재 프로세스의 상태

 입출력장치를 사용하기 위해 기다리고 있는지, CPU를 사용하기 위해 기다리고 있는 상태인지, CPU를 이용하고 있는 상태인지 등등

 

 - CPU 스케줄링 정보

 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보

 

 - 메모리 관리 정보

 프로세스마다 메모리에 저장된 위치가 다르므로 PCB에는 프로세스가 어느 주소에 저장되어 있는지에 대한 정보가 있어야함

 

 - 사용한 파일과 입출력장치 목록

 어떤 입출력장치가 이 프로세스에 할당되었는지, 어떤 파일들을 열었는지에 대한 정보