![[2일차] 2025 정보처리산업기사 운영체제 - 프로세스의 개념과 상태 1 정보처리산업기사 운영체제](https://i0.wp.com/jupocket.com/wp-content/uploads/2025/05/image.png?resize=492%2C492&ssl=1)
오늘은 운영체제의 핵심 개념 중 하나인 프로세스(Process) 를 정리했다.
프로세스는 단순히 실행 중인 프로그램이 아니라, CPU·메모리·입출력 장치 등 시스템 자원을 실제로 사용하는 단위다.
운영체제의 작동 원리를 이해하려면 프로세스의 개념과 상태 전이, 그리고 관리 구조를 확실히 알아야 한다.
정보처리산업기사 1개월 단기 과정 스케줄을 확인하고 싶은분들은 아래글을 이용바랍니다.
1. 프로세스의 개념
프로세스(Process)는 실행 중인 프로그램(Program in execution) 이다.
프로그램은 디스크에 저장된 정적(Static) 명령어 집합이고,
프로세스는 CPU에서 동적으로 실행 중인 개체(Dynamic Entity)다.
| 구분 | 프로그램 | 프로세스 |
|---|---|---|
| 정의 | 명령어와 데이터의 정적 집합 | 실행 중인 명령어 단위 |
| 상태 | 항상 일정 (정적) | 실행 중 변화 (동적) |
| 저장 위치 | 디스크 | 메모리(RAM) |
| 구성 요소 | 코드, 데이터 | 코드 + 데이터 + 힙 + 스택 + PCB |
| 식별자 | 파일명 | PID(Process ID) |
PCB (Process Control Block)
운영체제는 프로세스별로 정보를 추적하기 위해 PCB 를 유지한다.
PCB는 커널 내부의 자료구조로, 다음 항목들을 포함한다.
- 프로세스 ID (PID)
- 프로세스 상태(State)
- 프로그램 카운터(Program Counter)
- CPU 레지스터 값
- 스케줄링 정보 (우선순위, 큐 정보 등)
- 메모리 관리 정보 (베이스, 한계 레지스터 등)
- 입출력 장치 및 파일 정보
PCB는 문맥 교환(Context Switching) 시 프로세스 상태를 저장하고 복원하는 핵심 역할을 한다.
2. 프로세스 상태(State)
운영체제는 프로세스의 실행 단계를 여러 상태로 구분해 관리한다.
| 상태 | 설명 |
|---|---|
| New | 프로세스가 생성되는 중 |
| Ready | CPU 할당을 기다리는 상태 |
| Running | CPU에서 명령을 실행 중 |
| Waiting(Blocked) | I/O 요청 등으로 대기 중 |
| Terminated | 프로세스가 종료된 상태 |
| 전이 이벤트 | 설명 |
|---|---|
| Create | 프로세스 생성 |
| Dispatch | Ready → Running (CPU 할당) |
| Timeout(Time Run Out) | Running → Ready (CPU 시간 만료) |
| Block | Running → Waiting (I/O 요청 등) |
| Wakeup | Waiting → Ready (I/O 완료) |
| Exit | Running → Terminated (프로세스 종료) |
3. 문맥 교환 (Context Switching)
문맥 교환은 CPU가 다른 프로세스로 전환될 때 발생하는 과정이다.
운영체제는 현재 프로세스의 상태를 PCB에 저장하고, 다음 프로세스의 PCB를 복원한다.
절차
- 현재 프로세스의 상태를 PCB에 저장
- 스케줄러가 다음 실행 프로세스를 선택
- 새로운 프로세스의 PCB를 불러와 레지스터 복원
- CPU 제어권을 새 프로세스에 넘김
문맥 교환은 필수적이지만 오버헤드가 발생하므로,
운영체제는 스레드 기반 실행으로 전환 비용을 줄이기도 한다.
4. 프로세스 간 통신 (IPC: Inter-Process Communication)
서로 다른 프로세스는 독립된 메모리 공간을 갖기 때문에,
정보를 주고받으려면 프로세스 간 통신(IPC) 메커니즘이 필요하다.
| 방식 | 설명 | 예시 |
|---|---|---|
| 파이프 (Pipe) | 단방향 통신 채널 | 부모 → 자식 프로세스 간 데이터 전달 |
| 이름 있는 파이프 (Named Pipe) | 다중 프로세스 간 통신 | mkfifo, cat fifo |
| 공유 메모리 (Shared Memory) | 메모리 공간을 공유 | 빠른 통신, 동기화 필요 |
| 메시지 큐 (Message Queue) | 메시지 단위의 구조적 통신 | msgsnd(), msgrcv() |
| 소켓 (Socket) | 네트워크 기반 통신 | TCP/UDP 프로세스 간 데이터 교환 |
운영체제는 커널 공간에서 IPC 객체를 생성하고,
프로세스가 이를 통해 데이터를 교환하거나 동기화를 수행한다.
5. 스레드 (Thread)
스레드는 프로세스 내부에서 실행되는 최소 실행 단위다.
여러 스레드는 하나의 프로세스 자원을 공유하면서 병렬로 동작한다.
| 구분 | 프로세스 | 스레드 |
|---|---|---|
| 자원 | 독립된 메모리(Code, Data, Stack, Heap) | 코드·데이터·파일 공유, 스택만 독립 |
| 생성 비용 | 높음 (PCB 필요) | 낮음 (TCB만 추가) |
| 문맥 교환 | PCB 교체 필요 | 빠름 (TCB 수준 교체) |
| 장점 | 안정적, 독립 실행 | 효율적, 동시성 향상 |
| 단점 | 통신 비용 높음 | 동기화 문제 발생 가능 |
6. 학습 정리
- 프로세스: 실행 중인 프로그램으로, PCB로 관리된다.
- 상태 전이: New → Ready → Running → Waiting → Terminated.
- 전이 이벤트: Dispatch, Block, Wakeup, Timeout(Time Run Out), Exit.
- 문맥 교환: CPU 제어권을 전환할 때 PCB 저장 및 복원 과정.
- IPC: 프로세스 간 데이터 교환 메커니즘 (Pipe, Message Queue, Shared Memory).
- 스레드: 프로세스 내부의 실행 단위로, 자원을 공유하며 병렬 처리 효율을 높인다.
다음 글: [2일차] 정보처리산업기사 운영체제 – 프로세스 스케줄링
스케줄링의 목적, 선점형/비선점형, FCFS·SJF·RR 등 알고리즘 비교와 우선순위 스케줄링 정리.