CS/운영체제

멀티프로세스

leah-only 2025. 1. 16. 19:25

멀티프로세스란?

2개 이상의 프로세스가 동시에 실행되는 것

동시성 (concurrency) 병렬성 (parallelism)
Single core Multi core
CPU 코어가 1개일 때, 여러 프로세스를 짧은 시간동안 번갈아가면서 연산을 하는 시분할 시스템으로 실행되는 것 CPU 코어가 여러개일 때, 각각의 코어가 각각의 프로세스를 연산함으로써 프로세스가 동시에 실행되는 것
동시에 실행되는 것 같아 보인다.  실제로 동시에 여러 작업이 처리된다. 

 


IPC (Inter Process Communication)

멀티프로세스는 IPC가 가능

IPC란 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘. 

 

IPC 예시
: 클라이언트와 서버. 클라이언트는 데이터를 요청하고 서번는 클라이언트의 요청에 응답하는 것

 


공유 메모리 

여러 프로세스에 동일한 메모리 블록에 대한 접근 권한이 부여되어 프로세스가 서로 통신할 수 있도록 공유 메모리를 생성해서 통신하는 것

 

장점

IPC 방식 중 어떠한 매개체를 통해 데이터를 주고받는 것이 아니라 메모리 자체를 공유하기 때문에 불필요한 데이터 복사의 오버헤드가 발생하지 않아 가장 빠름

 

단점

같은 메모리 영역을 여러 프로세스가 공유하기 때문에 동기화가 필요

 


파일

디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터

이를 기반으로 프로세스 간 통신


소켓

동일 컴퓨터의 다른 프로세스 or 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터

두 응용 프로그램을 연결하는 데 사용됨 (통신 끝점 (endpoint))

TCP, UDP 가 있음


메시지 큐

메시지를 큐(Queue) 데이터 구조 형태로 관리하는 것

커널에서 전역적으로 관리되며 다른 IPC 방식에 비해서 사용 방법이 직관적, 간단

공유 메모리를 통해 IPC 구현 시 쓰기, 읽기 빈도가 높으면 동기화 때문에 기능 구현 매우 복잡해지는데, 이때 대안으로 메시지 큐를 사용