운영체제 - PCB와 Context Switching
PCB(Process Control Block)
- 운영체제가 각 프로세스를 관리하기 위해 사용하는 데이터 구조
- 각 프로세스는 고유한 PCB를 가지며, 이 PCB는 프로세스의 현재 상태 및 관련 정보를 저장함
- 운영체제는 PCB를 참조하여 프로세스를 관리하고 문맥 교환(Context Switching)을 수행할 때 필요한 데이터를 얻고 저장
PCB 구조

- 프로젝트 식별자(PID, Process ID)
- 운영체제가 각 프로세스를 구분하기 위해 부여하는 고유한 식별자
- 프로세스 상태(Process State)
- 생성(New), 준비(Ready), 실행(Running), 대기(Waiting), 완료(Terminated) 등의 상태로 구분됨됨
- 프로그램 카운터(Program Counter)
- 프로세스가 다음에 실행할 명령어의 주소를 가리키는 것
- 레지스터(Register)
- CPU 레지스터의 현재 값들을 저장하며 여기에는 프로세스가 사용하는 다양한 데이터들이 포함
- 문맥 교환 시 이 값들을 저장하고 불러와야 함
- 메모리 관리 정보(Memory Management Information)
- 프로세스가 사용하는 메모리와 관련된 정보
- 페이지 테이블, 세그먼트 테이블, 기초 주소 레지스터(Base Register) 등이 포함됨
- 계정 정보(Accounting Information)
- CPU 사용 시간, 프로세스 시작 시간, 프로세스가 사용한 자원 등과 같은 정보를 담고 있음
- 입출력 상태 정보(I/0 Status Information)
- 프로세스가 사용 중인 입출력 장치와 파일에 관한 정보 저장
문맥 교환 (Context Switching)
- CPU가 현재 실행 중인 프로세스의 상태를 저장하고, 다음 실행할 프로세스의 상태를 복구하는 과정
- 멀티태스킹 환경에서 매우 중요한 작업으로, 프로세스 간의 전환이 원활하게 이루질 수 있도록 해줌

문맥 교환의 과정
- 현재 프로세스의 상태 저장
- 현재 실행 중인 프로세스의 레지스터 값, 프로그램 카운터, 기타 중요한 정보를 PCB에 저장
- 새로운 프로세스 선택
- CPU 스케줄러가 다음에 실행할 프로세스를 선택
- 이 프로세스의 PCB를 가져옴
- 새로운 프로세스 상태 복구
- 선택된 프로세스의 PCB에 저장된 레지스터 값과 프로그램 카운터 등을 복원
- 프로세스 실행 재개
- CPU가 새로 선택된 프로세스의 명령어를 실행
문맥 교환의 오버헤드
- 문맥 교환은 필수적인 작업이지만, CPU 자원을 소모하고 성능에 영향을 미치는 오헤드가 발생
- 프로세스 상태 저장 및 복구, 캐시 메모리 무효화, 메모리 관리 정보 전환 등의 이유발생하는 오버헤드로 인해, 문맥 교환이 빈번하면 시스템 성능이 저하될 수 있음
PCB와 문맥 교환의 관계
- 운영체제는 PCB를 통해 프로세스의 상태를 관리하고, 문맥 교환 시 PCB에 현재 상태를 저장하거나 이전 상태를 복구함
- 이를 통해 운영체제는 다수의 프로세스를 효율적으로 관리하고, 사용자에게 멀티 태스킹 환경을 제공