PCB(Process Control Block)란?
PCB는 프로세스 제어 블록을 지칭하는 말입니다.
모든 프로세스는 실행을 위해 CPU를 필요로 합니다. 하지만 CPU자원은 한정되어 있기 때문에 모든 프로세스를 동시에 실행할 수는 없습니다. 그렇기 때문에 돌아가면서 프로세스들을 실행해야 되는데, 이 때 각 프로세스들의 실행순서와 자원 배분을 위해 운영체제는 PCB를 사용하게 됩니다.
메모리는 커널 영역과 사용자 영역으로 나뉘어 지는데, PCB는 커널 영역에 생성됩니다. PCB는 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기됩니다. PCB에는 아래와 같은 정보가 담기게 됩니다.
- 프로세스 ID (PID)
- 레지스터 값
- 프로세스 상태
- CPU 스케줄링 정보
- 메모리 관리 정보
- 사용한 파일과 입출력 장치
PCB가 이러한 정보들을 담고 있기 때문에 다른 프로세스를 작업하고 기존에 작업하던 프로세스를 불러와서 처리할 수 있게 됩니다. 이렇게 프로세스를 번걸아가며 실행하는 것을 Context Switching이라고 합니다.
Context Switching(문맥 교환)
하나의 프로세스가 다른 프로세스로 실행 순서가 넘아가면, 이전에 실행 되던 프로세스의 레지스터 값과 메모리 정보와 같은 정보들을 백업해둬야 합니다. 그래야 다시 실행 순서가 돌아왔을 때 이어서 처리 할 수 있습니다.
이러한 하나의 프로세스를 수행하기 위한 기억해야될 정보를 문맥(Context)라고 합니다. 프로세스 문맥은 해당 프로세스의 PCB에 기록되어 있습니다.
Context Switching은 기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하기 위한 문맥을 PCB로 부터 복구하는 과정을 뜻합니다.
Context Switching의 작동 순서를 자세히 살펴보겠습니다.
위의 그림을 보시면 왼쪽에 프로세스 P0이 오른쪽에 프로세스 P1이 위치해 있습니다.
P0을 실행하다가 시스템 콜이나 인터럽트가 발생합니다.
P0에 해당하는 정보들을 PCB0에 저장하고 PCB1을 가져와서 P1을 실행합니다.
이과정에서 idle이라는 유휴 상태가 존재하게 되는데 기존 프로세스의 PCB를 저장하고 실행할 프로세스의
PCB를 가져오는 과정에서 시간 소요가 발생하기 때문입니다.
PCB1을 가져오면 P1을 실행하고 이 과정이 계속 반복되며 문맥교환이 일어나게 됩니다.
이상으로 PCB와 Context Switching에 대해 살펴봤습니다.
글 읽어주셔서 감사합니다!
'CS > 운영체제' 카테고리의 다른 글
가상 메모리란? (4) | 2023.05.07 |
---|---|
연속 메모리 할당의 문제점은? (0) | 2023.05.03 |
교착 상태 (0) | 2023.04.07 |
프로세스 동기화란 (0) | 2023.03.15 |
프로세스와 스레드에 대하여 (0) | 2023.03.01 |