[OS]multi process와 multi thread

·

2 min read

크롬에서 탭을 쓴다고 생각해봅시다. 우리는 chat gpt를 쓰던 학교 강의를 듣던 여러개의 탭을 켜놓고 작업들을 할 것입니다. 이 때에 우리는 멀티 프로세스(Multi-process)와 멀티 스레드(Multi-thread)의 개념을 생각해 볼 수 있습니다.

  1. 멀티-프로세스 모델 : 크롬은 탭이 마치 독립된 브라우저처럼 작동합니다.

  2. 멀티-쓰레드 사용: 각각의 탭이 각각 하나의 프로세스이고 그 안에서는 다수의 쓰레드가 사용됩니다. ex) 웹페이지 렌더링, 자바스크립트 실행, 네트워크 작업 등은 별도의 쓰레드에서 처리될 수 있습니다.

멀티 프로세스(Multi-process)와 멀티 스레드(Multi-thread)는 컴퓨터 프로그램이 작업을 병렬로 수행하는 두 가지 주요 방법입니다. 각각의 방식은 장단점이 있으며, 특정 상황에 따라 적합한 선택이 달라질 수 있습니다.

멀티 프로세스(Multi-process)

  1. 정의: 멀티 프로세스는 여러 개의 독립적인 프로세스가 동시에 실행되는 방식입니다. 각 프로세스는 자신만의 메모리 공간과 시스템 자원을 가집니다.

  2. 장점:

    • 격리성: 프로세스 간에 메모리와 자원이 분리되어 있어, 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다.

    • 안정성: 한 프로세스의 충돌이 시스템 전체에 영향을 미치는 일이 적습니다.

  3. 단점:

    • 자원 소모: 각 프로세스는 독립적인 메모리와 자원을 가지므로, 많은 자원을 소모합니다.

    • 통신 복잡성: 프로세스 간 통신(IPC)이 복잡하고 비용이 많이 듭니다.

멀티 스레드(Multi-thread)

  1. 정의: 멀티 스레드는 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 방식입니다. 이들 스레드는 프로세스의 메모리와 자원을 공유합니다.

  2. 장점:

    • 자원 효율성: 스레드는 프로세스의 자원을 공유하기 때문에, 자원 소모가 프로세스에 비해 적습니다.

    • 통신 용이성: 같은 메모리 공간을 공유하기 때문에 스레드 간 통신이 더 간단하고 효율적입니다.

  3. 단점:

    • 안정성 문제: 한 스레드의 문제가 전체 프로세스에 영향을 줄 수 있습니다.

    • 동시성 문제: 공유 자원에 대한 접근 관리가 필요하며, 이를 위한 동기화 처리가 필요합니다.

비교

  • 자원 관리: 멀티 프로세스는 자원을 공유하지 않기 때문에 관리가 더 단순하지만, 더 많은 자원을 소모합니다. 반면, 멀티 스레드는 효율적인 자원 사용을 가능하게 하지만, 공유 자원에 대한 복잡한 동기화가 필요합니다.

  • 성능과 오버헤드: 멀티 스레드는 컨텍스트 스위칭 오버헤드가 프로세스보다 작기 때문에 성능상 이점이 있습니다. 반면, 멀티 프로세스는 프로세스 간 컨텍스트 스위칭에 더 많은 비용이 듭니다.

  • 안정성과 격리성: 멀티 프로세스는 프로세스 간 격리가 잘 되어 있어 안정성이 높습니다. 그러나 멀티 스레드는 한 스레드의 오류가 전체 프로세스에 영향을 줄 수 있어, 상대적으로 안정성이 낮습니다.

    -edited by 조준형