Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Q2) What is PCB(Process Control Block)? (Interview Question in OS) #10

Open
gaeun0204 opened this issue Dec 2, 2020 · 6 comments
Open
Labels

Comments

@gaeun0204
Copy link
Contributor

프로세스 제어 블록(PCB)에 대하여 자유롭게 설명해주세요 🙂

@gaeun0204 gaeun0204 changed the title Q1) What is PCB(Process Control Block)? (Interview Question in OS) Q2) What is PCB(Process Control Block)? Dec 2, 2020
@gaeun0204 gaeun0204 changed the title Q2) What is PCB(Process Control Block)? Q2) What is PCB(Process Control Block)? (Interview Question in OS) Dec 2, 2020
@gaeun0204 gaeun0204 added the OS label Dec 2, 2020
@terry-yes
Copy link
Contributor

terry-yes commented Dec 3, 2020

즉석
PCB는 운영체제가 프로세스를 다룰 수 있는 데이터(자료구조)를 담고 있습니다.
운영체제의 데이터 영역에 저장이 됩니다.
PCB는 프로세스의 문맥교환시 프로세스의 각종 정보를 운영체제에 알려주고 CPU에게 넘겨주는 용도로 쓰입니다.

PCB의 담겨있는 정보로는
프로세스의 상태(실행, 봉쇄등), 프로세스 아이디
PC(프로그램 카운터), 레지스터 값 등이 있습니다.

@ku-kim
Copy link
Member

ku-kim commented Dec 3, 2020

Process Control Block, Process Context Block이라고도 하는 것은 프로세스의 실행중인 상태를 캠쳐해서 데이터로 저장하고 있는 블록이다. (Process ID, Register value, Scheduling Info, Memory Info ...)
이는 주로 컨텍스트 스위칭에서 사용되는데
예를 들어 실행중인 프로세스 A가 프로세스 B로 컨텍스트 스위칭 된다고 했을 때

  • A에서 하던 작업을 PCB에 저장하고 컨텍스트 스위칭
  • 프로세스 B 실행하다가 끝나거나 다시 스위칭 할 때 프로세스 B의 PCB에 데이터를 저장하고
  • 다시 프로세스 A로 넘어가는데 프로세스 A의 PCB 덮어쓰기 하여 실행한다.

@joey-ful
Copy link
Contributor

joey-ful commented Dec 3, 2020

즉석
Process Control Block은 커널에 존재하는 것으로 프로세스마다 PCB가 생깁니다
PCB는 프로세스의 문맥을 담고 있어 프로세스가 CPU제어권을 획득할 때 PCB의 문맥을 CPU에 옮기고 CPU 제어권을 잃을 때 CPU의 정보를 PCB에 저장하게 됩니다

PCB에는 아래와 같은 정보가 담겨있습니다.

  • 프로세스의 상태와 우선순위
  • PC: 프로세스가 코드를 어디까지 실행했는지
  • 레지스터

@365kim
Copy link
Member

365kim commented Dec 6, 2020

PCB는 프로그램마다 하나씩 있어서 프로그램 실행과 관련된 정보를 저장합니다.
image

컨텍스트 스위칭이 일어날 때, 다음에 실행될 프로그램을 어느 지점부터 이어서 실행해야할지 PCB를 통해 알아내고, 원래 실행되던 프로그램은 어디까지 실행되었는지를 PCB에 저장해두어 다음에 이어서 실행할 수 있도록 합니다.
image

@SeongsangCHO
Copy link
Contributor

PCB는 프로세스 컨트롤 블록으로 프로세스에 대한 정보를 가지고 있는 자료입니다.

프로세스가 생성 될 때마다 PCB가 생성되고 PS가 완료되면 제거됩니다.

프로세스는 작업을 수행하다가 문맥교환이일어나면 프로세스의 정보 (PID, 상태, PC)를 PCB에 저장합니다.

다음에 다시해당 프로세스가 CPU를 점유하면 PCB의 정보를 불러와 저장된 시점부터 다시 작업을 수행할 수 있도록 합니다.

@gaeun0204
Copy link
Contributor Author

gaeun0204 commented Dec 6, 2020

  • PCB란?

    PCB는 프로세스에 대한 여러가지 정보를 갖고 있는 자료구조로, 모든 프로세스는 하나의 PCB를 갖는다.

    PCB는 커널 메모리에 존재하며, 프로세스가 만들어지면 커널이 프로세스별로 PCB를 하나씩 할당한다.

  • PCB가 담고 있는 정보들

    프로세스 ID

    프로세스 상태: 준비, 대기, 실행 등의 상태

    프로그램 카운터(PC): CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터 (CPU는 프로그램 카운터가 가리키는 메모리 위치의 프로그램을 수행함)

    CPU 레지스터

    CPU 스케줄링 정보

    메모리 관리 정보

    하드웨어 상태

    .... (매우 많음)

  • PCB의 기능

    • PCB는 프로세스 관리와 context switching을 위해 필요하다.

      → 참고: context switching은 1) 타임퀀텀이 끝났을 때 2) I/O를 호출했을 때(시스템 콜) 발생한다.

    • 예시: 프로세스 A(old)를 실행 중에 프로세스 B(new)로 context switching이 일어나는 상황

      프로세스 A의 정보들을 PCB(old)에 저장 → 프로세스 B로 context switching [PCB(new)에서 정보를 가져옴] → 프로세스 B 종료 → PCB(old)에서 정보를 복구하여 프로세스 A 실행

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants