ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PCB(Process Control Block)는 무엇일까? 어디서 쓰나?
    운영체제 2020. 4. 10. 16:37
    반응형

    프로세스는 어떤 식으로 자신을 저장하며 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 스케줄링의 결정 시점은 다음과 같은 프로세스의 상태 변화가 있을 때이다.

    1. Running → Waiting
    2. Running → Ready
    3. Waiting → Ready
    4. Running → Terminate

    6. Memory 관리 정보 

    프로세스의 현재 주소와 주소 공간을 가지고 있다.

    7. 프로세스 계정 정보 

    현재 프로세스의 부모 프로세스가 어떤 것인지 , 스케쥴링 큐 포인터(Ready 큐 다음에 있는 프로세스를 가리키는 포인터) 등이 있다.

    8. I/O State 정보 

    현재 프로세스에 할당된 입출력 장치 목록과 오픈 파일 목록 등을 알려준다.

     

    이렇게 PCB는 프로세스의 중요한 정보를 가지고 있어 유저 모드에서 접근할 수 없게 되어있고 커널 영역에 존재한다.

     

    역할

    PCB를 통해서 프로세스는 해당 정보를 커널 영역에 저장하는데 이유는 프로세스마다 CPU 퀀텀이 시분할로 할당되는데 이 시간을 넘기거나 프로세스의 우선순위와 스케쥴링 알고리즘 등에 의해 프로세스 상태 전이가 일어날 때 CPU는 모든 프로세스의 레지스터 값들과 해당 프로세스의 위치, 이 프로세스가 어떤 프로세스인지 구별하지 않는다. 따라서 이를 구별하기 위해서 운영체제는 커널 영역에 PCB라는 자료구조를 이용하여 프로세스를 체계적으로 관리하기 위해서 이용한다.

     

    반응형
Designed by Tistory.