CS/OS

[OS] PCB란 무엇일까?

IT록흐 2024. 1. 15. 21:02
반응형

https://lordofkangs.tistory.com/614

 

[OS] 프로세스(Process)란 무엇일까?

개발자들은 고급언어( C, C++, JAVA, Python ... )으로 프로그램을 개발한다. 개발자가 고급언어로 소스코드를 작성하면 컴파일러는 소스코드를 컴파일하여 CPU가 이해할 수 있는 저급언어인 어셈블리

lordofkangs.tistory.com

 

 

프로세스(Process)는 CPU가 처리할 수 있도록 RAM 메모리에 할당된 프로그램의 단위이다.

 

프로세스는 소프트웨어로 다양하다. 그러나 하드웨어인 CPU는 한정되어 있다. 그러므로 프로세스A가 CPU를 점유하고 있으면 스케줄링 정책에 따라 프로세스B로 컨텍스트 스위칭(Context Switching)을 일으켜야 한다. 이렇듯 OS는 CPU 자원을 적절히 여러 프로세스에게번갈아 할당해야 한다. 

 

이를 위해, OS는 PCB를 사용한다.

 

 

PCB(Process Control Block)

 

프로세스A가 CPU를 사용하다가 스케줄링 정책에 따라 프로세스B에 CPU가 할당되면, OS는 프로세스A가 다시 CPU를 점유했을 때, 현재 위치에서 처리될 수 있도록 CPU가 처리한 정보를 PCB에 담는다. 프로세스는 어떤 상태인지, 다음에 수행될 명령어의 주소는 무엇인지, 인터럽트 되기 전 CPU 레지스터에 저장된 데이터는 무엇인지 등이 담겨져 있다. 

 

 

 

 

 

OS는 커널메모리에 PCB를 생성하고 프로세스 테이블을 만들어 PCB에 접근한다. 그리고 주기억장치에 프로세스를 위한 메모리를 할당한다.  프로세스는 다른 프로세스의 명시적 요청(Explicit)으로 생성된다. 프로세스A를 처리하다가 프로세스A가 프로세스B 생성을 명시적으로 요청하면 , OS는 PCB를 생성하고 주기억장치에 프로세스B를 위한 메모리를 할당한다. 이렇듯 모든 프로세스는 자신을 생성해준 부모 프로세스를 갖는다. 그리고 부모의 종착지인 0번 프로세스는 커널 프로세스이다. 

 

 

 

 

 

이와 같이, 프로세스 테이블, PCB, 프로세스가 구성되면 OS는 스케줄링 정책에 따라 CPU(처리기)에 할당한다. PCB가 준비큐에서 대기하고 OS는 처리기에 PCB를 디스패치하여 CPU 스케줄링을 수행한다. 한정된 CPU 자원을 여러 프로세스가 빠른 속도로 번갈아 사용하면 마치 여러 개의 프로세스가 병렬적으로 처리되는 것처럼 보인다. 이를 두고, 멀티프로세싱(Multi Processing)이라 부른다. 

 

멀티프로세싱 환경에서는 프로세스의 상태가 중요하다. 그리고 PCB는 프로세스의 상태정보를 가지고 있다. 스케줄링에 따른 프로세스 변화 모델에 대한 자세한 내용은 아래 포스팅을 참고하면 된다.

 

 

[운영체제] 프로세스 상태

한정된 자원( 처리기 및 메모리 )을 여러 프로세스가 공유하려면 OS는 한 가지 프로세스가 처리기 및 메모리를 독점하지 않고 인터리빙(Interleaving) 할 수 있도록 지원해야한다. OS의 주요 업무는 2

lordofkangs.tistory.com

 

 

정리하면,

PCB란 CPU 스케줄링 정책에 따라 프로세스를 제어하기 위한 객체라고 할 수 있다. 

 

 


 

 

참고자료 

 

운영체제 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

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

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

yoongrammer.tistory.com

 

kernel of linux - Process Management(1)

요번 강의는 저번 시간에 설명한 fork() 내용의 복습과, PCB의 상세 내용 그리고 clone 에 대해서 설명한다. 1. fork() 복습저번 정리에서 충분히 설명을 했으므로 간단하게만 정리하겠다. 커널안에 inte

wogh8732.tistory.com

 

반응형