[운영체제] PCB(Process Control Block)
이 글은 패스트캠퍼스의 현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online.를 보고 공부한 내용을 정리한 글입니다. 이해한 내용을 바탕으로 작성했기에 틀린 내용이 있을 수 있습니다.
프로세스 제어블록 PCB란
프로세스란 현재 실행되고 있는 프로그램을 의미한다. 이런 동시다발적으로 실행되는 많은 프로세스들을 관리하기 위해
PCB라는 자료 구조 개념이 필요하다. PCB는 커널영역에 할당된다.
PCB는 모든 프로세스에 대응되어 커널 영역에 할당되어있는 특별한 데이터 덩어리
를 의미하며 이를 통해 운영체제가 프로세스들을 식별
할 수 있다.
PCB는 앞서 데이터 덩어리라 말한 것 처럼 다음과 같은 데이터 들을 가지고 있다.
PCB의 데이터들
- 프로세스 식별자(Process ID): 프로세스를 유일하게 식별하는 값.
- CPU 레지스터 값(CPU Registers): 프로세스가 중단되었을 때의 레지스터 값. 프로세스가 다시 시작될 때 이 값을 복원함으로써 프로세스는 중단되었던 지점부터 계속 실행할 수 있음.
- 스케줄링 정보 : 프로세스의 CPU 사용 시간, 실행 시간 등의 정보입니다.
- 메모리 관리 정보: 프로세스가 사용하는 메모리 영역에 대한 정보.
- 사용한 파일 정보
- 입출력 상태 정보: 프로세스에 연결된 입출력 장치와 파일들에 대한 정보.
문맥 교환
프로세스는 딱 한가지만 실행되는 것이 아닌 여러 개의 프로세스들이 동시에 실행된다.
하지만 자원은 분명 한정되어 있는데 어떻게 프로세스들이 동시에 실행되는가 하면 그 방법은 바로 문맥교환
이다.
프로세스들은 번갈아가며 실행되어 동시에 실행되며 매번 번갈아가며 실행되기 위해 문맥을 PCB에 저장한다.
문맥 (context) : 실행을 재개하기 위해 기억해야할 정보 문맥 교환 : 여러 프로세스들이 번갈아 가며 실행되는 원리
사용자 영역에 저장되는 내용
프로세스가 실행될 떄 커널영역에 PCB로 데이터가 저장된다면 사용자 영역에는 다음과 같은 영역에 정보들이 각각 저장된다.
- 코드영역 : 실행 가능한 코드; 기계어로 이루어진 명령어
- 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터 ( 전역 변수)
- 힙 영역 : 사용자(개발자)가 직접 할당 가능한 공간
- 스택 영역 : 임시로 저장되는 영역 (매개변수, 지역변수)
댓글남기기