문맥교환이란, Program1과 Program2가 있을 때, P1을 실행 하던 중 P2로 넘어가는 행위를 말합니다.
그 과정의 예시는 다음과 같습니다.
P1의 실행 → P1에서 Interrupt or System Call 발생 → PCB1에 현재 상태를 저장 → PCB2에서 상태를 복원 → P2의 실행 → P2에서 Interrupt or System Call 발생 → PCB2에 현재 상태를 저장 →PCB1에서 상태를 복원 → P1의 실행
위 과정에서 PCB의 저장과 복원을 통해서 유휴 상태에 들어간 프로그램을 다시 이어서 실행합니다. 그 과정에서 걸리는 시간들을 Context Switching Time 이라고 부르고, 이는 순수한 Overhead로 취급됩니다.
PCB란, Process Control Block의 약자로, OS가 Process를 관리하기 위한 테이블입니다.
PCB의 값에는 PID, Process State, PC, registers, Open file list ... etc 의 값이 저장되어 있습니다. (PID는 Unique Value)
PCB가 저런 값들을 전부 가지고 있기 때문에 문맥교환 과정에서 저장 및 복원을 실행합니다.
Context Switching Time은 기계마다 다르게 나타납니다.
그 이유로는, 기계마다 Memory Access Time이 다르게 나타납니다. (SSD, HDD의 차이로 인한 속도차이, HDD안에서도 부품에 따라 각 트랙 접근 시간이 다를 수 있음) 그리고, 레지스터의 개수도 다르고, 특수한 명령어의 존재유무에 따라 갈리기도 합니다. (PUSH A, POP A와 같이 1개의 명령어로 많이 처리가능한 특수 명령어)
'Computer Science > 운영체제' 카테고리의 다른 글
Critical Section (임계구역) (0) | 2024.01.19 |
---|---|
스레드 (0) | 2024.01.19 |
CPU Scheduling Algorithm (0) | 2024.01.18 |
Protection (보호) (0) | 2024.01.17 |
운영체제의 프로그램 관리 (0) | 2024.01.17 |