Skip to content

Latest commit

 

History

History
81 lines (47 loc) · 3.66 KB

OS_Context_Switching.md

File metadata and controls

81 lines (47 loc) · 3.66 KB

컨텍스트 스위칭

컨텍스트 스위칭?

  • CPU 코어에서 실행중이던 프로세스/스레드 가 다른 프로세스/스레드 로 교체되는 것이다.

  • 오늘날의 프로세스는 하나 이상의 스레드를 가지고 있다. 스레드는 CPU 코어에서 실행되는 단위이기 때문이다.

프로세스에서 프로세스로 교체된다?

  • 어떤 프로세스에서 실행되던 스레드가 다른 프로세스의 스레드로 교체되는 것을 말한다.

컨텍스트?

  • 프로세스/스레드 의 상태

컨텍스트 스위칭은 왜 필요한가?

  • 여러 프로세스/스레드 를 동시에 실행시키기 위해서 컨텍스트 스위칭은 필요하다.

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

  • 주어진 Time Slice(Quantum) 를 다 사용했거나, I/O 작업 을 해야하거나, 다른 리소스 를 기다려야 하거나, 인터럽트 가 걸렸다던지 기타 등등의 이유가 있다.

멀티 태스킹 시스템에서 컨텍스트 스위칭

  • 아주 짧은 시간동안 프로세스/스레드 가 번갈아가면서 실행한다.
  • 여러 프로그램이 동시에 실행된 것 같은 느낌을 준다.

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

  • OS 커널(Kernel) 에 의해 실행되며, OS 커널(Kernel) 은 각종 리소스를 관리/감독하는 역할을 한다.
  • OS 커널(Kernel) 은 처음부터 끝까지 총괄한다.
  • 누가 트리거 시키는가? 발생시키는가? 헷갈리면 안된다.

프로세스 컨텍스트 스위칭

  • 커널 모드에서 실행한다.
  • CPU 레지스터 상태를 교체한다.
    • 레지스터? 각종 명령어들을 수행하기 위한 데이터를 저장하는 존재

스레드 컨텍스트 스위칭

  • 커널 모드에서 실행한다.
  • CPU 레지스터 상태를 교체한다.
    • 레지스터? 각종 명령어들을 수행하기 위한 데이터를 저장하는 존재

프로세스와 스레드 컨텍스트 스위칭 차이점

  • 프로세스 컨텍스트 스위칭은 가상(Virtual) 메모리 주소 관련 처리를 추가로 실행한다.

같은 프로세스에서 발생하는 스레드 간의 컨텍스트 스위칭

스크린샷 2023-06-06 오후 4 34 14

서로 다른 프로세스 간에 발생하는 컨텍스트 스위칭

스크린샷 2023-06-06 오후 4 39 25
  • 초록색 빗금친 영역에서 메모리와 관련된 처리가 일어난다.
  • 서로 다른 프로세스는 독립적인 메모리를 가지고 있기 때문이다.

스레드 컨텍스트 스위칭이 더 빠른 이유?

  • 같은 프로세스의 스레드들은 같은 메모리 공간을 공유하기 때문에 메모리 주소 관련 처리를 하지 않는다. 따라서 스레드 컨텍스트 스위칭이 더 빠르다.

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

  • 캐시(Cache) 오염(Pollution)
  • 서로 다른 데이터들이기 때문에 캐시에 있는 데이터가 오염이된다.

유저(애플리케이션) 관점에서 컨텍스트 스위칭이란?

  • 순수한(Pure) 오버헤드(Overhead)
  • CPU를 잡아먹는 간접비용이다.
  • CPU는 아무 작업을 하지 않기 때문에 낭비가 된다.
  • 그래서 컨텍스트 스위칭이 많이 일어나는 것은 좋은 것이 아니다.

참고