CS/운영체제

[운영체제] 프로세스(Process)와 스레드(Thread) 차이 (멀티 프로세스, 멀티 스레드)

Heeyeon Choi 2024. 10. 30. 14:49
728x90

프로세스(Process)

  • 개념: 프로세스는 실행 중인 프로그램의 인스턴스로, 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 가지고 실행됩니다.
  • 특징:
    • 독립성: 각 프로세스는 고유의 메모리 영역을 사용하며, 다른 프로세스와 메모리를 공유하지 않기 때문에 독립적으로 실행됩니다.
    • 메모리 소비: 프로세스는 고유의 메모리를 할당받기 때문에 상대적으로 메모리 소모가 큽니다.
    • 안정성: 하나의 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않으므로 안정성이 높습니다.

스레드(Thread)

  • 개념: 스레드는 프로세스 내에서 실행되는 작업의 실행 단위로, 프로세스 내의 메모리 공간을 공유하면서 여러 작업을 동시에 수행합니다.
  • 특징:
    • 메모리 공유: 같은 프로세스 내 스레드는 메모리(코드, 데이터, 힙)를 공유하지만, 각 스레드는 개별 스택과 레지스터를 가집니다.
    • 가벼움: 프로세스보다 적은 메모리를 사용하며, 생성과 관리가 더 효율적입니다.
    • 안정성 낮음: 하나의 스레드가 오류를 일으키면 같은 프로세스 내 다른 스레드에도 영향을 미칠 수 있습니다.

프로세스와 스레드의 차이점

구분프로세스(Process)스레드(Thread)

메모리 공유 독립적인 메모리 공간을 사용 동일 프로세스 내에서 메모리 공간 공유
메모리 사용량 메모리 소비가 큼 메모리 소비가 적음
실행 단위 독립적인 실행 단위 프로세스 내의 실행 단위
안정성 다른 프로세스에 영향을 미치지 않음 같은 프로세스 내 스레드에 영향 미칠 수 있음
생성 비용 생성 및 관리 비용이 높음 생성 및 관리 비용이 적음

멀티 프로세스(Multi-Process)

  • 개념: 여러 개의 프로세스를 동시에 실행하여 작업을 병렬 처리하는 방식입니다.
  • 특징:
    • 안정성: 프로세스가 독립적이므로 하나의 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않습니다.
    • 메모리 소비가 큼: 각 프로세스가 개별 메모리를 사용하므로, 메모리 소모가 증가할 수 있습니다.
    • 예시: 웹 브라우저의 탭마다 별도의 프로세스를 사용해, 하나의 탭이 충돌해도 다른 탭에 영향을 주지 않습니다.

멀티 스레드(Multi-Thread)

  • 개념: 하나의 프로세스 내에서 여러 스레드를 동시에 실행하여 작업을 병렬 처리하는 방식입니다.
  • 특징:
    • 효율성: 스레드 간 메모리를 공유하므로 메모리 소모가 적고, 데이터 통신이 빠릅니다.
    • 안정성 낮음: 스레드가 같은 메모리 공간을 공유하므로, 하나의 스레드가 실패하면 전체 프로세스에 영향을 미칠 수 있습니다.
    • 예시: 게임 프로그램에서 그래픽 렌더링, 사운드, 사용자 입력을 각 스레드가 동시에 처리합니다.

멀티 프로세스와 멀티 스레드의 차이점

구분멀티 프로세스(Multi-Process)멀티 스레드(Multi-Thread)

메모리 사용량 각 프로세스가 독립적인 메모리 사용 메모리를 공유하므로 사용량이 적음
안정성 한 프로세스의 오류가 다른 프로세스에 영향 없음 한 스레드의 오류가 전체 프로세스에 영향
데이터 통신 속도 프로세스 간 통신이 느림 스레드 간 통신이 빠름
생성 및 관리 비용 프로세스 생성/관리 비용이 큼 스레드 생성/관리 비용이 적음

결론

  • 멀티 프로세스는 안정성이 중요한 경우에 적합하며, 서로 독립적으로 실행됩니다.
  • 멀티 스레드는 메모리 효율성이 중요하고, 빠른 데이터 공유가 필요한 경우에 적합하지만, 안정성이 상대적으로 낮습니다.

두 방식을 적절히 활용하면 시스템 성능과 효율성을 높이면서 안정성을 유지할 수 있습니다.

728x90