운영체제 - 프로세스 : Context Switching / PCB

TopOfTheHead·2026년 2월 10일

운영체제

목록 보기
6/24

PCB ( Process Control Block ) = TCB ( Task Control Block )

OS에서 Context Switching에 필요한 프로세스의 정보(= Context)를 포함하는 커널구조체( struct )
프로세스 상태 / CPU 레지스터값 / 메모리 정보 등을 저장하는 자료구조

프로세스 ID, 우선순위, 스케쥴링 정보 등을 포함

OS에 의해 관리 및 활용되며 n개의 프로세스가 실행중 일 경우 P0,...,Pn1P_0,...,P_{n-1}PCB가 존재

PCB가 포함하는 정보
PCB가 저장하고있는 프로세스의 정보를 Context라고 한다.

  • Pointer :
    스케쥴링 큐에 저장된 프로세스PCB를 지칭하는 용도

  • Process ID
    。각 프로세스를 고유하게 식별

  • Process State :
    프로세스 생명주기에 해당하는 State를 저장
    new / ready / waiting / running / terminated

  • CPU Registers :
    CPU 실행 중 사용하는 저장소

    Program Counter :
    。현재 실행될 프로세스가 위치한 RAM 상 주소값을 저장
    ▶ 다음에 실행할 명령어 위치를 저장

    PCB 정보 중 프로그램 카운터 정보를 저장하는게 제일 중요
    프로그램 카운터를 복구하지 못할 경우 어떤 명령어를 실행할 지 알 수 없으므로.

    Instruction Register , Data Register등의 정보도 저장

  • CPU Scheduling Information :
    。어떤 프로세스를 우선적으로 처리할지에 대한 CPU 스케쥴링 정보
    우선순위 / CPU 할당 시간

  • Memory-management Information :
    프로세스주기억장치 영역( Text / Data / Heap / Stack )의 주소Memory Lock 등에 대한 정보

  • Accounting Information :
    。특정 사용자가 프로세스를 생성했는지에 대한 정보

  • I/O Status Information :
    입출력 작업 중 어떤 Device와 어떤 파일을 사용중인지에 대한 정보

프로세스 문맥 ( Context )
프로세스가 실행되면서 CPU가 관리해야할 프로세스 상태 정보
PCB가 저장하고있으며 Context Switching 시 참조하는 정보


프로세스 실행 중 인터럽트가 발생하여 다른 프로세스작업 전환Context Switching을 통해 Context 저장 및 불러오기를 수행

  • 실행중인 프로세스의 현재 Context 정보를 저장
    。이후 프로세스Waiting 상태로 대기큐로 이동

    PCB 정보 중 프로그램 카운터 정보를 저장하는게 제일 중요
    프로그램 카운터를 복구하지 못할 경우 어떤 프로세스를 실행할 지 알 수 없으므로.

  • 프로세스준비큐에서 다시 실행 시 Context 정보를 복구
    대기큐에서 인터럽트 처리 후 준비큐로 이동하여 Ready 상태인 프로세스CPU에서 처리의 시작하여 Running 상태일때 해당 Context 정보를 복구하여 사용

문맥교환 ( Context Switch )
CPU코어에서 현재 실행중인 프로세스 / 스레드를 저장하고 다른 프로세스 / 스레드를 복구하여 교체하는 과정

멀티프로그래밍시분할( Time Sharing ) 특징
▶ 각 프로세스를 작은 단위( = quantum )로 처리함으로써 Context Switching의 빈도를 증진시켜 작업응답시간을 최소화

CPU프로세스에서 다른 프로세스Context SwitchingPCB에서 기존 프로세스Context를 저장 및 새로운 프로세스Context를 불러와서 작업 수행

CPU SchedulerDispatcher에 의해 발생
선점형 스케쥴링 또는 비선점형 스케쥴링으로 Context Switching을 통한 프로세스 교체가 발생

  • 문맥교환 주요단계

    1. 프로세스 P0P_0에서 인터럽트가 발생하여 현재 프로세스 상태( = Context )를 포함한 PCB( PCB0PCB_0 ) 저장
    。현재 실행중인 P0P_0CPU 레지스터, 기타 정보를 PCB0PCB_0에 저장 및 CPU 제어권 회수
    P0P_0스케쥴링 큐로 이동

  1. CPU 스케쥴러에 의해 Ready Queue에서 스케쥴링 알고리즘에 따라 다음 프로세스P1P_1 결정

  2. 선택한 P1P_1Context를 포함한 PCB( PCB1PCB_1 ) 복구
    PCB1PCB_1에 저장된 정보를 읽어서 CPU 레지스터에 복구 및 CPU 제어권 할당

  3. 디스패처를 통해 새로운 프로세스 P1P_1 실행

CPUContext Switch의 빈도측정 명령어

vmstat 측정시간(초) 측정횟수
vmstat을 통해 문맥교환의 발생횟수를 알 수 있다.

문맥교환이 1초 당 약 183번 or 126번 정도 발생함을 확인가능.
컴퓨터가 특정작업을 수행 시 더 많아질 수 있다.

cat /proc/1/status | grep ctxt
▶ 해당 구문을 통해 선점형 스케쥴링비선점형 스케쥴링에 의한 문맥교환의 발생횟수를 관측가능

Context Switching 발생 시 선점형 스케쥴링에 의한 문맥교환은 134번, 비선점형 스케쥴링에 의한 문맥교환은 10385번 발생함을 관측가능

profile
공부기록 블로그

0개의 댓글