프로세스 관리 (Process Management)
운영체제의 핵심 서비스인 프로세스의 개념, 실행 과정, 그리고 메모리 구조에 대한 정리입니다.
1. 프로세스(Process)의 개념
"프로세스는 실행 중인 프로그램이다."
- 프로그램 (Program): 보조기억장치(HDD/SSD)에 저장된 정적인 데이터 덩어리 (코드).
- 프로세스 (Process): 프로그램을 메모리에 적재하고 CPU를 할당받아 실행되고 있는 동적인 상태.
프로세스의 종류
- 포그라운드 프로세스 (Foreground): 사용자가 볼 수 있는 공간에서 실행되는 프로세스 (예: 웹 브라우저, 워드 프로세서).
- 백그라운드 프로세스 (Background): 사용자가 보지 못하는 뒷단에서 실행되는 프로세스 (예: 데몬, 시스템 서비스).
2. 프로세스 제어 블록 (PCB, Process Control Block)
CPU 자원은 한정되어 있으므로, 운영체제는 여러 프로세스가 차례대로 CPU를 이용하도록 관리해야 합니다. 이를 위해 프로세스 제어 블록(PCB)이라는 자료구조를 사용합니다.
- 역할: 프로세스와 관련된 정보를 저장하며, 커널 영역에 생성됩니다.
- 작동: 타이머 인터럽트가 발생하면 현재 작업을 PCB에 저장하고 CPU를 양보합니다.
PCB에 저장되는 주요 정보
- 프로세스 ID (PID): 특정 프로세스를 식별하기 위한 고유 번호.
- 레지스터 값: 다음 차례에 작업을 이어가기 위해 저장하는 PC(프로그램 카운터) 등의 레지스터 중간값.
- 프로세스 상태: 현재 프로세스의 상태 (생성, 준비, 실행, 대기, 종료).
- CPU 스케줄링 정보: 언제, 어떤 순서로 CPU를 할당받을지에 대한 우선순위 정보.
- 메모리 관리 정보: 프로세스가 저장된 메모리 주소 정보 (베이스 레지스터, 한계 레지스터 등).
3. 문맥 교환 (Context Switching)
- 문맥 (Context): 프로세스 실행을 재개하기 위해 기억해야 할 정보 (PCB에 저장된 내용).
- 문맥 교환: 하나의 프로세스에서 다른 프로세스로 CPU 제어권이 넘어갈 때, 기존 프로세스의 문맥을 백업하고 새로운 프로세스의 문맥을 복구하는 과정입니다.
4. 프로세스의 메모리 영역
프로세스가 생성되면 커널 영역에는 PCB가 생성되고, 사용자 영역에는 프로세스 코드가 4가지 영역으로 나뉘어 배치됩니다.

| 영역 | 할당 | 설명 | 특징 |
|---|
코드 영역 (Code/Text) | 정적 할당 | 실행할 기계어 명령어가 저장되는 공간 | 읽기 전용 (Read-Only), 쓰기 금지 |
데이터 영역 (Data) | 정적 할당 | 프로그램이 실행되는 동안 유지할 데이터 | 전역 변수(Global Variable), 정적 변수 등 저장 |
힙 영역 (Heap) | 동적 할당 | 프로그래머가 직접 할당/해제하는 공간 | 다 쓴 메모리는 반드시 반환해야 함 (메모리 누수 방지) |
스택 영역 (Stack) | 동적 할당 | 데이터를 일시적으로 저장하는 공간 | 함수의 매개변수, 지역변수 등 (함수 종료 시 소멸) |
- 정적 할당 영역: 크기가 고정된 영역 (코드, 데이터)
- 동적 할당 영역: 실행 과정에서 크기가 변할 수 있는 영역 (힙, 스택)