2025. 2. 5. 15:25ㆍNetwork 공부
Process
OS 운영체제에서 실행 중인 프로그램(작업 단위)
독립적인 메모리 공간을 가지며, 다른 프로세스와 격리된다.
하나의 프로세스가 종료되어도 다른 프로세스에 영향을 주지 않는다.
하지만 새로운 프로세스를 생성하는 데 비용과 리소스가 많이 사용된다.
ex)
- 크롬 브라우저를 실행하면 여러 개의 프로세스가 생성됨.
- firefox, nginx, apache2 같은 실행 중인 프로그램도 각각 독립적인 프로세스.
Thread
프로세스 내에서 실행되는 가벼운 작업 단위
같은 프로세스 내의 Thread 들은 메모리를 공유하며, 서로의 데이터를 주고 받기 쉽다.
Thread를 생성하는 비용이 Process 보다 적고 서로 간의 빠른 통신도 가능하다
하지만 하나에 Thread이나 문제가 발생하면 같은 Process 안에 있는 모든 Thread 가 영향을 받는다.
ex)
웹 서버에서 여러 개의 클라이언트 요청을 처리할 때, 하나의 프로세스 내에서 여러 개의 쓰레드를 생성하여 동시 처리.
멀티 쓰레드 프로그램 예시 (Python)
Multi - Process
하나의 애플리케이션이 여러 개의 프로세스를 생성하여 작업을 나누는 방식
각 프로세스는 독립적으로 실행되며, CPU 코어를 나누어 사용이 가능하다
멀티 프로세스의 장점
✔ 안정성 높음 → 하나의 프로세스가 오류로 종료되더라도, 다른 프로세스에는 영향 없음.
✔ 병렬 처리 가능 → 여러 개의 CPU 코어를 활용하여 동시에 실행 가능.
멀티 프로세스의 단점
❌ 리소스 사용량이 많음 → 각 프로세스가 별도의 메모리를 차지함.
❌ 프로세스 간 통신(IPC)이 복잡함 → 데이터 공유가 어렵고 성능 저하 가능.
✅ Apache의 Prefork MPM이 멀티 프로세스 방식이다.
✅ Python의 multiprocessing 라이브러리도 멀티 프로세스 방식.
Multi - Thread
하나의 프로세스 내에서 여러 개의 Thread 를 실행하여 동시에 여러 작업을 수행하는 방식
Thread 간 메모리를 공유하기 때문에 통신 비용이 낮고 생성 속도도 빠르다
멀티 쓰레드의 장점
✔ 메모리 사용량이 적음 → 같은 프로세스 내에서 메모리를 공유.
✔ 빠른 데이터 공유 → 프로세스 간 통신보다 쓰레드 간 데이터 공유가 쉬움.
✔ 빠른 응답 속도 → 빠르게 여러 작업을 처리 가능.
멀티 쓰레드의 단점
❌ 동기화 문제 (Race Condition) → 여러 쓰레드가 같은 메모리를 접근하면 충돌 발생 가능.
❌ 디버깅 어려움 → 쓰레드 간 상태를 관리하기 어려움.
❌ 한 쓰레드가 비정상 종료되면 전체 프로세스에 영향을 줄 수 있음.
✅ Apache의 Worker MPM과 Event MPM이 멀티 쓰레드 방식이다.
✅ Java, Python threading 라이브러리도 멀티 쓰레드 방식.
Apache
는 대표적인 Multi Process or Multi Thread 기반이다
Nginx 는 비동기 이벤트 기반
* Asynchronous Event ( 비동기 이벤트 )
https://idery-123.tistory.com/38
Synchronous vs Asynchronous ( 동기 vs 비동기 ) 방식
Synchronous ( 동기 방식 ) Requset 가 들어오면 해당 작업이 끝날 때까지 기다린 후 다음 작업을 처리하는 방식순차적(Blocking) 처리 방식으로 하나의 요청이 끝나야 다음 요청을 처리할 수 있다. 동
idery-123.tistory.com
'Network 공부' 카테고리의 다른 글
VyOS(Firewalld) (0) | 2025.02.06 |
---|---|
왜 HTTP는 Statless 인가?? (0) | 2025.02.06 |
Synchronous vs Asynchronous ( 동기 vs 비동기 ) 방식 (0) | 2025.02.05 |
ACL (Access Control List) (0) | 2025.02.05 |
Static Request vs Dynamic Request (1) | 2025.02.04 |