아무나개발하자

Context Switching 본문

OS

Context Switching

개발천재나천재 2023. 1. 12. 09:11

개념

알고 가자 : 하나의 프로세스안에는 하나 이상의 스레드를 가진다. 이유는 스레드가 CPU에서의 실행 단위이기 때문이다.

 

 

그럼 컨텍스트 스위칭이 왜 필요한가???

- 단순하다. 여러 프로세스 OR 스레드를 실행시키고 싶어서 하는거다. 

 

 

그럼 컨텍스트 스위칭은 언제 발생하는가???

- 주어진 time slice(quantum)을 다 사용했거나, IO작업을 해야하거나, 우선순위등등으로 발생을 하게된다.

 

멀티 태스킹 : 여러개의 프로세스나 스레드를 아주 작은 시간(quantum)으로 나눠서 실행을 하는것을 말한다. 그래서 사용자 입장에서는 여러프로그램이 마치 동시에 실행되는 듯한 느낌을 받는다.

 

 

그럼 컨텍스트 스위칭은 누구에 의해 실행되는가???

- OS 커널에 의해 컨텍스트 스위칭이 일어나게 된다.

 

 

컨텍스트 스위칭의 종류

1. 다른 프로세스끼리의 컨텍스트 스위칭 (Process Context Switching)

2. 같은 프로세스의 스레들끼리의 컨텍스트 스위칭 (Thread Context Switching)

 

 

둘의 공통점은??

- 프로세스가 실행되다가 어떤 이유(IO, 우선순위, quantum)가 발생해서 컨텍스트 스위칭이 일어나면 둘다 커널모드에서 실행이된다.

- CPU의 레지스터 상태를 교체한다.

(레지스터 : CPU내부에서 처리할 명령어나 연산의 중간 값 등을 일시적으로 기억하는 임시 기억장소입니다. 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억장소라고 생각하면 되며 일반적으로 현재 계산을 수행중인 값을 저장하는데 사용됩니다. 레지스터는 메모리 계층의 최상위에 위치하면서 가장 빠른 속도로 접근이 가능하게끔 설계되어있는 메모리입니다. )

 

 

둘의 차이점은??

- 프로세스 컨텍스트 스위칭은 가상 메모리 주소 관련 처리를 추가로 수행을 해야된다. 

 

 

같은 프로세스의 스레드간의 컨텍스트 스위칭이 일어났을때

스레드 컨텍스트 스위칭

- Process에 T1, T2가 있고 CPU 코어가 1개라고 가정할때, T1이 수행되다 IO에 의해 컨텍스트 스위칭이 발생했다고 하면, 커널모드로 진입을 하고 레지스터에 T1의 CPU상태를 저장하고, 실행할 T2의 CPU상태를 로드한다. 커널모드 종료 후 T2가 CPU에서 실행이 되다가 컨텍스트 스위칭이 발생하게 되면 커널모드로 진입을 하게되고, 이전과 동일하게 T2의 CPU상태를 레지스터에 저장하고, 실행할 T1의 CPU상태를 로드하게된다. 이러한 과정을 반복

- 여기서 중요한것은 컨텍스트 스위칭을 하는동안 CPU가 논다..... (CPU 효율이 낮아진다.)

 

자세한 절차

출처 : https://gaeunhan.tistory.com/70

 

 

서로다른 프로세스간의 컨텍스트 스위칭이 일어났을때

프로세스간의 컨텍스트 스위칭

차이가 발생하는 부분은 초록색 영역이다. 초록색 영역에서 MMU가 앞으로 실행하게될 프로세스의 메모리를 가리키도록하고 TLB는 비우게 된다는 것이다.

 

MMU : CPU가 메모리를 접근하는것을 관리하는 하드웨어 부품으로 가상 메모리 주소를 실제 메모리 주소로 변환한다.

TLB : 가상 메모리 주소를 물리적인 메모리 주소로 바꾸는데 속도를 높이기 위한 일종의 캐시이다.

 

여기서의 결론

- 스레드 컨텍스트 스위칭이 더욱더 빠르다 -> 메모리 주소 관련 처리를 하지 않기 때문이다.

 

컨텍스트 스위칭이 미치는 간접적인 영향

- 캐시(Cache)의 오염이 발생한다. 물론 스레드간의 컨텍스트 스위칭이 일어나면 캐시의 오염이 적어질 수 도 있지만 다른 프로세스간의 컨텍스트 스위칭이 발생하게 되면, 캐시에 내가 찾는 데이터가 없다. 따라서 메모리에서 가져와야됨으로 느려진다.

 

사용자 관점에서 컨텍스트 스위칭

- 그냥 순수한 오버헤드이다. -> 결론 : 컨텍스트 스위칭이 많이 일어나면 느려진다^^ -> 프로그램 많이 실행시키면 느려지는 원리이다.

 

 

 

 

 

출처 : https://about-myeong.tistory.com/35

 

[운영체제] MMU, page table, inverted page table, TLB

우선 MMU의 정의부터 보고 가면 메모리 관리 장치(Memory Management Unit, 줄여서 MMU)는 CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품이다. 가상 메모리 주소를 실제 메모리 주소로 변

about-myeong.tistory.com

출처 : https://www.youtube.com/watch?v=qnVKEwjG_gM&list=PLcXyemr8ZeoQOtSUjwaer0VMJSMfa-9G-&index=3 

출처 : https://coding-factory.tistory.com/352

 

[H/W] 여러가지 CPU 레지스터의 종류와 기능

레지스터란? 레지스터는 CPU내부에서 처리할 명령어나 연산의 중간 값 등을 일시적으로 기억하는 임시 기억장소입니다. 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억장소라고 생

coding-factory.tistory.com

 

'OS' 카테고리의 다른 글

동기화(synchronization)  (0) 2023.01.14
CPU bound, IO bound  (0) 2023.01.13
스레드 정리  (0) 2023.01.03
운영체제 정리 1탄  (0) 2023.01.02