-
PCB(Process Control Block)는 무엇일까? 어디서 쓰나?운영체제 2020. 4. 10. 16:37728x90반응형
프로세스는 어떤 식으로 자신을 저장하며 CPU가 이런 프로세스를 제어하는 방법이 궁금했다.
각각의 프로세스는 PCB라는 프로세스 컨트롤 블록을 가지고 위에 일을 할 수 있다고 배우게 되었다. 그렇다면 PCB에는 어떤 것들이 있으며 어떻게 쓰이는지 정리해 보겠다.
PCB(Process Control Block)이란?
프로세스 컨트롤 블록. 즉, 프로세스를 관리하기 위해서 다양한 정보를 저장해 두고 이를 가지고 제어를 할 수 있도록 하는 운영체제 커널의 자료 구조이다.
"운영체제가 프로세스를 표현했다." 라고 말할 수 있다.
[ 구성 ]
1. Process Id : pid값을 저장. 즉 프로세스의 특정 번호를 저장한다.
c++>> #include<sys/types.h>에 pid_t 라는 데이터 타입에 pid값을 저장할 수 있다고 배웠다.
2. Process State : 현재 프로세스가 어떤 상태인지 기록해둔다.
[ 상태의 종류 ]
● Create : 프로세스가 생성되는 상태
● Terminate : 프로세스가 종료되는 상태
● Running : 프로세스가 CPU 할당을 받아 명령어들을 실행하는 상태
● Ready : CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당 되기를 Ready 큐에서 기다리는 상태(우선순위가 존재한다.)
● Waiting : sleep , block 등 이라고 봐도 무방하다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태
3. Program Counter(프로그램 계수기) : 프로세스의 다음 실행할 명령어의 주소를 저장해둔다.
이유는 여러가지 event나 interrupt가 발생했을 때 다시 원래 수행 중인 프로세스로 돌아가기 위해서이다.
4. CPU register 와 general register
CPU에서 사용한 레지스터의 값을 잃지 않기 위해서 PCB에 레지스터 값을 저장하고 다시 프로세스가 호출되었을 때 사용하기 위해서 이를 저장한다.
5. CPU 스케쥴링 정보 : priority와 최종 실행시각, CPU 점유시간 등을 저장해둔다.
스케쥴링에 대한 자료를 하나더 추가하자면
CPU 스케줄링의 결정 시점은 다음과 같은 프로세스의 상태 변화가 있을 때이다.
- Running → Waiting
- Running → Ready
- Waiting → Ready
- Running → Terminate
6. Memory 관리 정보
프로세스의 현재 주소와 주소 공간을 가지고 있다.
7. 프로세스 계정 정보
현재 프로세스의 부모 프로세스가 어떤 것인지 , 스케쥴링 큐 포인터(Ready 큐 다음에 있는 프로세스를 가리키는 포인터) 등이 있다.
8. I/O State 정보
현재 프로세스에 할당된 입출력 장치 목록과 오픈 파일 목록 등을 알려준다.
이렇게 PCB는 프로세스의 중요한 정보를 가지고 있어 유저 모드에서 접근할 수 없게 되어있고 커널 영역에 존재한다.
역할
PCB를 통해서 프로세스는 해당 정보를 커널 영역에 저장하는데 이유는 프로세스마다 CPU 퀀텀이 시분할로 할당되는데 이 시간을 넘기거나 프로세스의 우선순위와 스케쥴링 알고리즘 등에 의해 프로세스 상태 전이가 일어날 때 CPU는 모든 프로세스의 레지스터 값들과 해당 프로세스의 위치, 이 프로세스가 어떤 프로세스인지 구별하지 않는다. 따라서 이를 구별하기 위해서 운영체제는 커널 영역에 PCB라는 자료구조를 이용하여 프로세스를 체계적으로 관리하기 위해서 이용한다.
반응형'운영체제' 카테고리의 다른 글
폴링(Polling) vs 인터럽트(Interrupt) (0) 2020.05.18 컴퓨터 시스템 정리 (분산 시스템, 병렬 시스템, 클러스터 시스템, Real-Time 시스템, Handled 시스템) (0) 2020.04.20 프로세스의 상태 총 정리 (Process Status) (1) 2020.04.19 프로그램(Program)과 프로세스(Process),프로세서(Processor) 구분하기!!! (0) 2020.03.19