PCB와 Context Switching

2025. 8. 26. 15:17·Computer Science
반응형

목차

  • PCB 란?
  • PCB가 왜 필요한가?
  • Context Switching Overhead란?
  • PCB와 Context Switching의 관계는?

PCB(Process Control Block)란?

  • 프로세스의 모든 정보를 저장하고 관리하는 "데이터 구조체"이다.
  • 다음의 구조를 가진다.
    • 스택: 함수 호출과 관련된 지역 변수, 매개 변수, 반환 주소 등이 저장
    • 힙: 개발자가 직접 동적으로 메모리를 할당하고 해제하는 영역
    • 데이터: 프로그램의 전역 변수, 정적 변수 등이 저장되는 영역
    • 코드: 실행 가능한 코드 즉, 기계어 명령어들이 저장되는 영역

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

PCB가 왜 필요할까?

운영체제가 프로세스를 관리하고 제어하기 위해 반드시 필요한 데이터 구조체이기 때문이다.

  • 이를 통해 여러 프로세스를 동시에 실행하는 것 처럼 보이게 하는 멀티태스킹 기능을 수행할 수 있다.

CPU에서는 멀티태스킹을 구현하기 위해 프로세스의 상태를 변경하고 따라서 CPU에 올라와있는 프로세스 정보의 교체작업이 이루어진다.

  • 더 자세히 이야기하면, 우리가 사용할 수 있는 CPU는 한정되어 있지만 프로세스는 그보다 많기 때문에 운영체제는 우리에게 동시에 실행되는 것 처럼 보이게 하는 병행 처리를 해줌으로써 우리가 여러개의 프로그램을 동시에 실행하는 것 처럼 보이게해준다.
  • 멀티 태스킹은 여러 작업을 동시에 실행하는 것 처럼 보이게 하는 결과 또는 개념을 의미하고, 병행 처리는 이러한 결과를 달성하기 위한 구체적인 기술 또는 원리를 의미한다.

interrupt가 발생해서 할당받은 프로세스가 waiting 상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때 기존에 실행하던 프로세스 정보를 PCB에 저장해두고, 다음 프로세스 정보를 PCB에서 CPU로 로드한다.

  • 이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.

PCB는 어떻게 관리될까?
Linked List 방식으로 관리된다.
PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소 값으로 연결이 이뤄져 있는 연결 리스트이기 때문에 삽입과 삭제가 용이하다.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거된다.

  • 나는 조회 성능이 떨어질 것이라 걱정했지만, 실제로 상태별로 그룹화해서 주로 큐 자료구조 형태로 첫 번째 요소를 찾아오는 경우가 많기 때문에 문제가 되지 않는다.

Context Switching

  • CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적재하는 과정

보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가 시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생한다.

즉, 프로세스가 Ready -> Running, Running -> Ready, Running -> Waiting처럼 상태 변경시 발생한다.

Context Switching의 OverHead란?

  • 컨텍스트 스위칭을 할 때는 프로세스의 현재 상태를 PCB에 저장하고, 새로운 상태를 로드하고, 캐시를 무효화하는 과정이 포함되는데 이런 작업들을 오버헤드라고 한다.
  • overhead는 과부하라는 뜻이다.

프로세스 작업 중에는 어쩔 수 없이 OverHead를 감수하고 Context Switching을 해야 하는 상황이 있다.

프로세스를 수행하다가 입출력 이벤트가 발생해서 대기 상태로 전환시킴
이때, CPU를 그냥 놀게 놔두는 것보다 다른 프로세스를 수행시키는 것이 효율적이다.

즉, CPU에게 계속 프로세스를 수행시키도록 하기 위해서 기존 프로세스를 중단시키고, 다른 프로세스를 실행시키기 위해 Context Switching 하는 것이다.
- 결국 CPU는 놀지 않고, 사용자에게 빠르게 일처리를 제공해줄 수 있다.

PCB와 Context Switching의 관계는?

PCB는 Context Switching을 가능하게 하는 데이터 구조이다.

1. 현재 프로세스 상태 저장

  • 컨텍스트 스위칭이 발생할 때, 운영체제는 현재 실행 중인 프로세스의 모든 정보를 PCB에 저장한다.
  • 여기에는 PC와 레지스터 값들이 포함됩니다. 이 과정을 통해 현재 프로세스가 나중에 중단된 지점부터 다시 실행될 수 있다.

2. 새 프로세스 상태 복원

  • 실행할 프로세스를 선택하면, 운영체제는 해당 프로세스의 PCB에 저장된 정보를 복원한다.
  • PC와 레지스터 값을 CPU로 다시 불러오면, CPU는 이전에 중단되었던 그 지점부터 실행을 재개할 수 있게 된다.

쉽게 말해서 PCB는 프로세스의 스냅샷 혹은 체크포인트 역할을 하며, 컨텍스트 스위칭은 이 스냅샷을 저장하고 불러오는 작업이라고 할 수 있다.

출처

https://gyoogle.dev/blog/computer-science/operating-system/PCB%20&%20Context%20Switching.html

반응형

'Computer Science' 카테고리의 다른 글

CPU 스케줄링  (3) 2025.08.27
IPC, Inter Process Communication  (4) 2025.08.26
TLS: Transport Layer Security 프로토콜  (3) 2025.08.10
데이터베이스 인덱스  (2) 2025.07.20
SQL(RDBMS)와 NoSQL 데이터베이스  (1) 2025.07.20
'Computer Science' 카테고리의 다른 글
  • CPU 스케줄링
  • IPC, Inter Process Communication
  • TLS: Transport Layer Security 프로토콜
  • 데이터베이스 인덱스
부기(창의)
부기(창의)
창의의 개발블로그입니다.
  • 부기(창의)
    창의
    부기(창의)
  • 전체
    오늘
    어제
    • 분류 전체보기 (221) N
      • 고민 (1)
      • 데브옵스 (9)
      • AWS (3)
      • 웹 (13)
      • Docker (2)
      • Git (1)
      • JAVA (14) N
      • OOP (3)
        • 디자인 패턴 (1)
      • 백준 (106)
        • JAVA (7)
      • Spring (23)
      • 개발 관련 (4)
      • 알고리즘 (4)
      • TIL (13)
      • 우아한 테크코스 (9)
        • 프리코스 지원과정 (6)
      • NextJS (3)
      • Computer Science (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Github : https://github.com/chan⋯
  • 인기 글

  • 태그

    메모리
    자바
    뉴진스
    완전탐색
    스프링
    백트래킹
    java
    jpa
    hibernate
    스레드
    jvm
    ec2
    SSR
    동시성
    다이나믹 프로그래밍
    백준
    OS
    dp
    알고리즘
    완탐
    운영체제
    페스타타북
    우테코 7기
    우테코
    도커
    Spring Boot
    spring
    페스타북
    우테코 프리코스
    aws
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
부기(창의)
PCB와 Context Switching
상단으로

티스토리툴바