Context Switching
CPU는 한번에 한가지일만 수행할 수 있다.
CPU가 하나의 프로세스를 실행하고 있는 상태에서 요청(인터럽트 , 시스템콜)에 의해 다른 프로세스를 실행해야할 때, 기존의 프로세스 상태를 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스 상태를 교체하는 것을 말한다.
- 인터럽트(Interrupt) : 예상치 못하게 외부에서 발생한 이벤트로 인해 프로세스를 잠시 중단하는 것
- 시스템콜(system call )? : 커널모드와 사용자 모드의 인터페이스 역할
Context Switching 과정
멀티 프로세스 상황에서 Running 상태인 프로세스 1과 Ready 상태인 프로세스 2가 존재할때,
그리고 이 둘의 프로세스는 인터럽트 요청에 의해 서로 상태가 전이된다고 가정한다.
(그림에서 idle은 프로세스가 실행하고 있지 않는 대기중인 상태를 말한다.)
- 프로세스1가 실행 중이다.
- 인터럽트나 시스템콜이 발생하면 PCB1에 프로세스 1의 상태를 저장한다.
- PCB2를 갖고와 실행시킨다.
- ( 이때 1는 레지스터를 2에게 양보해야한다. 즉 PCB2에서 데이터를 읽어 레지스터에 적재해야한다. )
- 인터럽트나 시스템콜이 발생하면 PCB2에 프로세스 2의 상태를 저장한다.
- 저장되어 있던 PCB1를 갖고와 실행시킨다.
- (다시 PCB1에서 데이터를 읽어 레지스터에 적재 )
- 이를 반복
Context Switching 단점
Context Switching 시 CPU는 아무일도 하지 못하는데, Context Switching 이 지속적으로 발생시 CPU에게 많은 부하를 가져오며 , 오버헤드가 발생해 성능이 떨어진다.
- 오버헤드란? :추가적으로 시간,메모리,자원이 사용되는 현상
PCB (Process Control Block)
PCB란 프로세스를 관리하려고 메타데이터를 저장해놓은 저장 장소이다. 하나의 PCB안에는 하나의 프로세스의 정보가 담겨 있다.
- pointer : 프로세스의 현재 위치를 저장한다.
- process state : 생성, 준비, 실행, 대기, 종료의 프로세스 상태를 저장한다.
- precess number: 프로세스의 유니크한 식별자 id를 말한다.
- program counter : 다음에 시행할 프로세스의 주소를 저장한다.
- registers : CPU 레지스터에 있는 정보를 말한다.
- memory limits : 운영체제에서 사용하는 메모리 관리 시트템에 대한 정보를 저장한다.
- open file lists: 해당 프로세스를 위해 열린 파일 목록을 저장한다.
또한 운영체제는 빠르게 PCB에 접근하기 위해 프로세스 테이블을 사용해 각각의 프로세스 PCB를 관리한다.
출처 및 참고
- https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system
- https://www.geeksforgeeks.org/process-table-and-process-control-block-pcb/