[OS] 프로세스 PCB와 문맥교환

프로세스

프로그램과 프로세스의 비교

프로그램 은 어떤 데이터를 사용하여 어떤 작업을 할지에 대한 명령어 리스트로 이루어진 파일로, 하드디스크에 저장되어 있다. OS가 이 프로그램에 메모리를 할당하고 PCB(프로세스 제어 블록)을 만드는데, 이것이 프로세스 이다. 프로그램이 저장장치에 저장된 정적인 상태이고, 프로세스는 프로그램 실행을 위해 메모리에 올라온 동적인 상태이다.

프로세스 = 프로그램 + PCB


PCB(Process Control Block, 프로세스 제어 블록) 구성

모든 프로세스는 고유의 PCB를 가진다. 이 PCB는 프로세스 생성 시 만들어지고 프로세스가 실행을 완료하면 폐기된다.

PCB 구조


프로세스의 상태

프로세스의 상태


Context Switching(문맥 교환)

CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업이다. 실행 상태에서 나가는 PCB에 지금까지의 작업 내용을 저장하고, 실행 상태로 들어오는 PCB의 내용으로 CPU가 다시 설정된다. 이렇게 두 프로세스의 PCB를 교환하는 작업이 Context Switching이다.

문맥교환 과정

이 그림은 문맥 교환 P1->P2, 다시 문맥 교환 P2->P1 의 과정을 보여준다.

Context Switching이 일어나는 경우는 다양하다. 일반적으로 한 프로세스가 자신에게 할당된 시간을 모두 사용할 때 발생하고, 인터럽트 시에도 발생한다.