Post

PCB와 컨텍스트 스위치

스터디 Stacked-Book에서 실습과 그림으로 배우는 리눅스 구조 책을 참고하여 학습 후 정리한 글입니다.

PCB와 컨텍스트 스위치

PCB

PCB

  • CPU 에서는 프로세스의 상태에 따라 교체 작업(컨텍스트 스위칭)이 이루어진다.
  • 운영체제가 CPU 코어의 현재 작업 흐름을 뺏을때마다 인터럽트가 발생한다.
  • 인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고, 다른 프로세스를 running 으로 바꿀 때 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장하는 것이다.

PCB의 구성 요소

PCB 구성 요소

  • Pointer : 프로세스 상태 중에 준비 상태나 대기 상태의 큐를 구현하기 위해 필요한 포인터
  • Process State : 프로세스의 준비, 대기, 실행 등의 상태
  • Process Number(PID) : 프로세스 고유 번호
  • Program Counter : 해당 프로세스가 이어서 실행해야 할 명령의 주소 값
  • CPU registers : 프로세스가 인터럽트 이후 올바르게 작업을 이어가기 위해 상태 정보를 저장하는 곳.
  • CPU-scheduling information: 프로세스의 중요도, 스케줄링 큐 포인터 등 스케줄링 파라미터 정보.
  • Memory-management information: base, limit 레지스터 값, 페이지 테이블 등 메모리 시스템 정보.
  • Accounting information: 사용된 CPU 총량, 프로세스 개수, 시간 제한 등.
  • I/O status information: 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등.

PCB 관리 방식

  • PCB는 LinkedList로 관리가 된다.
  • PCB List Head에 PCB들이 생성될 때마다 붙게 된다.
  • 주소 값으로 연결이 이루어져 있는 연결 리스트 형태로 삽입 삭제가 용이하다.

컨텍스트 스위치

컨텍스트 스위치

  • 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 컨텍스트 스위치라고 한다.
  • 컨텍스트 스위치가 진행될동안 시스템이 아무론 유용한 일을 못하기 때문에, 순수한 오버헤드라고 볼 수있으며 교환 속도는 메모리의 속도, 복사 되어야 하는 레지스터의 수, 특수 명령어 등에 좌우되기 떄문에 기계마다 다르다.

컨텍스트 스위치가 일어나는 상황

  1. I/O interrupt
  2. CPU 사용시간 만료
  3. 자식 프로세스 Fork
  4. 인터럽트 처리를 기다릴 때

CPU의 PC, 레지스터

  • PCB 구성 요소 중 CPU registers에 대해서 좀 더 알아보자.

CPU 레지스터란?

  • 중앙처리장치(CPU) 내에 위치한 기억장치
  • CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터를 거쳐 데이터를 전달하게 된다.

CPU 레지스터 종류

  • PC (Program Counter) : 다음 인출(Fetch) 될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정한다. 때문에 명령어 포인터라고도 한다.
  • AC (Accumulator) : 연산 결과 데이터를 일시적으로 저장하는 레지스터
  • IR (Instruction Register) : 가장 최근에 인출된 명령어(현재 실행 중인 명령어)가 저장되어 있는 레지스터
  • SR (Status Register) : 현재 CPU 의 상태를 가지고 있는 레지스터
  • MAR (Memory Address Register) : PC 에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터
  • MBR (Memory Buffer Register) : 기억장치에 저장될 데이터 혹은 읽혀진 데이터가 일시적으로 저장되는 버퍼 레지스터

헷갈리는 PCB의 PC와 CPU Register의 PC 정리하기

  • PCB(Process Control Block)와 CPU 레지스터의 “Program Counter(PC)”는 서로 다른 목적과 역할을 가지고 있다.
  • PCB (Process Control Block)의 Program Counter
    • 현재 실행 중인 프로세스의 실행 위치를 저장한다.
    • 즉, 해당 프로세스가 다음에 실행할 명령어의 주소를 PCB에 저장한다
  • CPU 내의 Program Counter
    • 현재 실행 중인 프로세스의 다음 명령어 주소를 추적하는 역할을 한다.
    • CPU가 명령어를 실행할 때 사용되며, 다음에 어떤 명령어를 가져올지 결정한다.

CPU 내의 Program Counter는 실제 명령어 실행에 직접적으로 관여하며, 프로세스 전환이나 컨텍스트 스위치 시에는 PCB의 Program Counter로 값을 저장하거나 불러와서 CPU의 Program Counter를 업데이트하게 된다.

This post is licensed under CC BY 4.0 by the author.