인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]

사용자 수준 스레드 & 커널 수준 스레드

자식 프로세스를 쓰는 이유

작성

·

42

·

수정됨

0

안녕하세요 선생님, 강의 정말 잘 듣고 있습니다.

2장의 내용을 복습하다가 궁금한 점이 생겼어요

 

여러개의 자식 프로세스를 사용하는 것과 멀티스레드를 사용하는 것의 목적이 서로 상이할까요?

 

아파치의 woker mpm 방식의 경우에는

자식 프로세스도 여러 개 생성하고 각각의 자식 프로세스들이 멀티 스레드 방식을 사용하고 있어서요...

 

어떤 이점을 취할 수 있는 경우에 자식 프로세스를 혹은 멀티 스레드를 선택하는 건가요?

 

제가 생각하기로 멀티스레드만을 사용할 경우에는 비교적 메모리 리소스를 효율적으로 사용할 수 있지만, 가용성을 위해 여러 대의 서버 장비를 두어야 하고

자식 프로세스가 많을 경우 한 서버의 자원은 많이 먹지만 하나의 장비 내 가용성이 높아지지 않을까 추측하고 있습니다...

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

자식 프로세스를 사용하는 것과 멀티스레드를 사용하는 것 사이에 주된 차이점은 리소스 관리와 격리 수준에 있습니다. 멀티스레드는 하나의 프로세스 내에서 실행되기 때문에 스레드 간 메모리와 리소스를 공유합니다. 이는 메모리 사용량을 줄이고 통신 비용을 낮출 수 있지만, 한 스레드에서 발생한 문제가 다른 스레드에 영향을 줄 수 있는 위험이 있습니다.

반면, 자식 프로세스는 각기 독립된 메모리 공간을 가지므로 하나의 프로세스에서 발생한 문제가 다른 프로세스에 영향을 주지 않습니다. 이로 인해 더 높은 격리 수준을 제공할 수 있지만, 프로세스간 통신(IPC)이 필요할 때 메모리와 리소스를 공유하지 않기 때문에 상대적으로 더 많은 자원을 소비하고 통신 비용이 높아집니다.

자식 프로세스와 멀티스레드의 선택은 이러한 특성을 고려하여 응용 프로그램의 요구 사항에 따라 결정되어야 합니다. 예를 들어, 높은 격리 수준이 필요하거나 개별 프로세스가 실패해도 시스템 전체에 영향을 주지 않도록 해야 하는 경우에는 자식 프로세스를 사용하는 것이 유리할 수 있습니다. 반면, 리소스 사용을 최소화하고 빠른 커뮤니케이션이 필요한 경우에는 멀티스레드가 더 적합할 수 있습니다.

hylim님이 생각하신 것처럼, 멀티스레드만을 사용하는 경우에는 메모리 리소스를 더 효율적으로 사용할 수 있지만, 자식 프로세스를 많이 사용하는 경우 한 시스템 내에서의 격리와 가용성을 높일 수 있습니다. 각각의 방식은 장단점이 있기 때문에 응용 프로그램의 특정 요구사항에 맞게 적절히 선택하여 사용하는 것이 중요합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기