프로세스 제어 블록(PCB)는
프로세스 관리의 핵심 데이터이다.
프로세스 실행, 스줄링, 프로세스와 관련된 메모리 관리, 파일 입출력 등 많은 상황에서 커널에 의해 액세스되고 갱신된다.
운영체제는 시스템 전체에 하나의 프로세스 테이블을 만들고 프로세스 테이블에
모든 프로세스의 정보를 관리한다.
커널은 프로세스를 만들 때마다 프로세스 제어 블록을 생성하여 프로세스 테이블의 비어 있는 항목에 PID(프로세스 번호)와 함께 PCB를 연결하다.
프로세스 테이블과 프로세스 제어 블록(PCB)는 커널 공간에서 생성되며, 커널만이 액세스가 가능하다.
프로세스 번호(PID)
프로세스를 식별하기 위한 고유한 번호로 0과 양의 정수로만 사용된다.
커널은 프로세스를 생성할 때 프로세스 번호 PID를 할당한다.
부모 프로세스 번호(PPID)
프로세스는 프로세스에 의해 생성된다.
이들 사이에는 하나의 부모-자식 관계가 형성된다.
부팅할 때 만들어진 최상위 프로세스를 제외한 모든 프로세스들은 이 관계를 따른다.
PCB에는 부모 프로세스 번호(PPID)가 저장된다.
프로세스 상태 정보
프로세스는 종료될 때까지 실행에서 여러가지 상태로 바뀐다.
생성 초기상태(New)
메모리에 적재된 프로세스가 CPU에 의해 실행되는 상태(Running)
스케줄링을 기다리고 있는 준비 상태(Ready)
입출력을 요청한 후 입출력 완료를 기다리거나 sleep() 시스템 호출을 통하여 타이머 알람을 기다리거나 요청 자원이 사용이 가능한 상태가 되기를 기다리는 블록 상태(Block)가 있다.
커널은 프로세스의 상태가 바뀔 때마다 PCB에 상태를 저장한다.
프로세스 컨텍스트 정보
커널은 CPU가 실행중인 프로세스를 중단시키고 다른 프로세스를 실행시킬 때
현재 프로세스의 상황 정보 프로세스 컨텍스트 정보를 PCB에 저장한다.
CPU의 SP, PC, 범용레지스터 등의 내용들을 저장한다는 것이다.
CPU 레지스터 PC는 다음 순으로 시작할 프로세스의 주소가 담겨있다.
PCB에 저장해두면 시작 주소 값이 있어 프로세스 실행을 재개할 수 있다.
스케줄링 정보
PCB에는 커널이 스케줄링에 있어 참고하는 정보들이 저장된다.
● 프로세스 우선순위(Priority값, nice 값 등)
● 실행된 프로세스에 대한 CPU시간, 최근에 할당받아 실행한 시간
종료 코드(exit code)
종료 코드는 프로세스가 종료할 때
부모 프로세스에게 종료 이유를 전달하기 위한 정수 값으로, 종료한 프로세스의 PCB에 저장된다.
부모 프로세스가 종료된 프로세스의 종료 코드를 읽기 전까지
PCB의 종료 코드는 사라지지 않고 유지된다.
부모 프로세스가 종료된 프로세스의 종료 코드를 읽지 않은 상태를 좀비 프로세스라고 부른다.
좀비 프로세스는 프로세스 제어 블록(PCB)와 프로세스 테이블 항목이 남아있다.
회계 정보
프로세스의 CPU 총 사용시간, 프로세스가 실행을 시작하여 경과한 총 시간, 프로세스의 제한 시간 등이 저장된다.
이는 컴퓨터의 성능 통계에서 사용된다.
프로세스의 소유자 정보
프로세스를 생성한 사용자의 ID정보, 사용자의 로그인 이름 등이다.
'CS지식' 카테고리의 다른 글
[CS]운영체제 (1) | 2022.12.30 |
---|---|
사용자 모드(User mode)와 커널 모드(kernel mode)란? (0) | 2022.10.10 |
하드웨어 인터럽트란? (0) | 2022.10.04 |
시스템 호출이란? (0) | 2022.10.04 |