IT/운영체제
⚙️ [운영체제] 프로세스 정보 저장
BlogFlow
2025. 6. 28. 18:00
반응형
3️⃣ 프로세스 관리 - 프로세스 테이블과 PCB(Process Control Block)
📌 프로세스 정보 저장 (Process Information Storage)
운영체제는 수많은 프로세스를 동시에 생성하고 관리해야 하며, 이를 위해 각 프로세스의 정보들을 체계적으로 저장하고 추적할 필요가 있다.
이 과정에서 핵심적인 역할을 하는 것이 PCB(Process Control Block)와 이를 포함한 프로세스 테이블(Process Table)이다.
운영체제는 프로세스가 생성될 때부터 종료될 때까지의 상태, 자원, 메모리, 스케줄링 정보 등을 저장하며, 이를 기반으로 모든 프로세스 관련 기능을 수행한다.
1️⃣ 프로세스 정보란?
운영체제가 각 프로세스를 관리하기 위해 저장하는 모든 시스템적, 실행적, 자원적 정보의 집합이다.
이 정보는 다음과 같은 목적에 사용된다:
- 프로세스 구분 (식별)
- 상태 추적 (실행, 대기 등)
- 자원 추적 (파일, 메모리, 디바이스)
- CPU 및 메모리 할당/회수 관리
- 사용자 권한 확인 및 보안 적용
- 프로세스 간 통신 및 시그널 관리
2️⃣ 정보 저장 위치
운영체제는 프로세스 정보를 주로 두 가지 수준에서 저장한다:
구조 | 설명 |
PCB (Process Control Block) | 프로세스 개별 정보 저장 단위 |
프로세스 테이블(Process Table) | 모든 PCB를 관리하는 커널의 중앙 테이블 |
운영체제는 프로세스를 생성하면, PCB를 생성하여 프로세스 테이블에 등록한다.
3️⃣ PCB에 저장되는 주요 정보 항목
PCB는 프로세스의 핵심 정보를 모두 담고 있으며, 보통 다음과 같은 카테고리로 분류된다:
✅ A. 식별 정보
항목 | 설명 |
PID | 고유 프로세스 ID |
PPID | 부모 프로세스 ID |
UID, GID | 사용자/그룹 ID (보안 관리용) |
✅ B. 상태 정보
항목 | 설명 |
Process State | New, Ready, Running, Waiting, Terminated |
Exit Code | 종료 상태 (부모에게 전달) |
✅ C. CPU 문맥 정보 (Context)
항목 | 설명 |
PC (Program Counter) | 다음에 실행할 명령어 주소 |
CPU 레지스터 | 실행 중인 레지스터 상태 |
스택 포인터 | 현재 스택 최상위 위치 |
컨텍스트 스위칭 시 저장/복원하는 정보들로, 문맥 전환의 핵심이 된다.
✅ D. 메모리 관리 정보
항목 | 설명 |
페이지 테이블 주소 | 가상 메모리 → 물리 메모리 매핑 |
코드/데이터/힙/스택 | 메모리 세그먼트 정보 |
메모리 사용량 | 할당된 총 메모리 크기, 사용 비율 등 |
✅ E. 파일 및 입출력 정보
항목 | 설명 |
파일 디스크립터 목록 | 열린 파일 및 장치 정보 (stdin, stdout, 소켓 등) |
파일 오프셋 | 각 파일의 읽기/쓰기 위치 |
I/O 상태 정보 | I/O 버퍼, 장치 대기 큐 위치 등 |
✅ F. 스케줄링 정보
항목 | 설명 |
우선순위 (Priority) | 프로세스 실행 우선순위 |
타임 슬라이스 | 할당된 실행 시간 |
스케줄러 큐 위치 | Ready Queue 또는 Wait Queue 내 위치 |
✅ G. 시그널 및 IPC 관련 정보
항목 | 설명 |
시그널 마스크 | 수신 가능한 시그널 목록 (SIGTERM, SIGINT 등) |
시그널 핸들러 | 각 시그널에 대응하는 함수 포인터 |
IPC 포인터 | 파이프, 공유 메모리, 세마포어 등 IPC 자원 연결 정보 |
✅ H. 기타 시스템 관리 정보
항목 | 설명 |
시작 시간 | 프로세스가 생성된 시점 (시간 추적, 로그 등) |
누적 CPU 사용 시간 | 총 실행 시간 (스케줄링 통계, 과금 등) |
세션, 터미널 정보 | 로그인된 터미널, 세션 ID 등 |
컨트롤 그룹 (cgroup) | 자원 제한 및 관리 목적의 그룹 ID |
4️⃣ 프로세스 정보 확인 방법 (Linux)
운영체제는 /proc 가상 파일 시스템을 통해 프로세스 정보를 사용자에게 제공한다.
# 특정 프로세스 정보 확인
cat /proc/[PID]/status
# 예시: bash 프로세스 정보
cat /proc/1234/status
주요 필드 예시
필드 | 의미 |
Name | 프로세스 이름 |
State | 현재 상태 |
Tgid / Pid | 스레드 그룹 ID / PID |
PPid | 부모 PID |
Uid / Gid | 사용자 ID / 그룹 ID |
Threads | 포함된 스레드 수 |
VmSize | 전체 가상 메모리 크기 |
VmRSS | 실제 사용 중인 물리 메모리 |
FDSize | 열린 파일 디스크립터 수 |
5️⃣ 운영체제가 PCB를 통해 수행하는 작업
작업 | PCB의 활용 |
프로세스 스케줄링 | 우선순위, 상태, 시간 정보 기반 결정 |
문맥 전환 (Context Switch) | 레지스터/PC/스택 포인터 저장 및 복원 |
프로세스 종료 처리 | 자원 해제, 종료 코드 전달, 좀비 상태 전이 |
보안 및 권한 확인 | UID, GID, 시그널 마스크 정보 확인 |
디버깅 및 모니터링 지원 | /proc, ps, top, htop 등의 명령에서 정보 활용 |
📌 요약
- 운영체제는 각 프로세스의 모든 실행 및 자원 상태 정보를 PCB에 저장하고, 이를 프로세스 테이블을 통해 관리한다.
- PCB에는 PID, 상태, 레지스터, 메모리, 파일, 스케줄링 정보 등 실행에 필요한 모든 데이터가 포함되어 있다.
- 이 구조를 기반으로 운영체제는 멀티태스킹, 문맥 전환, 자원 회수, 프로세스 간 통신, 보안 제어 등을 수행한다.
🧠 결국, PCB는 프로세스를 정의하고 통제하는 운영체제의 핵심 정보 저장소이며,
모든 프로세스 관리 기능은 PCB를 중심으로 동작한다고 해도 과언이 아니다.
반응형