하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업
프로세스의 문맥(context)은 PCB에 저장된다. 인터럽트(interrupt)가 발생하면 시스템은 현재 수행 중인 프로세스의 문맥을 저장하고, 이후 해당 프로세스가 재개될 때 복원한다.
- CPU 코어를 다른 프로세스로 교환
- 현재 프로세스의 상태를 저장
- 다른 프로세스의 상태를 복원하는 작업(task)를 말한다.
교환 시점
- 멀티태스킹
- 인터럽트 핸들링
- 사용자 모드와 커널 모드 간의 전환
- 준비 → 실행, 실행 → 준비, 실행 → 대기 전환 시 문맥 교환 발생
교환 필요한 상황
교환 과정
문맥 교환과 오버헤드
문맥을 교환하는 동안에는 유용한 작업을 수행할 수 없기 때문에, 문맥 교환 시간은 일종의 오버헤드라고 할 수 있다.
복잡 명령어 집합 컴퓨터(Complex Instruction Set Computer, CISC)와 축소 명령어 집합 컴퓨터(Reduced Instruction Set Computer, RISC, 리스크)는 각각 장단점이 있는데, 문맥교환 측면에 보면 RISC의 경우 레지스터의 용량이 CISC보다 상대적으로 크기 때문에 좀 더 큰 오버헤드가 발생한다.
해결 방안
문맥교환이 아닌 경우
프로세스가 실행 상태일 때 시스템 콜이나 인터럽트가 발생하면 CPU의 제어권이 운영체제에게로 넘어와 원래 실행중이던 프로세스의 업무를 잠시 멈추고 운영 체제 커널의 코드가 실행된다 이 경우에 CPU의 실행 위치 등 프로세스의 문맥 중 일부를 PCB에 저장하게 되지만 이러한 과정을 문맥 교환이라고 하지 않는다.
이는 하나의 프로세스가 사용자 모드에서 실행되다가 커널모드로 실행 모드만 바뀌는 것일 뿐 CPU를 점유하는 프로세스가 다른 사용자 프로세스로 변경되는 과정이 아니기 때문이다.
타이머 인터럽트가 발생하거나 프로세스가 I/O 요청 시스템을 하여 봉쇄 상태에 들어가는 경우에는 문맥 교환이 일어나지만, 그 밖의 인터럽트나 시스템 콜 발생시에는 문맥 교환이 일어나지 않고 모드만 변경된다.
즉 사용자 모드에서 커널 모드로 바뀌어 시스템 콜이나 인터럽트 처리를 하고 다시 동일한 프로세스의 사용자 모드로 되돌아와 이전에 수행하던 작업을 계속 수행할 뿐이다.
출처 : 문맥교환(context switching)과 오버헤드(overhead) (tistory.com)
[운영체제] 문맥교환(Context Switching) — 박연호의 개발 블로그 (tistory.com)
'CS > OS & 하드웨어' 카테고리의 다른 글
시스템 구조와 프로그램 실행 1 (0) | 2023.03.19 |
---|---|
PCB(Process Control Block)란? (0) | 2022.12.28 |
캐시가 동작하는 아주 구체적인 원리 (0) | 2022.12.26 |
캐시 히트율/메모리 적중률 (Hit Rate) (0) | 2022.12.26 |
페이징(Paging)이란? 페이지 테이블이란? (0) | 2022.12.16 |