728x90
PCB 정의
- 운영체제가 프로세스를 제어하기 위해 정보를 저장 놓은 곳, 프로세스의 상태 정보를 저장하는 구조체
- 프로세스 상태관리와 문맥 교환을 위해 필요함
- PCB는 프로세스 생성시 만들어지며 주기억장치에 유지됨
PCB에 포함되는 정보
- Process ID : 프로세스를 구분하는 정보
- Process State : 각 State (생성, 준비, 실행, 대기, 종료)를 저장
- Program Counter : 다음에 실행할 Instruction의 주소를 저장하는 카운터, CPU는 이 값을 통하여 Process의 Instruction을 수행함
- Register Information : Accumulator, CPU Register, General Register 등을 포함
- CPU Scheduling Information : 우선순위, 최종 실행시간, CPU 점유시간 포함
- Memory Limits : 운영체제에서 사용되는 메모리 관리 정보 포함
- Pointer : 부모 / 자식 프로세스에 대한 포인터, 자원에 대한 포인터
- Open File List : 프로세스를 위해 열려 있는 파일 리스트
PCB가 필요한 이유
- CPU에서는 프로세스의 상태에 따라 교차 작업이 이루어짐 (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 Running으로 바꿀 때), 해당 작업이 이루어질 때 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것
PCB 관리방식
- 링크드리스트형태로 관리가 되며, PCB List Head에 PCB들이 생성될 때마다 붙게 되어, 주소값이 연결이 이루어져 있음, 링크드리스트 형태라서 삽입삭제가 용이함
- 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거가 되며, 이런식으로 수행중인 프로세스를 변경할 때 CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 함
Context Switching 정의
- CPU가 현재 실행하고 있는 Task(Process, Thread)의 상태를 저장하고, 다음 진행할 Task 상태 및 진행할 Register 값들에 대한 정보를 읽어 새로운 Task의 Context 정보로 교체하는 과정
- CPU가 이전 프로세스 상태를 PCB에 보관하고 또 다른 프로세스의 정보를 PCB에 읽어서 레지스터에 적재하는 과정
- 다중 프로그래밍 시스템에서 CPU가 할당되는 프로세스를 변경하기 위해 현재 CPU를 사용하여 실행되고 있는 프로세서의 상태 정보를 저장하고 제어권을 인터럽트 서비스 루틴에 넘기는 작업을 뜻함
Context Switching 수행과정
- 현재 실행되고 있는 Task의 PCB정보를 저장 (Process Stack, Ready Queue)
- 다음 실행할 Task의 PCB정보를 읽어서 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행함
Context Switching 비용
- Context Swiching을 진행하면 Cache초기화, Memory Mapping 초기화와 같은 비용이 발생함
- 잦은 Context Switching 성능에 영향을 끼침
'OS' 카테고리의 다른 글
[OS] Thread Safe (0) | 2021.11.06 |
---|---|
[OS] 데드락 (0) | 2021.11.06 |
[OS] Thread (쓰레드) (0) | 2021.10.03 |
[OS] Process (프로세스) (0) | 2021.07.11 |
[OS] 뮤텍스 / 세마포어 (0) | 2021.06.13 |