PCB (Process Control Block)
운영체제가 프로세스에 대한 정보를 저장해 놓은 곳으로, 프로세스당 하나씩 1:1로 생성된다.
어떤 프로세스가 Interrupt나 System Call을 만나 다른 프로세스로 작업을 전환하는 것을 Context Switching이라고 하며, 이때 운영체제는 PCB에 실행 중이던 프로세스의 정보를 저장한 후 실행할 프로세스의 정보를 가져와 작업을 수행한다.
부모와 자식 프로세스 사이에도 PCB는 공유하지 않으며 부모든 자식이든 무조건 각 프로세스당 PCB는 1:1로 생성된다.
PCB의 구조는 일반적으로 다음과 같다.
1. Process ID : 프로세스 식별자, PID
2. Process state
현재 프로세스의 상태를 나타내며 여기에는 생성(create)/준비(ready)/실행(running)/대기(waiting)/완료(terminated)가 있다.
생성(create) : 프로세스가 생성은 되었지만 아직 운영체제에 의해 실행은 불가능한 상태
준비(ready) : CPU의 할당을 기다리는 상태
실행(running) : CPU를 할당 받아 실행되는 상태
대기(waiting) : 실행 중인 프로세스가 어떤 사건(입출력 등)이 발생할때까지 멈추어 있는 상태
완료(terminated) : 프로세스 실행이 완전히 끝나 CPU 할당이 해제된 상태
3. Program Counter : 프로세스가 다음에 실행할 명령어의 주소 저장
4. Registers : CPU 레지스터의 값 저장
5. Memory Information : 해당 프로세스의 주소 공간 등의 데이터 저장
6. Accounting Information : 페이지 테이블, 소유자, 부모, 경과 시간 등 저장
7. I/O Information : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등 저장
'Knowledge' 카테고리의 다른 글
NAT와 NAPT의 개념과 원리 (10) | 2016.12.01 |
---|---|
멀티 태스킹(Multi-Tasking)의 원리 (0) | 2016.11.21 |
[Assembly] Intel x86, Local JMP [0xE9] (0) | 2016.11.07 |
[BigData] Spark 공부 (0) | 2016.10.19 |
Visual Studio 2008에서 libcurl 사용하기 (0) | 2016.09.05 |