[OS]PCB&Context Switching

Legday_Dev·2024년 3월 11일

CS

목록 보기
11/13
post-thumbnail

PCB(Process Control Block)


프로세스 제어 블록(Process Control Block, PCB)는 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조이다. 즉, PCB 는 OS가 프로세스를 표현한 것이다.

  • CPU는 프로세스가 여러개일 때 CPU 스케쥴링을 통해 관리한다.(Process Management)
  • 이 때, CPU는 각 프로세스의 특징을 알아야 관리를 하는데 프로세스의 특징Process Metadata 라고 한다.
  • Process Metadata
    • Process ID : 프로세스 식별자
    • Process State : 프로세스 상태 -> 생성(Create) , 준비(Ready) , 실행(Running) , 대기(Watiting) , 완료(terminated)
    • Process Priority : 프로세스 우선순위
    • CPU Registers : CPU 레지스터 및 일반 레지스터
    • Owner : 프로세스 계정 정보
    • CPU Usage : CPU 사용량
    • Memory Usage : 메모리 관련 정보
  • 이러한 Process Metadata 는 프로세스가 생성되면 PCB 에 저장된다.

    순서

    프로그램 실행 -> 프로세스 생성 -> 프로세스 주소공간에 Stack , Data , Code 영역 생성 -> 프로세스의 메타데이터들이 PCB에 저장

PCB가 필요한 이유

  • CPU 에서는 프로세스 상태에 따라 교체작업이 이루어질 때, 앞으로 다시 수행할 대기 중이 프로세스에 관한 저장 값을 PCB에 저장해둔다.

PCB 관리 방법

  • PCB 는 Linked List 방식의 자료구조로 관리된다.
  • PCB List Head 에 PCB들이 생성될 때마다 다음 노드에 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이하다.
  • 즉, 프로세스가 생성되면 해당 PCB 가 생성되고 종료되면 제거된다.

Context Switching


멀티 프로세스 환경에서 CPU가 프로세스 처리 중 인터럽트(Interrupt)요청에 의해 다음 우선 순위의 프로세스가 실행되야 할 때, 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지트서 값(Context)를 교체하는 작업을 말한다.

Context

OS에서 Context 는 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보이다.

  • Context Switching 은 다음 실행할 프로세스의 PCB 정보를 읽어 레지스터에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행한다.
  • Context Switching 진행 중에는 CPU는 아무런 일을 하지 못한다. 따라서 Context Switching이 잦아지면 OverHead(오버헤드)가 발생하여 성능이 떨어진다.

참고자료
Tech Interview
PCB(Process Control Block)란?
(iOS) PCB와 Context Switching
위키백과
OS - Context Switch(컨텍스트 스위치)가 무엇인가?
Context Switching이란?

profile
백엔드개발자

0개의 댓글