728x90
문맥교환(Context Switching)
- 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 이전의 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.
- 이때 한 프로세스의 문맥은 그 프로세스의 프로세스 제어블록(PCB)에 기록되어 있다.
PCB(Process Control Block)
- 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스 마다 유지하는 정보들을 담는 커널 내 자료구조로 커널 주소 공간의 data 영역에 존재한다.
PCB에 저장되는 내용들
- Process 상태 : CPU를 할당해도 되는지 여부를 결정한다.
- PC 값 : 다음에 수행할 명령어를 가리킨다.
- CPU Register : CPU연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지 나타낸다.
- CPU 스케줄링 정보
- 메모리 관리 정보
- 자원 사용 정보
- 입출력 상태 정보
- 이러한 Context 정보를 사용해 CPU를 선점하고 있던 프로세스는 프로세스 문맥을 PCB에 저장하게 되고, 새롭게 CPU를 할당받을 프로세스는 PCB로부터 예전에 저장했던 자신의 문맥을 실제 하드웨어로 복원하는 과정을 거친다.
문맥교환이 일어나는 과정
- 요청발생 : 인터럽트 또는 트랩에 의한 요청이 발생한다.
- PCB에 저장 : 운영체제는 현재 실행중인 프로세스의 정보를 PCB에 저장한다.
- 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 |