포스트

[CS] 프로세스와 스레드

[CS] 프로세스와 스레드

프로세스 vs 스레드, IPC

멀티태스킹 환경에서 효율적 자원 관리를 위해 운영체제는 프로세스(Process)스레드(Thread) 라는 개념을 사용합니다. 이 문서는 두 개념의 차이, 병렬 처리 방식인 멀티프로세스/멀티스레드, 그리고 프로세스 간 통신(IPC)에 대해 정리합니다.


프로세스 vs 스레드

항목프로세스 (Process)스레드 (Thread)
기본 개념실행 중인 프로그램 인스턴스프로세스 내 실행 흐름 단위
메모리 공간독립적 (주소 공간 분리)메모리 공유 (힙, 전역 변수 등)
자원 공유불가 (IPC 필요)가능
생성 비용높음 (컨텍스트 등 생성)낮음 (스택, 레지스터만 필요)
안정성높음 (격리 실행)낮음 (전체 프로세스 영향 가능)
통신 방식IPC 필요동기화로 직접 통신 가능
사용 예웹 브라우저 탭, 마이크로서비스게임의 AI, 렌더링, UI 분리

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

항목멀티프로세스멀티스레드
실행 단위여러 프로세스한 프로세스 내 여러 스레드
메모리 구조분리된 주소 공간공유 주소 공간
충돌 영향격리 (안정성 높음)전체 영향 가능 (불안정)
통신느림 (IPC 필요)빠름 (공유 변수, 메모리)
관리 비용높음낮음
사용 예웹 서버, 브라우저 탭게임 엔진, UI/네트워크 분리

멀티프로세스 장단점

  • ✅ 안정성: 하나의 프로세스 오류가 다른 프로세스에 영향을 주지 않음
  • ❌ 성능 비용: 프로세스 간 통신이 느림, 메모리 사용량 큼

멀티스레드 장단점

  • ✅ 속도: 스레드 간 통신이 빠르고 메모리 효율적
  • ❌ 안정성 낮음: 하나의 스레드 오류로 전체 프로세스가 종료될 수 있음

IPC (Inter-Process Communication)

프로세스 간 메모리 접근이 불가능하므로 데이터를 주고받기 위한 기술

방식설명특징
파이프 (Pipe)부모-자식 간 단방향 통신간단하지만 제한적
FIFO이름 있는 파이프독립 프로세스 간 통신 가능
메시지 큐운영체제의 메시지 박스 활용비동기 통신 가능
공유 메모리공통 메모리 영역 공유빠르지만 동기화 필요
소켓네트워크 기반 통신로컬/원격 모두 사용 가능
세마포어자원 접근 동기화 도구자체로는 데이터 전송 불가
시그널이벤트 알림 방식단순 제어용

사용 목적별 IPC 추천

| 목적 | 추천 방식 | |——|————-| | 빠른 데이터 공유 | 공유 메모리 | | 간단한 메시지 전송 | 메시지 큐, 파이프 | | 원격 서버 통신 | 소켓 | | 접근 동기화 | 세마포어, 뮤텍스 |


요약

항목프로세스스레드
실행 단위독립적공유 흐름
메모리 구조격리공유
안정성높음낮음
통신느림 (IPC)빠름 (메모리 공유)
항목멀티프로세스멀티스레드
성능느림빠름
안전성높음낮음
통신 난이도높음낮음
대표 용도서버, 브라우저 탭게임, 앱 UI 등

IPC는 멀티프로세스를 가능하게 하는 기반 기술로, 시스템 설계에서 병렬성과 안정성 사이의 균형을 결정하는 중요한 요소입니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.