Computer/CS

문맥교환(Context Switching)

에린_1 2024. 3. 1. 23:35
728x90

문맥교환(Context Switching)

  • 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 이전의 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.
  • 이때 한 프로세스의 문맥은 그 프로세스의 프로세스 제어블록(PCB)에 기록되어 있다.

PCB(Process Control Block)

  • 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스 마다 유지하는 정보들을 담는 커널 내 자료구조로 커널 주소 공간의 data 영역에 존재한다.

PCB에 저장되는 내용들

  • Process 상태 : CPU를 할당해도 되는지 여부를 결정한다.
  • PC 값 : 다음에 수행할 명령어를 가리킨다.
  • CPU Register : CPU연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지 나타낸다.
  • CPU 스케줄링 정보
  • 메모리 관리 정보
  • 자원 사용 정보
  • 입출력 상태 정보
  • 이러한 Context 정보를 사용해 CPU를 선점하고 있던 프로세스는 프로세스 문맥을 PCB에 저장하게 되고, 새롭게 CPU를 할당받을 프로세스는 PCB로부터 예전에 저장했던 자신의 문맥을 실제 하드웨어로 복원하는 과정을 거친다.

문맥교환이 일어나는 과정

  1. 요청발생 : 인터럽트 또는 트랩에 의한 요청이 발생한다.
  2. PCB에 저장 : 운영체제는 현재 실행중인 프로세스의 정보를 PCB에 저장한다.
  3. CPU 할당 : 운영체제는 다음 프로세스 정보를 PCB에서 가져와 CPU를 할당한다.

쓰레드도 문맥교환이 발생할 수 있다. 쓰레드의 경우 TCB에 저장한다.

728x90

'Computer > CS' 카테고리의 다른 글

캐시(Cache)  (0) 2024.03.11
CPU 스케줄링 알고리즘  (0) 2024.03.02
데드락(Dead Lock)/교착상태  (1) 2024.03.02
세마포어/뮤텍스_Semaphore/Mutex  (0) 2024.03.01
묵시적 리스트(implicit list)  (0) 2024.02.18