티스토리 뷰

PCB (Process Control Block)

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는구조체입니다.
  • 프로세스의 상태 관리와 문맥 교환(Context Switching)을 위해서 필요합니다.
  • PCB는 운영체제가 프로세스를 표현한 것입니다.
  • 프로세스가 생성될 때마다 고유의 PCB 가 생성되며, 프로세스가 완료되면 PCB는 제거됩니다.

 

PCB에 저장된 요소

PCB

  1. Process ID : 프로세스의 고유 ID
  2. Process State : 프로세스의 상태 (Create, Ready, Running 등등)
  3. Program Counter : 프로세스를 위해 실행될 다음 명령어의 주소
  4. Register : Accumulator, General Register 등을 포함하는 CPU Register의 값
  5. CPU Scheduling Information : 우선순위, 최종 실행시간, CPU 점유시간 등
  6. Memory management information : 해당 프로세스의 주소 공간 정보
  7. I/O Status : 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등 

 

문맥 교환(Context Switching)

  • 현재 진행하고 있는 프로세스의 상태를 PCB에 저장하고 다음 진행할 프로세스의 정보를 PCB에서 읽어 적용하는 과정을 말합니다.
  • 쉽게 말하면 저장하고 불러오는 과정입니다.

 

문맥 교환이 필요한 이유

  • CPU는 한 번에 하나의 프로세스만 수행할 수 있습니다.
  • 하지만, 실생활에서 우리는 여러 개의 프로세스를 동시에 수행하려고 합니다. (ex: 노래 들으며 인터넷 하기)
  • 따라서 CPU는 동시에 수행하는 처럼 보이게 하기 위해서 여러 개의 프로세스를 번갈아가며 수행합니다.
  • 이렇게 CPU가 프로세스를 바꿔가며 실행하기 위해서 문맥 교환이 필요하게 되었습니다.

 

문맥 교환의 과정

1. Process P1이 실행되는 도중 인터럽트나 시스템 콜이 발생합니다.

2. PCB1에 P1의 정보를 저장하고 PCB2의 상태를 불러옵니다.

3. Process P2를 실행합니다.

4. P2가 실행되는 도중 인터럽트나 시스템 콜이 발생합니다.

5. PCB2에 P2의 정보를 저장하고 PCB1의 상태를 불러옵니다.

6. Process P1을 실행합니다.

 

=> 이렇게 프로세스가 바뀌는 과정을 문맥 교환이라고 합니다.

=> 이 과정에서 프로세스가 실행되기 전까지의 기다리는 시간, 메모리를 오버헤드라고 합니다.

 

문맥 교환은 언제 발생하는가?

  • CPU 스케줄링에 의해 할당된 작업시간이 끝나 timeout이 발생했을 때 발생합니다.
  • 프로세스의 작업이 끝났을 때 발생합니다.
  • 실행 중이던 프로세스가 입출력 요청을 할 때 발생합니다.

 

 

 

 

Reference

https://dev-mystory.tistory.com/119

 

운영체제 - PCB(Process Control Block)란?

PCB란? 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다. 프로세스 상태 관리와 문맥교환(Context Switching)을 위해 필요하다. PCB는

dev-mystory.tistory.com

https://overcome-the-limits.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EB%AC%B8%EB%A7%A5-%EA%B5%90%ED%99%98Context-Switching?category=973838 

 

[운영체제] 문맥 교환(Context Switching)

들어가며 프로그래밍 공부를 하면서, 기술을 쓰긴 쓰는데, 이 기술을 왜 써야 하는지 제대로 알지 못하는 경우가 있었습니다. 공부를 하면 할수록, 기초가 부족하다는 것을 깨닫고, 기초를 어떻

overcome-the-limits.tistory.com

 

'CS' 카테고리의 다른 글

[OS] CPU 스케줄링  (0) 2022.02.24
[OS] 멀티 프로세스 vs 멀티 스레드  (0) 2022.02.21
[OS] 병렬처리  (0) 2022.02.14
[OS] 컴퓨터 성능 향상 기술  (0) 2022.02.10
[OS] 프로세스와 스레드  (0) 2022.02.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함