멀티프로세스(Multi-Process)
초기의 컴퓨터 시스템에서는 한 번에 하나의 작업(프로세스)만 실행할 수 있었습니다. 하지만 사용자 수가 늘어나고 동시에 여러 작업을 처리해야 할 필요성이 생기면서, 한 시스템에서 여러 프로세스를 동시에 실행하는 멀티프로세스 개념이 등장했습니다.

멀티프로세스는 하나의 운영체제에서 독립적인 여러 프로그램(프로세스)을 동시에 실행하는 방식입니다.
각 프로세스는 독립적인 메모리 공간을 가지며, 서로 간섭하지 않습니다.
장점
- 각 프로세스가 독립적이기 때문에 한 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않음.
- 안정성과 보안성이 높음.
단점
- 프로세스 간의 통신(IPC)이 복잡하고 비용이 높음.
- 독립적인 메모리 공간을 사용하기 때문에 메모리 사용량이 많음.
예시
- 웹 브라우저에서 탭마다 독립적인 프로세스로 실행(크롬 브라우저).
- 데스크톱 애플리케이션들이 서로 독립적으로 실행.
멀티스레드(Multi-Thread)
멀티프로세스는 안전하고 독립적인 장점이 있지만, 메모리 사용량이 크고 프로세스 간 통신 비용이 높다는 단점이 있었습니다.
이를 해결하기 위해 한 프로세스 내에서 여러 작업 단위를 처리하는 멀티스레드 방식이 도입되었습니다.

멀티스레드는 하나의 프로세스 내부에서 여러 스레드를 실행하는 방식입니다.
스레드는 프로세스 내의 메모리를 공유하기 때문에 효율적으로 데이터를 처리할 수 있습니다.

장점
- 메모리 공간과 자원을 공유하여 효율적.
- 프로세스 간 통신보다 스레드 간 통신이 빠르고 간단.
단점
- 메모리를 공유하기 때문에 동기화 문제가 발생할 수 있음.
- 하나의 스레드에서 오류가 발생하면 같은 프로세스 내의 다른 스레드에 영향을 줄 수 있음.
예시
- 웹 서버에서 다수의 클라이언트 요청 처리.
- 게임 엔진에서 그래픽 렌더링, 물리 연산, 네트워크 처리를 동시에 실행.
멀티코어(Multi-Core)
하드웨어 성능의 발전이 한계에 다다르면서, CPU의 클럭 속도를 높이는 대신 멀티코어 기술이 등장했습니다.
멀티코어는 하나의 CPU 칩에 여러 개의 코어를 집적하여 병렬 처리를 가능하게 합니다.

멀티코어는 물리적으로 여러 개의 코어를 통해 병렬 처리를 수행합니다.
운영체제는 멀티코어 환경에서 멀티프로세스와 멀티스레드를 활용하여 작업을 효율적으로 분산합니다.

장점
- 실제 병렬 처리가 가능하여 성능이 획기적으로 향상.
- 멀티프로세스와 멀티스레드를 모두 지원.
단점
- 소프트웨어가 병렬 처리에 최적화되어 있지 않다면 멀티코어의 이점을 누리지 못함.
- 하드웨어의 비용 증가.
예시
- 멀티코어 CPU를 사용하는 데스크톱과 서버 컴퓨터.
- 데이터베이스 서버에서 대규모 병렬 쿼리 처리.
'CS' 카테고리의 다른 글
[CS] 스레드의 종류 (0) | 2024.12.10 |
---|---|
[CS] 동기와 비동기 (0) | 2024.12.05 |
[CS] 인터럽트와 시스템 콜 (1) | 2024.12.03 |
[CS] CPU bound, IO bound (1) | 2024.12.03 |
[CS] 동기화 기법 (1) | 2024.11.28 |