PCB(Process Control Block)
개념
- 특정 프로세스에 대한 정보를 담고 있는 자료구조
- 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓은 곳
- 프로세스의 상태 관리와 문맥 교환을 위해 반드시 필요
- 프로세스가 생성될 때마다 고유의 PCB 생성, 완료되면 제거
- 그럼 어디에 있니..? 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재 or 커널 메모리(프로세스 테이블)
구조
- Pointer: 프로세스의 현재 위치를 저장하는 포인터 정보
- Process ID(Process Number): 프로세스 식별자
- Process State: 프로세스의 각 상태(생성, 준비, 실행, 대기, 종료)를 저장
- Program Counter: 프로세스를 위해 실행될 다음 명령어의 주소를 포함
- Register: CPU 레지스터에 있는 정보
- Memory Limits: 해당 프로세스가 사용 가능한 메모리 범위 정의
- List of Open Files: 프로세스를 위해 열린 파일 목록들
관리 방식
- 연결 리스트 방식(Linked List)
- Process가 생성되면 해당 Process의 PCB가 만들어지고 PCB List Head에 붙게된다.
- 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입, 삭제가 용이
Context Switching(문맥 교환)
개념
- CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 넘어갈 때 실행 중이던 프로세스를 PCB에 저장하고, 다음에 실행할 프로세스의 저장된 상태를 PCB에서 읽어 레지스터에 다시 적재하는 작업
- 프로세스의 정보는 PCB에 저장
과정
1. process P0가 실행되고 있다가 interrupt나 system call이 발생
2. 현재 진행 중인 process P0를 먼저 PCB0에 저장
3. PCB1에 저장되어 있던 process P1의 정보를 가져와서 실행
Overhead
- 문맥 교환하는 동안에는 작업을 수행할 수 없기 때문에, 오버헤드가 발생한다.
- 개선 가능..? 하드웨어 성능..? 캐시 사용 최적화..?
Q. PCB의 자료구조와 그 위치?
Q. 시스템 콜이 발생할 때마다 언제나 문맥 교환 발생?
A. 모드 변환(사용자 모드 → 커널 모드)시에는 동일한 프로세스 내에서 모드만 스위칭되기 때문에 컨텍스트 스위칭이 일어나지 않습니다.
Q. Context Switching이 미치는 영향?
A. 캐시 오염(Cache Pollution), 또 사용할 것이라고 예상을 하고 저장한 캐시가 의미 상실 => 오버헤드
Q. 문맥 교환의 오버헤드 해결 방법은?
A. 스레드를 이용한 부화 최소화, 스택 포인터 활용
참고
https://junsangkwon.tistory.com/45
[OS] PCB(Process Control Block)와 문맥 교환(Context Switching)
PCB (Process Control Block) 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는구조체입니다. 프로세스의 상태 관리와 문맥 교환(Context Switching)을 위
junsangkwon.tistory.com
https://yoongrammer.tistory.com/52
프로세스 제어 블록 (PCB: Process Control Block) 알아보기
프로세스 제어 블록 (PCB: Process Control Block) 알아보기 PCB(Process Control Bolock)는 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 자료구조입니
yoongrammer.tistory.com
https://velog.io/@klloo/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-PCB%EC%99%80-Context-Switching
[운영체제] PCB와 Context Switching
특정 프로세스에 대한 정보를 담고 있는 자료구조운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리하고 제어한다.프로세스가 생성될 때 마다 고유의 PCB가 생성되어 메인 메모
velog.io
'CS STUDY > 운영체제' 카테고리의 다른 글
Race Condition & Deadlock (0) | 2024.02.05 |
---|---|
CPU Scheduling (0) | 2024.02.04 |
IPC(Inter Process Communication) (0) | 2024.01.22 |
인터럽트(Interrupt) (1) | 2024.01.15 |
프로세스 & 스레드 (0) | 2024.01.15 |