QUESTION #0273
프론트엔드

멀티 프로세스와 멀티 스레드에 대해 설명해주세요.

멀티 프로세스와 멀티 스레드에 대해 설명해주세요.

분야: 프론트엔드


멀티 프로세스와 멀티 스레드는 컴퓨터 자원을 효율적으로 활용하고, 상황에 따라 작업의 안정성 또는 처리 속도를 개선하기 위한 기법입니다.

멀티 프로세스

먼저, 멀티 프로세스는 하나의 프로그램이 여러 개의 프로세스를 생성해, 각각이 독립적으로 실행되는 구조를 의미합니다. 각 프로세스는 자신만의 메모리 공간을 가지고 있습니다. 그래서 하나의 프로세스에서 문제가 생기더라도 다른 프로세스에는 영향을 미치지 않아 높은 안정성을 가집니다. 이처럼 격리된 실행 환경은 보안성과 충돌 방지에 강점을 보입니다.

대표적인 예시로는 크롬 브라우저의 탭 구조가 있습니다. 각 탭이 별도의 프로세스로 실행되기 때문에, 한 탭에서 무한 루프나 오류가 발생하더라도 브라우저 전체가 멈추지 않고, 해당 탭만 종료됩니다.

하지만 멀티 프로세스에는 단점도 존재합니다. 프로세스마다 메모리를 별도로 할당받기 때문에 시스템 자원 소모가 큽니다. 또한, 서로 다른 프로세스 간 데이터를 주고받기 위한 IPC(Inter-Process Communication)도 복잡하고 비용이 높습니다.

멀티 스레드

반면, 멀티 스레드는 하나의 프로세스 내부에서 여러 스레드가 동시에 작업을 수행하는 구조입니다. 이 스레드들은 하나의 메모리 공간을 공유하고, 가볍고 빠른 작업 분할이 가능하다는 점에서 성능 효율이 높습니다.

예를 들어 서버에서 네트워크 요청을 동시에 처리하거나, 게임에서 여러 캐릭터의 움직임을 병렬로 계산할 때 효과적입니다.

하지만 멀티 스레드 구조에서는 공유 자원에 대한 충돌 문제가 존재합니다. 두 스레드가 동시에 같은 메모리 주소를 수정하려고 할 때 데이터가 꼬일 수 있으며, 이를 방지하기 위해 락이나 세마포어 같은 동기화 기술을 사용해야 합니다. 이러한 동기화 처리에는 추가적인 코드 복잡도와 성능 저하의 위험도 따라옵니다.

📚 추가 학습 자료를 공유합니다.