CS Chapter_7 - PCB와 Context Switching

장선웅·2022년 8월 10일
0

PCB(Process Control Block)란?

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해놓은 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다.
  • 프로세스 상태 관리와 문맥교환(Context Switching)을 위해 필요하다.
  • PCB는 프로세스 생성 시 만들어지며 주기억장치에 유지된다.

쉽게 이해하기 위해 예를 들어보자. 당신은 컴퓨터를 켜서 인터넷을 하는 동시에 채팅, 카카오톡, 음악재생 등 여러가지 작업을 동시에 할 수 있다. 그런데 사실 컴퓨터는 동시에 이 일들을 처리하는 것이 아닌, TIME SHARING이라고 하는 짧은 시간동안 왔다갔다 번갈아 가면서 재빠르게 처리해주는 것이다.

이처럼 프로세스들이 교체되어 수행되고 나면 다른 프로세스를 불러와야 하는데 이 말은 즉, 이전 작업에 대한 내용을 기억하고 있다라는 뜻이 된다. 이처럼 프로세스 단위로 정보를 저장해주는 BLOCK이 있는데 이게 바로 PCB이다.

즉, PCB란 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓을 수 있는 저장 장소를 뜻한다.

CPU에서 급한 프로세스를 처리해달라고 요청이 왔을 때, 기존에 작업하던 프로세스들의 정보를 저장해 놓는 곳이 PCB이다.


PCB의 구조(저장 정보)

  1. Process State : 프로세스의 각 상태 정보를 저장한다. 생성, 준비, 실행, 대기, 종료 중 해당 상태 정보를 저장한다.
  1. Process Number : 프로세스의 아이디 정보이다.(Process ID라고도 한다.)
  1. Process Counter : 이 프로세스에서 다음에 실행할 명령어의 주소를 가리키는 카운터를 저장한다.
  1. CPU Register : 누산기, 인덱스 레지스터, 스택 포인터 등을 포함하여, 이 상태 정보는 인터럽트 발생 시, 해당 프로세스가 다시 작업을 재개할 때 중단된 위치에서 부터 시작할 수 있도록하기 위해 PCB에 저장된다.
  1. CPU-Scheduling Information : 이 정보는 프로세스 우선순위, 스케쥴링 큐 포인터, 그리고 다른 스케쥴링 파라미터 등을 포함한다.
  1. Memory-Management Information : 프로세스의 메모리 관리 시스템에 대한 정보가 포함된다. 페이지 테이블, 세그먼트 테이블 등이 있다.
  1. Accounting Information : CPU의 사용시간, 실제 사용시간 등의 정보가 포한되어 있다.
  1. I/O Status Information : 프로세스에 할당된 입출력 장치들 목록, 열려 있는 파일 목록 등등이 포함되어 있다.

컨텍스트 스위칭(Context Swiching)이란?

위의 그림처럼 여러 프로세스를 처리해야 하는 과정에서 현재 진행중인 Task의 상태를 PCB에 저장하고 다음에 진행랄 Task의 상태 값을 읽어 적용하는 과정을 컨텍스트 스위칭이라고 한다.


컨텍스트 스위칭의 과정

  1. Task의 대부분의 정보는 Register에 저장되고 PCB로 관리된다.
  1. 우선 현재 실행되는 Task의 PCB 정보를 저장하는 작업을 한다.
  1. 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 이를 통해 CPU가 이전에 진행한 과정을 연속적으로 수행할 수 있다.

컨텍스트 스위칭은 많은 시간이 소요된다. Cache 초기화, Memory Mapping 초기화, 항상 실행되어야 하는 커널 등의 작업들 수반으로 컨텍스트 스위칭은 많은 시간이 소요되는데 이런 시간을 오버헤드라고 한다.


컨텍스트 스위칭 비용은 프로세스가 스레드 보다 많이 든다.

  • 프로세스는 공유하는 메모리가 없으므로 캐시 메모리 초기화 등 무거운 작업을 해야 하는 반면, 스레드는 Stack 영역을 제외하면 모든 메모리를 공유하기 때문에 컨텍스트 스위칭 방식에서 Stack 영역만 변경 후 진행하면 되기 때문이다.
profile
개발을 꿈꾸는 초짜

0개의 댓글