Topcit

스레드와 멀티프로세스

Life Log 2024. 11. 11. 12:49
728x90
반응형

1. 스레드 (Thread)

스레드는 하나의 프로세스 내에서 병렬 작업을 수행할 수 있는 경량화된 실행 단위입니다. 스레드들은 같은 프로세스의 메모리 공간을 공유하며 실행되기 때문에 빠른 데이터 접근효율적인 메모리 사용이 가능합니다.

  • 공유 가능한 자원:

    • 데이터(Data) 영역: 전역 변수, 정적 변수 등
    • 힙(Heap) 영역: 동적으로 할당된 메모리
    • 파일 디스크립터: 파일, 소켓 등의 자원 핸들
  • 공유 불가능한 자원:

    • 스택(Stack) 영역: 각 스레드는 독립적인 스택을 가집니다 (지역 변수 및 함수 호출 스택)
    • 레지스터: 각 스레드는 별도의 레지스터 값을 가집니다.
  • 장점:

    • 빠른 통신: 공유 메모리 덕분에 빠른 데이터 교환이 가능함.
    • 메모리 효율성: 메모리를 공유하므로 추가적인 메모리 할당이 적음.
  • 단점:

    • 동기화 문제: 여러 스레드가 동시에 자원에 접근할 때 경쟁 상태(Race Condition)가 발생할 수 있음.
    • 데드락(Deadlock): 자원 동기화 문제로 인해 스레드들이 서로의 자원을 기다리며 무한 대기에 빠질 수 있음.

2. 멀티프로세스 (Multi-Process)

멀티프로세스는 여러 독립적인 프로세스를 병렬로 실행하는 방식입니다. 각 프로세스는 자체 메모리 공간을 가지며, 독립적으로 실행됩니다. 이로 인해 안정성이 높지만, 메모리 사용량이 증가할 수 있습니다.

  • 공유 가능한 자원:

    • 공유 메모리(SHM) 및 IPC 메커니즘: 프로세스 간 통신을 위해 별도로 설정된 공유 메모리 영역
  • 공유 불가능한 자원:

    • 데이터(Data), 스택(Stack), 힙(Heap): 모든 메모리 영역이 독립적임
    • 파일 디스크립터: 독립적으로 관리됨 (필요 시, IPC로 데이터 교환)
  • 장점:

    • 안정성: 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않음.
    • 병렬 처리 성능: 멀티코어 CPU에서 독립적인 병렬 처리가 가능함.
  • 단점:

    • 높은 메모리 사용량: 각 프로세스가 독립적인 메모리 공간을 가지기 때문에 메모리 소비가 큼.
    • 복잡한 데이터 교환: IPC 설정이 필요하고 성능이 저하될 수 있음.
    • 데드락 문제: 프로세스 간 자원 경합으로 인해 데드락이 발생할 수 있음.

3. 스레드와 멀티프로세스 비교표

특성 멀티스레드 멀티프로세스
메모리 사용 메모리 공간 공유 독립된 메모리 공간 사용
통신 속도 빠름 (공유 메모리 사용) 느림 (IPC 사용 필요)
안정성 오류 시 전체 프로세스에 영향 오류 전파 없음
동기화 문제 경합 상태 및 데드락 발생 가능 동기화 문제 적음, 그러나 IPC 설정 필요
적용 사례 웹 서버, 실시간 애플리케이션 데이터 분석, 분산 처리 시스템

결론

  • 멀티스레드는 메모리를 공유하여 자원 효율성이 높지만, 동기화 문제와 데드락의 위험이 큽니다. 따라서 빠른 데이터 교환이 필요하고 자원 경합이 적은 경우에 적합합니다.
  • 멀티프로세스는 독립적인 메모리 구조 덕분에 안정성이 높으며, 안정성과 독립적인 병렬 처리가 중요한 경우에 유리합니다. 그러나 메모리 사용량이 많고 통신 비용이 증가할 수 있습니다.
728x90
반응형