ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 스레드 차이
    Computer Science/OS 2025. 11. 3. 12:23

    1. 개요

    운영체제(OS, Operating System)는 프로그램 실행과 자원 관리를 담당하는 핵심 소프트웨어
    이 중에서도 프로세스(Process)스레드(Thread) 는 CPU가 작업을 수행하는 기본 단위로, 운영체제 이해의 핵심 개념

    구분 프로세스 스레드
    정의 실행 중인 프로그램 프로세스 내의 실행 흐름 단위
    독립성 독립적인 메모리 공간 보유 같은 프로세스 내 메모리 공유
    통신 방식 프로세스 간 통신(IPC) 필요 공유 메모리로 간단한 통신 가능
    자원 소모 크다 (프로세스별 메모리, PCB 등 생성) 작다 (Stack만 분리)
    예시 Chrome.exe, Discord.exe 탭 단위 실행, 채팅 전송 스레드 등

    2. 프로세스(Process)란?

    실행 중인 프로그램(Program in Execution)

    운영체제는 프로그램을 실행할 때 메모리에 적재하고, CPU 스케줄링 대상이 되는 하나의 독립된 작업 단위(프로세스) 로 관리

    프로세스 구성 요소

    구성 요소  설명
    Code 영역 실행할 프로그램 명령어 저장
    Data 영역 전역 변수, 정적 변수
    Heap 영역 동적 할당된 메모리 공간 (new, malloc 등)
    Stack 영역 함수 호출 시 지역 변수와 리턴 주소 저장
    PCB (Process Control Block) 프로세스의 상태 정보를 저장하는 자료구조 (PID, 레지스터 값, 상태 등)

    PCB는 운영체제가 프로세스를 식별하고 관리하기 위한 핵심 구조


    3. 스레드(Thread)란?

    프로세스 내에서 실제 작업을 수행하는 실행 흐름 단위

    하나의 프로세스가 여러 스레드를 포함할 수 있으며, 이 스레드들이 동시에 실행되어 병렬 처리(Parallel Processing) 를 수행

    스레드 구성 요소

    항목 설명
    Stack 각 스레드별 독립적인 함수 호출 공간
    Program Counter (PC) 스레드의 현재 실행 위치 저장
    Register Set 연산 중인 데이터 값 저장
    공유 자원 Code, Data, Heap 영역은 프로세스 내에서 공유

     


    4. 프로세스 vs 스레드 메모리 구조 비교

    메모리 영역 프로세스 간 공유 여부 스레드 간 공유 여부
    Code
    Data
    Heap
    Stack ❌ (각 스레드 독립)

    핵심 포인트:
    스레드는 Code, Data, Heap을 공유하지만 Stack은 독립적으로 가짐


    5. 멀티프로세스 vs 멀티스레드

    구분 멀티프로세스(Multi-Process)  멀티스레드(Multi-Thread)
    정의 여러 개의 프로세스를 동시에 실행 하나의 프로세스 내에서 여러 스레드 실행
    메모리 구조 프로세스 간 완전 분리 스레드 간 자원 공유
    장점 안정성 높음 (하나 죽어도 다른 프로세스 영향 X) 자원 효율 높음, 빠른 통신
    단점 오버헤드 큼 (메모리 많이 사용) 한 스레드 오류 시 전체 프로세스에 영향
    예시 Chrome 탭별 독립 실행 하나의 워드프로세스 내 자동 저장, 맞춤법 검사 스레드

    비유:

    • 멀티프로세스 = 여러 개의 독립된 집
    • 멀티스레드 = 한 집 안의 여러 방에서 동시에 일하는 사람들

    6. 상태 전이 (Process State Transition)

    프로세스는 실행 중 다음과 같은 상태를 순환하며 변화

    상태 설명
    New 프로세스 생성 중
    Ready 실행 대기 (CPU 할당 기다림)
    Running CPU에서 실행 중
    Waiting(Blocked) I/O 등 이벤트 대기 중
    Terminated 실행 완료 및 종료
    New → Ready → Running → Waiting → Ready → Terminated
    

    CPU 스케줄러는 Ready 큐에서 프로세스를 선택해 CPU를 할당


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

    프로세스는 메모리를 공유하지 않기 때문에, Inter-Process Communication (IPC) 방식으로 데이터를 주고받음

    방식 설명
    Pipe (파이프) 부모–자식 간 단방향 통신
    Message Queue 커널 공간에 메시지를 저장해 통신
    Shared Memory 동일한 메모리 영역을 여러 프로세스가 공유
    Socket 네트워크 기반 프로세스 통신 (TCP/IP 기반)

     


     

    'Computer Science > OS' 카테고리의 다른 글

    교착 상태 (Deadlock)  (0) 2025.11.25
    메모리 관리 – 페이징과 세그먼테이션  (0) 2025.11.05
    CPU 스케줄링 알고리즘  (0) 2025.11.04
Designed by Tistory.