특정 프로세스에 대한 정보를 담고 있는 자료구조
운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리하고 제어한다.
프로세스가 생성될 때 마다 고유의 PCB가 생성되어 메인 메모리에 유지되고, 프로세스가 완료되면 제거된다.
PCB는 프로세스의 중요한 정보를 포함하고 있으므로 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재한다.
CPU는 프로세스의 상태에 따라서 교체 작업이 이루어진다.
이 때 교체되는 프로세스의 상태 값을 PCB에 저장해두었다가 앞으로 다시 수행할 때 사용하는 것이다.
연결 리스트 방식으로 관리된다.
따라서 삽입 삭제가 용이하며 프로세스가 생성 되면 해당 PCB가 생성되고, 프로세스가 완료되면 제거된다.
CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 넘어갈 때 지금까지의 프로세스 상태를 저장하고, 새 프로세스의 저장된 상태를 다시 적재하는 작업
멀티태스킹
실행 가능한 프로세스들이 운영체제의 스케줄러에 의해 조금씩 번갈아가며 수행되는 것을 말한다.
번갈아 가며 프로세스가 CPU를 할당받는데, 이 때 문맥교환이 이루어진다.
인터럽트 핸들링
인터럽트가 발생하면 문맥교환이 이루어진다.
사용자와 커널모드 전환
필수는 아니지만 운영체제에 따라서 발생할 수 있다.
문맥교환에 소요되는 시간과 메모리를 의미한다.
문맥교환이 발생하면 시간과 메모리가 소요되므로 잦은 문맥교환은 성능 저하를 가져온다.
I/O 이벤트가 발생했을 때, 해당 이벤트가 끝날 때 까지 기다리면 CPU를 점유하고 있어도 아무런 작업도 할 수 없기 때문에 CPU가 낭비된다.
때문에 오버헤드를 감수하면서 기존 프로세스를 새 프로세스로 바꾸는 것이 더 효율적이다.
또 멀티태스킹에서 시간 할당량이 적어지면 문맥 교환의 수와 오버헤드가 증가하지만 동시에 더 많은 프로세스를 수행할 수 있고, 시간 할당량이 커지면 문맥 교환의 수와 오버헤드는 감소하지만 더 적은 프로세스를 동시에 수행할 수 있다.
P0
프로세스가 인터럽트를 받으면서 PCB0
에 P0
프로세스의 상태 정보를 저장한다.P1
프로세스의 PCB1
에서 P1
프로세스의 상태 정보가 CPU에 재로딩 된다.P1
프로세스를 일정시간 수행한다.P1
프로세스가 인터럽트를 받으면서 PCB1
에 P1
프로세스의 상태 정보를 저장한다.PO
프로세스의 PCB0
에서 P1
프로세스의 상태 정보가 CPU에 재로딩 된다.P0
프로세스를 일정시간 수행한다.Reference
https://junhyunny.github.io/information/operating-system/process-control-block-and-context-switching/
https://velog.io/@yanghl98/OS운영체제-PCB와-Context-switching
https://spurdev.tistory.com/13