Developing Myself Everyday
article thumbnail

PCB란?


PCB는 운영 체제에서 프로세스를 관리(Process Management) 하기 위해 사용되는 데이터 구조이다. 운영체제는 하드웨어 자원을 관리하고 프로그램들을 지원해주는 역할을 한다. 커널은 이 운영체제의 핵심으로 프로그램과 하드웨어의 중간다리 역할을 한다.

 

 

위의 그림을 보게 되면 커널에는 Data Structure for Hardware(하드웨어의 데이터 구조)와 PCB가 있는 것을 알 수 있다. 그리고 프로세스와 하드웨어를 관리하기 위한 데이터가 담겨있는 이런 데이터 구조체를 통틀어 metadata(메타데이터)라고 부른다.

 

 

PCB는 각 프로세스에 대해 운영 체제가 생성하고 유지하며, 해당 프로세스에 대한 정보를 저장한다.

 

 

 

PCB가 가지는 정보

PCB가 가지는 정보는 아래와 같다.

 

 

 

PCB를 사용한 프로세스의 요청


그림과 함께 진행해보면서 이해해보겠다.

 

 

프로세스의 생성

 

프로그램이 실행되면 운영 체제는 해당 프로그램을 위한 프로세스를 생성한다. 이때 PCB가 생성되고 프로세스의 관련된 정보가 PCB에 저장된다. 예시에서는 간단하게 3가지의 정보만 나타내었다.

 

 

 

PCB의 상태 변경

각 프로세스들은 자원을 요청하기 위해 PCB에 요청에 대한 정보를 업데이트 한다. 그러면서 State를 Ready로 변경하게 된다. Ready 상태가 된 프로세스는 CPU 자원 할당을 기다리는 상태가 되며, Ready Queue(준비 큐)에 PCB가 들어가게 된다.

 

 

이 과정에서 Ready 상태가 된 PCB들의 우선순위가 매겨지게 된다. 우선순위는 스케줄링 알고리즘에 의해 정해지며 우선순위 기반 스케줄링이나 라운드 로빈 스케줄링 등에 의해 순위가 정해지게 된다.

 

우선순위가 가장 높은 프로세스가 CPU 자원을 할당받아 작업을 수행하게 된다. 이 프로세스는 일정 시간 동안 CPU를 사용할 권리를 가지게 된다.

 

 

 

대기 시간의 발생

그런데 이 때 문제가 발생한다. Running상태가 되어 프로세스가 CPU를 점유하고 메모리에게 데이터를 요청하는데 메모리가 데이터를 바로 반환하지 않고 있다. 그럼 CPU는 불필요하게 메모리가 데이터를 요청할 때까지 계속 기다려야 한다. 그래서 이런 상황에서는 해당 프로세스의 PCB를 Waiting 상태로 변경하고 해당 프로세스를 Waiting Queue(준비 큐)로 이동시켜 다른 실행 가능한 프로세스가 실행되도록 양보한다.

 

 

 

 

이벤트 발생 및 프로세스 이동

프로세는 대기하다가 이벤트가 발생하게 되면 관련돈 프로세스의 PCB가 업데이트 되며, 스케줄링 알고리즘에 따라 Ready Queue에서 다음 실행 가능한 프로세스가 선택된다.

 

 

이러한 방식으로 프로세스는 하드웨어에게 요청을 보내고 PCB, Ready Queue, Waiting Queue 등의 요소들이 상호작용하여 프로세스의 실행과 자원 할당이 관리되게 된다.

profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!