PCB와 Context Switching

이상우·2022년 1월 26일
0

PCB(Process Controll Block)

프로세스 메타데이터들을 저장해 놓는 곳. 하나의 PCB안에는 하나의 프로세스의 정보가 담겨 있다. 운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리/제어한다. 프로세스가 생성될 때마다 고유의 PCB가 생성되고 프로세스가 완료되면 제거된다. PCB는 프로세스의 중요한 정보를 포함하고 있으므로 일반 사용자가 접근하지 못하는 보호된 메모리 영역에 존재한다.

프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이터들이 PCB에 저장

PCB에 담기는 프로세스 정보

  • Process id - 프로세스 ID
  • Process state - 프로세스의 상태(new ready waiting, running, terminated)
  • Program counter - 다음 명령의 주소를 가리키고 있는 계수기
  • CPU register - CPU 레지스터
  • CPU-scheduling information - 프로세스의 우선순위, 최종 실행 시간, 스케줄링 큐를 가리키는 포인터 등
  • Memory-management information - register, 페이지 테이블, 세그먼트 테이블의 base, limit 값에 대한 정보
  • Accounting information - CPU 사용 시간, 실제 사용된 시간, 시간 제한 등
  • I/O status information - 프로세스에 할당된 I/O 기기에 해당하는 정보

PCB가 필요한 이유?

CPU에서는 프로세스의 상태에 따라 교체 작업이 이루어진다. (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 running으로 바꿀 때)
이때, 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것이다.

Context Switching

수행 중인 Task(Process/Thread)가 변경될 때, CPU의 레지스터 정보가 변경되는 것을 뜻한다. 즉, 이전 프로세스의 상태를 PCB에 보관하고, 다른 프로세스의 정보를 PCB에서 읽어와 CPU 레지스터에 적재하는 과정이다.

Context Switching 수행 과정

  1. Task의 대부분 정보는 Register에 저장되고 PCB(Process Control Block)로 관리가 되고 있다.
  2. 현재 실행하고 있는 Task의 PCB 정보를 저장하게 된다.(Process Stack, Ready Queue)
  3. 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있게 된다.

Context Switching이 왜 필요한가?

CPU는 한 번에 하나의 프로세스만 수행할 수 있지만, 실생활에서 우리는 여러 개의 프로세스를 동시에 수행하고자 한다. 따라서 CPU는 여러 개의 프로세스를 번갈아가면서 수행함으로써 동시에 수행하는 것처럼 보이게 하기 위하여 Context Switching을 사용한다.

참고 사이트

profile
구상한것을 구현할 수 있는 개발자가 되고 싶습니다.

0개의 댓글