프로세스(Process): 실행 중인 프로그램

1. 프로세스란?

프로세스(Process) 는 한마디로 “실행 중인 프로그램” 이다.

  • 프로그램은 디스크에 저장된 정적인 파일일 뿐이다 (.exe, .out, .py 등)
  • 이 프로그램을 실행하면, 운영체제(OS)가 메모리(RAM)에 올리고 CPU가 실행할 수 있도록 준비한다. 이 상태가 바로 프로세스

즉, 프로그램 ≠ 프로세스이며, 프로그램을 실행 중인 것이 프로세스다.

2. 프로세스의 주요 특징

구분 설명
고유한 메모리 공간 코드·데이터·스택·힙 등 독립적인 메모리 구조를 가짐
고유한 PID OS가 각 프로세스를 식별하기 위해 부여하는 Process ID
자원 소유 파일 디스크립터, 메모리, CPU 시간 등을 소유
독립성 프로세스끼리는 기본적으로 메모리를 공유하지 않고 독립적으로 동작
생명주기 생성 → 준비 → 실행 → 대기 → 종료의 흐름을 가짐

3. 프로세스의 메모리 구조 (4영역)

프로세스가 메모리에 올라오면 4개 영역으로 나뉜다. 높은 주소에서 낮은 주소 순으로 정리하면 다음과 같다.

영역 저장 내용 관리 방식
Stack 함수 호출 시 지역변수·매개변수 호출마다 자동으로 push/pop
Heap 동적 메모리 할당 영역 malloc/new로 할당, free/delete로 해제
Data 전역변수, static 변수 프로그램 시작 시 초기화
Code 실행할 프로그램 코드(명령어) 컴파일된 machine code

Stack과 Heap은 서로 마주 보는 방향으로 자라 충돌을 피한다. (Stack은 아래로, Heap은 위로 성장)

4. 프로세스의 상태 (State)

프로세스는 CPU에서 실행되며 여러 상태를 거친다.

상태 의미
New 프로그램이 메모리에 적재되는 중
Ready CPU를 받을 준비가 된 상태
Running CPU를 점유해 실제 실행 중인 상태
Waiting 어떤 이벤트(I/O 등)를 기다리는 상태
Terminated 실행이 끝나 종료된 상태

보통 Ready ↔ Running ↔ Waiting 을 반복하다가 종료된다.

5. 프로세스와 스레드

구분 정의 메모리
프로세스 완전히 독립된 실행 단위 서로 독립적
스레드 프로세스 안의 작업 단위 같은 프로세스 내에서 공유

“프로세스는 집이고, 스레드는 집 안의 가족”이라고 비유할 수 있다. 집(프로세스)끼리는 독립적이지만, 한 집 안의 가족(스레드)은 같은 공간(메모리)을 공유한다.

6. 프로세스 간 통신 (IPC)

프로세스끼리는 기본적으로 메모리를 공유하지 않으므로, 정보를 주고받으려면 별도의 방법이 필요하다.

방법 설명
Pipe (파이프) 단방향 데이터 스트림으로 연결
Message Queue (메시지 큐) 메시지 단위로 송수신
Shared Memory (공유 메모리) 공유 메모리 영역을 두고 직접 읽고 씀 (가장 빠름)
Socket (소켓) 네트워크 기반 통신
Signal (시그널) 간단한 알림·이벤트 전달

7. 요약

프로세스는 실행 중인 프로그램이며, 고유한 메모리 공간과 자원을 소유하고, 여러 상태를 거치며 실행된다. 프로세스끼리는 독립적이라 정보를 주고받으려면 IPC가 필요하다.


© 2022 JeongHwan Yun.