CS/운영체제

멀티프로세싱과 멀티스레딩

프론트엔드코린이 2025. 5. 29. 18:13

✅ 멀티프로세싱 (Multiprocessing)

  • 하나의 컴퓨터 시스템에서 여러 개의 프로세스를 동시에 실행하는 방식
각 프로세스는 독립된 메모리 공간과 자원을 가지고 실행됨
CPU 코어가 여러 개인 환경에서 병렬 처리 가능
예: 엑셀, 크롬, 카카오톡을 동시에 실행

✅ 멀티스레딩 (Multithreading)

  • 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 방식
모든 스레드는 메모리(Heap) 등 자원을 공유
하나의 프로그램에서 동시에 여러 작업을 수행
예: 게임에서 그래픽 렌더링 + 배경음악 + 사용자 입력 처리

🧠 개념 요약

구분멀티프로세싱 (Multiprocessing)멀티스레딩 (Multithreading)

💡 정의 여러 개의 프로세스를 동시에 실행 하나의 프로세스 안에서 여러 스레드를 동시에 실행
🧱 구조 각 프로세스는 메모리 완전 분리 스레드는 메모리(Heap) 공유
📂 메모리 독립적 → 안전하지만 무겁다 공유됨 → 빠르지만 충돌 위험 있음
📈 사용 예 크롬에서 여러 창 실행 크롬 탭 여러 개, 게임 내 AI + 렌더링 동시
🔐 안정성 프로세스 간 충돌 거의 없음 동기화(synchronized) 필요
⚙️ 오버헤드 프로세스 생성/전환 비용 큼 스레드 전환이 훨씬 저렴함

🧩 예시로 이해하기

🔹 멀티프로세싱

  • 엑셀 + 크롬 + 카카오톡 = 각자 다른 프로세스 (서로 독립)
    • 각각 따로 메모리 사용
    • 하나가 죽어도 다른 건 영향 없음

🔹 멀티스레딩

  • 하나의 게임에서
    스레드 1: 배경음악 재생
    스레드 2: 사용자 입력 처리
    스레드 3: 적 AI 실행
    하나의 프로그램 안에서 여러 작업이 동시에 일어남
    메모리 공유 → 속도 빠름, 하지만 충돌 위험 있음

🔁 정리

안정적인 건? ✅ 멀티프로세싱
빠르고 가벼운 건? ✅ 멀티스레딩
서로 메모리 공유 안함? ✅ 멀티프로세싱
하나가 죽으면 전체 영향 있음? ✅ 멀티스레딩