context switching이란?
context는 프로세스의 상태 정보를 의미하며
CPU 혹은 코어에서 실행 중이던 (프로세스 / 스레드) 가 다른 (프로세스 / 스레드)로 교체되는 것으로
여러 프로세스 및 스레드를 동시에 실행시키기 위해서 필요하다.
context switching이 발생하는 조건
주어진 time slice(quantum)를 전부 사용했거나, IO 작업을 해야하거나, 다른 리소스를 기다려야 하는 등의 이유로 발생하게 됨
context switching은 누구에 의해 실행되는가??
OS kernel : 운영체제의 핵심ontext switching이란?
CPU 혹은 코어에서 실행 중이던 (프로세스 / 스레드) 가 다른 (프로세스 / 스레드)로 교체되는 것으로
여러 프로세스 및 스레드를 동시에 실행시키기 위해서 필요하다.
context switching이 발생하는 조건
주어진 time slice(quantum)를 전부 사용했거나, IO 작업을 해야하거나, 다른 리소스를 기다려야 하는 등의 이유로 발생하게 됨
context switching은 누구에 의해 실행되는가??
OS kernel : 운영체제의 핵심부로 각종 리소스를 관리 및 감동하는 역할을 수행함
리소스 : CPU, 메모리, 파일, 네트워크, 입출력 장치, ...
context switching은 어떠한 과정으로 일어날까??
- 같은 프로세스의 스레드간의 스위칭 ( thread context switching )
- 다른 프로세스간의 스위칭 ( process context switching )
둘의 공통점은?
- 커널 모드에서 실행된다.
- 컴퓨터에 있는 리소스를 다루어야 하는 상황이 오면, 프로세스가 직접 리소스에 접근하는 것이 아니라 운영체제를 통해 접근하게 되고 통제권이 kernel로 넘어간 후 커널 모드에 진입하게 됨
- CPU의 레지스터 상태를 교체한다.
- CPU 레지스터 : CPU 내에 위치한 기억장치로 각종 명령어를 수행하기 위해 필요한 여러 데이터를 저장하는 존재
둘의 차이점은?
thread context switching의 경우, 스레드간 같은 메모리를 참조하고 있기 때문에 가상 메모리 주소에 관련한 처리를 수행할 필요가 없지만,
process context switching의 경우 가상 메모리 주소 관련 처리를 추가적으로 수행하며, 이에 따른 시간적 비용이 추가된다.
메모리 주소 관련 처리 과정
- MMU가 새로운 프로세스의 주소체계를 바라볼 수 있도록 수정한다.
- 가상 메모리 주소와 실제 메모리 주소의 매핑 정보를 저장하여 캐시 역할을 수행하는 TLB를 완전히 비워준다
MMU와 TLB
- MMU ( Memory Manage Unit ) : 가상 주소를 물리 주소로 변환하는 하드웨어, MMU는 페이지 테이블을 참조하여 변환을 수행
- TLB ( Translation Lookaside Buffer ) : 가상 주소를 물리 주소로 변환할 때 자주 사용하는 페이지를 캐시해두는 고속 메모리. MMU가 주소 변환을 빠르게 하기 위해 TLB에 저장된 매핑 정보를 먼저 확인하며, TLB에 변환 정보가 있으면 페이지 테이블에 접근하지 않고 바로 변환, 이를 TLB hit 이라고 함
thread context switching
- T1이 실행되는 중, 자신의 time slice를 전부 사용했거나, IO 작업이 일어났을 때 context switching이 발생하고 kernel 모드에 진입
- T1에 있던 상태 정보를 CPU의 레지스터에 저장
- T2의 상태 정보를 불러옴
- 통제권이 유저 모드(T2)로 넘어오게 됨
- 반복
process context switching
process context switching 역시 같은 방식으로 작동하지만 유저 모드 진입 이전 메모리 주소 관련 처리를 진행하게 됨
- process context switching 의 경우, kernel은 프로세스 간 메모리 주소 공간 전환을 포함하여, 여러 작업을 수행해야 하기 때문에, 추가적인 오버헤드가 발생한다.
- thread context switching 의 경우, 같은 프로세스 내에서 context swtiching이 이뤄지므로, 메모리 주소 공간 전환이 필요하지 않아서 상대적으로 더 빠르다.
유저( Application ) 관점에서 context swtiching이란??
순수한 오버헤드 ( Pure Overhead )
context switching은 유저가 실행한 프로그램( Application )과는 직접적인 관련이 없는 작업이며, application의 입장에서는 자신이 CPU를 사용하고 있지 않는 동안, 운영체제가 다른 프로세스를 실행시키는 것으로, 이때 프로세스 전환에 소요되는 시간은 애플리케이션에서 필요로 하는 작업을 처리하는 시간이 아니기 때문
즉, 내가 실행한 프로그램의 동작과는 전혀 상관 없는 '간접 비용'
오버헤드가 왜 순수한 비용일까??
context switching의 경우 필수적인 운영체제 기능이지만, 유저 관점에서는 실제 작업이 전혀 수행되지 않는 시간이기도 함
CPU가 프로세스를 전환하는 동안 애플리케이션은 그 전환 작업 자체에 대한 이득이 없고, 그저 CPU가 준비되는 시간을 기다리는것 뿐
'Computer Science > Operating System' 카테고리의 다른 글
캐시매핑 (0) | 2024.10.31 |
---|---|
캐시히트와 캐시미스 (0) | 2024.10.30 |
PCB와 Context Switching (2) | 2024.10.23 |
메모리 계층 구조 (0) | 2024.10.10 |
프로세스와 스레드 (0) | 2024.09.19 |