어 나 갱수.

[운영체제] 컨텍스트 스위칭(Context Switching) 🤚 본문

카테고리 없음

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

김경수 2024. 1. 20. 14:51
728x90

컨텍스트 스위칭이란 CPU에서 실행 중인 한 프로세스를 다른 프로세스로 넘겨주는 행동을 의미합니다.

말 그대로 컨텍스트(Context)를 다른 컨텍스트로 교체한다는 의미를 가지고 있습니다.

여기서 컨텍스트는 CPU가 해당 프로세스를 실행하면서 가지고 있는 정보를 의미합니다. 실행하면서 필요한 정보라고 정리하면 좋을 거 같습니다. 즉, 한 프로세스가 실행 중인 상태에서 다른 프로세스로 교체하기 위해 현재 컨텍스트를 저장하고, 다음 실행할 프로세스의 컨텍스트를 읽어오는 작업을 말합니다!

 

컴퓨터를 사용하다 보면 여러 개의 프로그램을 띄어놓고 작업을 해본 적이 있을 겁니다. 음악 앱에서 음악을 틀어놓고, 개발도 하고, 구글에 검색 등등 이렇게 여러 가지 프로그램을 한 번에 사용해 본 경험이 있을 텐데 이 모든 상황에서 컨텍스트 스위칭은 발생하고 있습니다.

 

PCB

위의 설명에서는 컨텍스트 스위칭이 일어날 때 현재 실행 중인 프로세스의 작업 위치를 유지한 채 실행할 수 있어야 한다고 하는데, 그럼 컴퓨터는 어떻게 프로세스의 작업 위치와 상태를 알고 유지하고 있는 걸까?

 

운영체제에는 프로세스를 저장하는 별도의 공간이 존재합니다 그 공간을 PCB라고 부릅니다.

 

컨텍스트 스위칭은 커널이라는 곳에서 일어나게 되는데 그 커널이라는 곳에 PCB라는 메모리 공간을 둡니다. PCB는 각 프로세스 하나가 실행될 때마다 하나씩 생성됩니다. 그리고 프로세스의 작업 위치 , 상태등을 저장합니다.

 

컨텍스트 스위칭의 동작 과정

1. 현재 실행 중인 프로세스의 상태를 저장

현재 실행중인 프로세스의 상태와 작업 위치등을 PCB에 저장한다.

 

2. 다음으로 실행될 프로세스의 상태를 복원

앞으로 실행될 프로세스의 상태를 PCB로부터 복원한다.

 

3. 실행중인 프로세스 교체

현제 실행중인 프로세스를 종료시키고 다음 프로세스로 교체된다.

 

하나의 컴퓨터에서 동시에 프로그램을 여러 개 실행시키면 우리가 보기에는 동시에 실행하고 있는 거처럼 느끼지만 하지만 실제로 컴퓨터에서는 동시에 실행시키는 것이 아니라 아주 미세한 시간 단위로 끊어서 돌아가면서 프로세스가 실행되고 있는 것이다.

 

컨텍스트 스위칭은 컴퓨터에서 아주 자주 일어나는 현상이다. 그러나 컨텍스트 스위칭이 자주 발생하게 되면 오버헤드가 일어날 수가 있다.

오버헤드 현상을 막기 위해서는 컨텍스트 스위칭이 아주 빠르게 이루어져야 합니다. 그래서 컨텍스트 스위칭은 어셈블리어로 작성되어 있습니다. C언어와 같은 고급언어보다 어셈블리어가 컴퓨터가 읽는 속도가 더 빠르기 때문입니다.

  

프로세스 컨텍스트 스위칭 / 스레드 컨텍스트 스위칭

1) 공통점 

  • 커널에서 실행된다.
  • CPU에서 상태를 변경한다.

2) 차이점

  • 프로세스 컨텍스트 스위칭
    • 다른 프로세스에 있는 스레드를 컨텍스트 스위칭한다.
  • 스레드 컨텍스트 스위칭
    • 같은 프로세스 내에 있는 스레드끼리 컨텍스트 스위칭을 한다

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

 

 

스레드 콘텍스트 스위칭이 일어나게 된다면 프로세스가 같기 때문에 같은 PCB 메모리를 공유하게 될텐데 그렇기 때문에 메모리 관련 처리를 추가로 할 필요가 없습니다.

 

프로세스 컨텍스트 스위칭이 일어나면 프로세스가 다르기 때문의 컨텍스트를 저장하는 PCB메모리도 달라서 컨텍스트 스위칭이 일어날때마다 각각 저장할 메모리를 바라보도록 해주는 추가 작업을 해줘야 합니다. 이 작업을 하지 않으면 프로세스2에 저장되야 하는 컨텍스트가 프로세스1에 저장 될 수 있습니다. 그리고 TLB라는 가상 메모리와 실제 물리적인 메모리 주소의 매핑 정보를 가지고 있는 캐시 역할의 TLB도 비워줘야 합니다.

 

컨텍스트 스위칭의 영향

컨텍스트 스위칭이 일어나면서 캐시 오염(Cache Pollution)이라는 간접적인 영향이 발생합니다.

 

컨텍스트 스위칭이 일어나면, 또 사용할 거라고 예상한 값들을 캐시에 저장해놓은 캐시들이 의미가 없어지게 됩니다.

컨텍스트 스위칭이 일어난 이후에 캐시에 접근을 하면 이전 프로세스에서 사용한 정보들이 있기 때문입니다. 이러한 이유로 캐시에 접근해서 데이터를 가져오는 것이 불가능해집니다. 

 

728x90