멀티쓰레드와 멀티프로세스는 여러 작업을 동시에 처리할 수 있는 기술이다. 그러나 두 기술은 다음과 같은 차이점이 있다.
- 자원 공유 : 멀티쓰레드는 하나의 프로세스 내에서 여러 쓰레드가 자원을 공유하여 사용한다. 반면 멀티프로세스는 서로 다른 프로세스끼리 자원을 공유할 수 없다.
- 컨텍스트 스위칭 : 멀티쓰레드는 쓰레드 간의 전환 시에 컨텍스트 스위칭이 일어나며, 이는 비교적 빠른 속도로 일어난다. 반면 멀티프로세스는 프로세스 간의 전환 시에도 컨텍스트 위치잉이 일어나며, 이는 상대적으로 느린 속도로 일어난다.
- 메모리 사용 : 멀티쓰레드는 하나의 프로세스 내에서 여러 쓰레드가 메모리를 공유하여 사용하기 때문에, 메모리 사용량이 비교적 적다. 반면 멀티프로세스는 각각의 프로세스가 독립적으로 사용하기 때문에, 메모리 사용량이 많을 수 있다.
- 프로그래밍 복잡도 : 멀티쓰레드는 하나의 프로세스 내에서 쓰레드를 생성하고 관리하기 때문에, 프로그래밍이 비교적 간단하다. 반면 멀티프로세스는 서로 다른 프로세스끼리 자원을 공유하지 않으므로, 프로그래밍이 비교적 복잡하다.
멀티쓰레드 서버의 장단점
장점 :
- 멀티쓰레드는 공유 메모리에 접근하므로, 쓰레드 간 데이터 공유가 빠르고 간단하다.
- 쓰레드를 생성하고 삭제하는 비용이 적다. 멀티프로세스는 프로세스를 생성하고 삭제하는 데 더 많은 시간이 필요하다.
- CPU를 공유하므로, 시스템 자원의 효율적인 사용이 가능하다.
단점 :
- 공유 메모리에 접근하는 동안에는 뮤텍스 등의 동기화 기법이 필요하다. 이ㅡㄹ 제대로 구현하지 않으면 데이터 불일치 등의 문제가 발생할 수 있다.
- 하나의 쓰레드에서 발생한 오류는 전체 프로세스를 종료시킬 수 있다.
- 쓰레드 간의 경쟁 조건 등, 복잡한 동시성 문제가 발생할 수 있다.
멀티프로세스 서버의 장단점
장점 :
- 각 프로세스는 독립적이므로, 하나의 프로세스가 오류를 일으켜도 다른 프로세스에는 영향을 미치지 않는다.
- 프로세스 간 통신 방법으로 인터프로세스 통신(IPC) 등을 사용하여 데이터 공유가 가능하다.
단점 :
- 프로세스를 생성하고 삭제하는 데 더 많은 시간과 자원이 필요하다.
- IPC 방법은 쓰레드 간의 공유 메모리보다 복잡하다.
- CPU를 공유하지 않기 때문에, 시스템 자원의 효율적인 사용이 어렵다.
'기술면접 > 백엔드종합' 카테고리의 다른 글
인증과 권한 부여의 차이점 (0) | 2023.04.24 |
---|---|
쿠키와 세션의 차이 (0) | 2023.04.24 |
RESTful API란? (0) | 2023.04.24 |
동기화에 대해서 (0) | 2023.04.24 |
프로세스와 스레드의 차이 (0) | 2023.04.14 |