Next-Squad/Interview-Question

[운영체제] 5. context switching이란?

CMSSKKK opened this issue · 1 comments

context switching이란?

  • PCB에 저장되는 정보는?

키워드

PCB, Thread Context Switching, Process Context Switching, TLB

Context switch는 CPU를 점유하고 있던 프로세스에서 다른 프로세스로 점유권을 넘겨주는 과정을 뜻합니다.

이 과정에서 OS는 CPU를 점유하고 있던 프로세스의 상태를 그 프로세스의 PCB에 저장합니다.
그리고 새롭게 CPU를 점유하게 된 프로세스의 PCB를 읽어옵니다.
System call이나 Interrupt가 발생한다고 해서 반드시 context switch가 일어나는 것은 아닙니다.

프로세스의 상태를 저장하거나 읽어오는 정보를 가진 PCB에는 OS가 관리하기 위해서 필요한 정보인,
Process state, PID(프로세스 아이디), scheduling information, priority가 있습니다.

또한 CPU 수행과 관련한 하드웨어 값으로 PC(Program Counter), register가 있습니다.
PC는 다시 cpu를 점유했을때, 실행할 명령어의 주소입니다.

그리고 메모리와 관련한 정보로 code, data, stack의 위치 정보를 가지고 있습니다.

또한 이 프로세스를 실행하기 위해 열린 파일들의 목록을 가지고 있습니다.

OS는 프로세스 테이블을 활용해서 PCB에 빠르게 접근합니다.

하지만 프로세스가 싱글 스레드가 아니고, 멀티 스레드라면 PCB 내부적으로 구조를 다르게 해석할 수 있습니다.

스레드마다 PC, registers, stack을 각자 가지게 됩니다.
그리고 code와 data, OS가 관리하는 정보는 다른 스레드들(한 프로세스안에서)과 공유하게 됩니다.

멀티 스레드 환경이라면, 스레드에서도 context switch가 일어납니다.
Thread Context Switch(TCS)는 Process Context Switch(PCS)와 달리 메모리 주소를 변경하지 않기 때문에 더 효율적입니다.

반면에 PCS가 일어나면 메모리 주소를 변경하는 것과 동시에 가상메모리와 물리적메모리 주소 변환하는 과정에서 속도를 높이기위한 용도의 TLB(하드웨어 캐시)를 flushing하기 때문에 오버헤드가 더 커집니다

PCS가 일어나면 TLB 전체를 flushing해야하지만, Address Space Identifier(ASID) 정보를 통해 flushing 되는 페이지를 줄일 수 있습니다.

References

  • 운영체제 강의 (반효경 교수님)
  • 운영체제 공룡책