PCB & Context Switching
Process Control Block: 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조
Context Switching: 현재 진행하고 있는 프로세스의 상태를 PCB에 저장하고 다음 진행할 프로세스의 정보를 PCB에서 읽어 적용하는 과정
PCB
- 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳
- 프로세스의 상태 정보를 저장하는 구조체
- 프로세스의 상태 관리와 문맥 교환(Context Switching)을 위해 필요
- 프로세스가 생성될 때마다 고유의 PCB 생성 & 프로세스가 완료되면 PCB 제거
구성
- Process ID : 프로세스의 고유 ID
- Process State : 프로세스의 상태 (Create, Ready, Running 등등)
- Program Counter : 프로세스를 위해 실행될 다음 명령어의 주소
- Register : Accumulator, General Register 등을 포함하는 CPU Register의 값
- CPU Scheduling Information : 우선순위, 최종 실행시간, CPU 점유시간 등
- Memory management information : 해당 프로세스의 주소 공간 정보
- I/O Status : 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등
Context Switching
멀티 태스킹
- CPU → 한 번에 하나의 프로세스만 수행 가능
- 여러 개의 프로세스 동시 수행 필요
- 동시에 수행하는 것처럼 보이게 하기 위해서 여러 개의 프로세스를 번갈아가며 수행
인터럽트 핸들링
-
인터럽트 발생
- I/O request : 입출력 요청
- time slice expired : CPU 사용시간 만료
- fork a child : 자식 프로세스 생성
- wait for an interrupt : 인터럽트 처리 대기
시스템 콜
- 사용자와 커널 모드 전환
과정
- Process P1이 실행되는 도중 인터럽트 or 시스템 콜 발생
- PCB1에 P1의 정보를 저장, PCB2의 상태 로드
- Process P2 실행
Overhead
문맥을 교환하는 동안에는 유용한 작업을 수행할 수 없기 때문에, 문맥 교환 시간은 일종의 오버헤드라고 할 수 있다.
references
👉 https://junsangkwon.tistory.com/45