컴퓨터 사이언스

문맥 교환(Context Switching)

kagan-draca 2024. 11. 3. 23:33

문맥 교환(Context Switching)

 

프로세스 상태

컨텍스트란 프로세스의 상태를 의미하며 CPU, 메모리의 상태를 의미합니다.

 

즉, 문맥 교환(Context Switching)이란 cpu(or 코어)에서 실행 중이던 프로세스(or 스레드)가
다른 프로세스(or 스레드)로 교체되는 것을 의미 합니다.

 

문맥 교환(Context Switching) 발생 조건

  • 실행(Running) 상태의 프로세스가 Time Slice(제한 시간이라고 생각하면 됩니다)을 다 사용할 경우
  • I(input)/O(output) 작업을 해야할 때 (이유 : I/O 작업 중에는 CPU가 작업을 할 수 없기 때문에)
  • 다른 리소스를 기다릴 때(위와 마찬가지 이유)
  • 현재 CPU가 작업하는 프로세스 보다 높은 우선 순위를 가진 프로세스가 있을 경우
  • 인터럽트(Interrupt)(예외 상황이 발생할 경우)가 발생할 경우 

에 발생하게 됩니다.

 

정리하자면 :

 

CPU가 프로세스의 작업을 수행 중 우선 순위가 높은 프로세스가 있거나, 작업을 수행할 수 없는 상황이 발생할 경우 CPU의 낭비를 방지하기 위해 우선 순위가 높은 프로세스나 다른 프로세스를 먼저 작업하겠다는 의미 입니다.

 

문맥 교환(Context Switching) 과정

 

실행 중이던 프로세스 P1의 레지스터 정보인 

  • 레지스터 : 현재 프로세스의 연산 데이터나 상태 정보
  • 프로그램 카운터(PC) : 현재 실행 중인 명령어의 위치를 저장해 중단된 위치에서 다시 시작할 수 있게 해준다.
  • 스택 포인터(SP) : 함수 호출과 변수 저장을 위한 스택 메모리 위치를 추적해 함수 실행 상태를 이어갈 수 있도록 해준다.

등의 상태를 PCB1에 저장합니다. 그 후, PCB2에 저장 돼 있던 프로세스 P2의 레지스터, 프로그램 카운터(PC), 스택 포인터(SP)를 꺼내 읽어 온 후 프로세스 P2의 작업을 이어 작동 시킵니다. 만약, 프로세스 P2가 문맥 교환(Context Switching)이 이뤄져야 한다면, 위의 과정을 반복하게 됩니다.

 

프로세스와 스레드의 문맥교환 공통점

커널 모드(mode bit가 0이다.)(user mode는 mode bit가 1)이다.

일반적인 프로세스는 User Mode에서 동작 중이며,

 

프로세스가 문맥 교환(Context Swiching)을 수행하기 위해서는 CPU의 PCB(program control block) 레지스트를 필요로(CPU 자체는 하드웨어) 합니다. 하지만, User Mode는 시스템의 특정 하드웨어 자원( ex 메모리, CPU 레지스터)에 접근할 수 없습니다. 그래서 System Call을 통해 필요한 요청을 Kernel 모드로 요청을 보내게 되고 Kernel 모드는 해당 요청이 정상적인지 판단하에  System Call로 권한을 User Mode에 제공해 해당 프로세스는 CPU의 PCB를 사용할 수 있게 됩니다.

 

프로세스와 스레드의 문맥교환 차아점(중요)

스레드 문맥 교환(Thread Context Switching)은 같은 프로세스 내의 스레드(Thread)의 문맥 교환이 일어나 같은 메모리를 공유하지만,

 

프로세스 문맥 교환(Process Context Switching)은 프로세스 간의 메모리가 다르기 때문에 새로운 프로세스의 구조체계인 MMU(Memory Management Unit)을 바라보게 해야하고, 가상 메모리 주소와 물리 주소의 매핑 정보를 가지고 있는 캐쉬인 TLB(Translation Lookaside Buffer)도 완전히 비워줘야 합니다.

 

'컴퓨터 사이언스' 카테고리의 다른 글

프로세스와 스레드  (0) 2024.11.03
메모리  (2) 2024.10.07
CPU란?  (0) 2024.10.06