2026년 02월 24일

🖥️ 프로세스(Process) 완전 정복

Java Spring Boot
Cover Image

🖥️ 프로세스(Process) 완전 정복

"프로그램은 죽어있는 설계도, 프로세스는 살아 숨 쉬는 실행"


🔵 프로세스란?

프로세스(Process) = 실행 중인 프로그램(Program in Execution)

하드디스크에 저장된 .exe 파일이나 .jar 파일은 그냥 정적인 파일일 뿐이다. 그 파일을 실행하는 순간 OS가 메모리를 할당하고 CPU 사용 권한을 부여하는데, 이 "생명력을 얻은 상태" 가 바로 프로세스다.

구분상태비유
프로그램정적 (파일)주방에 놓인 요리 레시피 📄
프로세스동적 (실행 중)요리사가 레시피 보며 실제로 요리 중인 과정 🍳

🧱 프로세스의 메모리 구조

OS는 프로세스 실행 시 독립적인 메모리 공간을 할당한다. 이 공간은 역할에 따라 4가지 영역으로 나뉜다.

영역저장 내용생존 기간
Text기계어 코드 (명령어)프로그램 전체 생애
Data전역 변수, static 변수프로그램 전체 생애
Heapnew로 생성한 객체명시적 해제 or GC
Stack지역 변수, 매개변수, 리턴 주소함수 호출~종료

Java 개발자 관점 🔍

public class MemoryExample {
    static int staticVar = 10;   // ← Data 영역

    public static void main(String[] args) {
        int localVar = 20;          // ← Stack 영역
        String obj = new String("Hello"); // ← Heap 영역 (참조는 Stack)
    }
}

💡 Java의 GC(Garbage Collector) 가 Heap 영역의 더 이상 참조되지 않는 객체를 자동으로 해제한다. Stack은 메서드 종료 시 자동 소멸되므로 GC 대상이 아니다.


🪪 PCB (Process Control Block)

OS는 수많은 프로세스를 동시에 관리하기 위해 각 프로세스마다 '신분증' 같은 데이터 구조를 유지한다. 이것이 PCB(프로세스 제어 블록) 이다.

OS는 프로세스를 교체(Context Switch) 할 때 현재 PCB에 상태를 저장하고, 다음 프로세스의 PCB를 불러온다. 덕분에 CPU가 하나여도 여러 프로세스가 동시에 실행되는 것처럼 느껴진다.

🔄 프로세스 상태 흐름


⚔️ 프로세스 vs 스레드

구분프로세스(Process)스레드(Thread)
정의실행 중인 프로그램 인스턴스프로세스 내 실행 흐름 단위
메모리독립된 메모리 (격리)Heap, Data 영역 공유
생성 비용높음 (무겁다)낮음 (가볍다)
통신 방식IPC (복잡, 느림)공유 메모리 (간단, 빠름)
장애 영향프로세스 하나 죽어도 다른 프로세스 무사스레드 하나 오류 시 프로세스 전체 위험

💡 Java의 Thread, Runnable, ExecutorService 는 모두 스레드 기반이다. 같은 JVM 프로세스 내에서 Heap을 공유하기 때문에 멀티스레드 환경에서는 동기화(Synchronization) 에 주의해야 한다.


🛡️ 프로세스 격리(Isolation)가 중요한 이유

프로세스는 서로의 메모리를 절대 침범할 수 없도록 OS가 강제로 격리한다.

장점 — 한 프로세스가 비정상 종료되어도 다른 프로세스와 시스템 전체는 안전하다. 단점 — 프로세스 간 데이터 공유 시 IPC(Inter-Process Communication) 같은 복잡한 메커니즘이 필요하다.

[ 프로세스 A ]      [ 프로세스 B ]
  Stack              Stack
  Heap      ✋❌🚫    Heap       ← 직접 접근 불가
  Data               Data
  Text               Text
  
    ↕ IPC (파이프, 소켓, 공유 메모리 등)

바로 이 트레이드오프 때문에 스레드가 탄생했다. 같은 프로세스 내 스레드는 Heap을 공유하므로 빠른 통신이 가능하지만, 그만큼 동시성 문제(Race Condition, Deadlock) 에 노출된다.


📝 핵심 요약

항목내용
프로세스실행 중인 프로그램, OS가 독립 메모리 할당
메모리 구조Text / Data / Heap / Stack 4영역
PCB프로세스 상태 저장 신분증, Context Switch에 사용
프로세스 격리안정성 보장, 대신 IPC로 통신
스레드프로세스 내 실행 흐름, Heap 공유로 빠르지만 동기화 필요
← 목록으로 돌아가기