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

。OS에서 Context Switching에 필요한 프로세스의 정보(= Context)를 포함하는 커널 내 구조체( struct )
▶ 프로세스 상태 / CPU 레지스터값 / 메모리 정보 등을 저장하는 자료구조
。프로세스 ID, 우선순위, 스케쥴링 정보 등을 포함

。OS에 의해 관리 및 활용되며 n개의 프로세스가 실행중 일 경우 P0,...,Pn−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 Switching 시 PCB에서 기존 프로세스의 Context를 저장 및 새로운 프로세스의 Context를 불러와서 작업 수행
。CPU Scheduler와 Dispatcher에 의해 발생
▶ 선점형 스케쥴링 또는 비선점형 스케쥴링으로 Context Switching을 통한 프로세스 교체가 발생
문맥교환 주요단계

1. 프로세스 P0에서 인터럽트가 발생하여 현재 프로세스 상태( = Context )를 포함한 PCB( PCB0 ) 저장
。현재 실행중인 P0의 CPU 레지스터, 기타 정보를 PCB0에 저장 및 CPU 제어권 회수
▶ P0은 스케쥴링 큐로 이동
CPU 스케쥴러에 의해 Ready Queue에서 스케쥴링 알고리즘에 따라 다음 프로세스P1 결정
- 선택한 P1의
Context를 포함한 PCB( PCB1 ) 복구
。PCB1에 저장된 정보를 읽어서 CPU 레지스터에 복구 및 CPU 제어권 할당
디스패처를 통해 새로운 프로세스 P1 실행
CPU 상 Context Switch의 빈도측정 명령어
vmstat 측정시간(초) 측정횟수
▶ vmstat을 통해 문맥교환의 발생횟수를 알 수 있다.

。문맥교환이 1초 당 약 183번 or 126번 정도 발생함을 확인가능.
▶ 컴퓨터가 특정작업을 수행 시 더 많아질 수 있다.
cat /proc/1/status | grep ctxt
▶ 해당 구문을 통해 선점형 스케쥴링과 비선점형 스케쥴링에 의한 문맥교환의 발생횟수를 관측가능

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