wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Operating System

[운영체제] 컨텍스트 스위치(Context Switch)란?

Kick_snare 2022. 4. 10. 10:39
728x90

이번 시간에는 운영체제에서 중요한 Context Switch 컨텍스트 스위치에 관해 알아보도록 하자.

🤔 Context switch가 뭐야?

컨텍스트 스위치는 한 프로세스로 부터 CPU를 다른 프로세스로 넘겨주는 행동이다!

Context는 CPU가 해당 프로세스를 실행하면서 가지는 정보등을 뜻 하는데, 이를 다른 프로세스로 바꾸겠다는 뜻이다.

초당 100번에서 1000번까지 일어나는 매우 빈번한 동작이기 때문에 성능에 매우 민감하다!

💡 Context는?

PCB

Context는 앞서 말했듯이 CPU가 해당 프로세스를 실행하기 위한 정보들이다. 이러한 정보들은 프로세스의 PCB (process control block)에 저장된다. 그래서 switching이 발생하였을 때 이전에 하던 일을 이어서 할 수 있게 된다.

💰 Overheads

이러한 과정에서 아래와 같은 오버헤드가 발생한다.

  • CPU의 레지스터와 메모리맵의 정보를 PCB에 모두 저장하고, 불러온다
  • 메모리 캐시를 flusing하고 reloading한다
  • 다양한 테이블과 리스트를 갱신한다

💡 Context Switching의 과정

  1. Interrupt에 의해 요청이 발생한다
  2. 프로세스P0 실행 상태의 context을 PCB0에 저장
  3. 다음 프로세스 p0 의 context를 PCB1에서 가져와 CPU에 할당

위 일련의 과정을 반복적으로 수행함으로 Context switch 가 발생한다.

다음 프로세스는?

context switch로 넘어가는 다음 프로세스는 어떻게 결정할까? 이는 유저 프로세스가 결정하지 않고 운영체제의 스케줄러가 어떠한 알고리즘으로 결정하게 된다.

 

 

 

728x90