본문 바로가기
front-end

[운영체제] 운영체제 컨텍스트 스위칭 (Context Switching) 정리

by 현제☺️ 2023. 3. 9.
반응형

◈컨텍스트 스위칭(context switching)이란?

멀티 태스킹등 프로세스 스위칭이 필요할 때, 실행할 프로세스를 cpu에 교체해 주는 기술이다. 쉽게 말해 여러 개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것이다.

 

▶context란?

사용자와 다른 사용자, 사용자와 시스템 또는 디바이스 간의 상호작용에 영향을 미치는 사람, 장소, 개체 등의 현재 상황(상태)을 규정하는 정보들을 말한다.

OS에서의 context는 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들이다. context는 프로세스의 PCB(process control block)에 저장된다.

 

PCB(process control block)

프로세스가 실행중인 상태를 캡처/구조화해서 저장하는 공간이다. 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료 구조를 말한다. 그 정보에는 프로세스 번호, 포인터, 프로세스 상태, 레지스터, 프로그램 카운터(코드위치) 등이 있다.

PCB(process control block)

컨텍스트 스위칭 세부 동작

1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서, 메인메모리에 저장

2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보(PC, SP)를 CPU의 레지스터에 넣고, 실행

  *PC: 다음 실행할 코드 주소 / SP: 스택 최상단 주소

컨텍스트 스위칭 세부 동작

▶컨텍스트 스위칭 단점

컨텍스트 스위칭이 잦게 발생할수록 오버헤드(overhead) 비용이 발생하여 성능이 떨어진다. (여기서 오버헤드란 사용된 시간과 사용된 메모리의 양을 말한다) 실행 중인 프로세스 상태를 PCB에 저장하고 실행할 프로세스 상태를 PCB에서 가져올 때 CPU는 아무런 일도 하지 못하기 때문이다. 그래서 아무런 일도 하지 못하게 되는 상황이 잦을수록 성능 저하로 이어지는 것이다.

 

▶스레드 스위치 vs 프로세스 스위치

두가지 방법 모두 컨텍스트 전환을 수행하기 위해 운영 체제 커널에 제어를 넘기는 것을 포함하지만 스레드 스위치와 프로세스 스위치의 주요 차이점은 스레드 스위치 동안 가상 메모리 공간이 동일하게 유지되지만 프로세스 스위치 동안에는 동일하지 않다는 것이다. 스레드는 컨텍스트 스위칭 될 때 text, deta, heap 영역은 프로세스 것이기 때문에 자신의 PCB에는 스택 및 간단한 정보만 저장하고, 프로세스는 공유하는 데이터가 없으므로 임시 저장소인 캐시 메모리가 지금껏 쌓아놓은 데이터들이 사라지고 새로 데이터를 쌓아야 하기 때문에 스레드 콘텍스트 스위칭이 빠르다.

728x90
반응형

댓글