Skip to Content
공부운영체제프로세스멀티 프로세스와 멀티 스레드

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

동시성과 병렬성

멀티프로세스와 멀티스레드를 이해하기 전에 동시성(Concurrency)과 병렬성(Parallelism)의 차이를 먼저 이해해야 한다.

동시성 (Concurrency)

동시성은 여러 작업을 번갈아가며 처리하여 동시에 실행되는 것처럼 보이게 하는 것이다. 단일 코어 CPU에서도 가능하며, 운영체제가 빠르게 작업을 전환(Context Switching)하여 여러 작업이 동시에 진행되는 것처럼 느껴진다.

병렬성 (Parallelism)

병렬성은 여러 작업을 실제로 동시에 처리하는 것이다. 멀티코어 CPU가 필요하며, 각 코어가 서로 다른 작업을 동시에 실행한다. 병렬성이 있으면 실제 처리 시간이 단축된다.

차이점

구분동시성 (Concurrency)병렬성 (Parallelism)
정의여러 작업을 번갈아 처리여러 작업을 동시에 처리
CPU 요구사항단일 코어 가능멀티 코어 필요
처리 방식Context Switching실제 동시 실행

멀티프로세스와 멀티스레드는 모두 동시성을 제공하며, 멀티코어 환경에서는 병렬성도 함께 제공한다.

멀티프로세스

여러 개의 독립적인 프로세스를 동시에 실행하는 방식이다.

각 프로세스는 독립된 메모리 공간을 가지므로 한 프로세스가 비정상 종료되어도 다른 프로세스에 영향을 주지 않는다. 이러한 격리성 덕분에 시스템 전체의 안정성이 높아진다.

그러나 각 프로세스가 독립된 메모리를 사용하기 때문에 메모리 사용량이 크다는 단점이 있다. 또한, 프로세스 간 전환 시 Context Switching 비용이 크고, 프로세스 간 통신을 위해서는 IPC(Inter-Process Communication) 같은 복잡한 메커니즘이 필요하다.

멀티스레드

하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 방식이다.

스레드들은 Code, Data, Heap 영역을 공유하므로 메모리를 효율적으로 사용할 수 있다. 또한, Context Switching이 빠르고 공유 메모리를 통해 스레드 간 통신이 간단하다는 장점이 있다.

반면, 스레드들이 같은 메모리 공간을 공유하기 때문에 한 스레드의 오류가 전체 프로세스에 영향을 줄 수 있다. 이 외에도, 공유 자원 접근 시 동기화 문제가 발생할 수 있으며, 이로 인해 디버깅이 어려워진다.

비교

구분멀티프로세스멀티스레드
개념여러 독립적인 프로세스 실행한 프로세스 내 여러 스레드 실행
메모리독립된 메모리 공간 (큼)메모리 공유 (적음)
안정성높음낮음
Context Switching느림빠름
통신복잡 (IPC)간단 (공유 메모리)
사용 사례Chrome (탭마다 프로세스)웹 서버 (요청마다 스레드)
Last updated on