본문 바로가기
CODE/CodeKnowledge

[운영체제] Multi thread와 multi process

by 솔리닉__ 2023. 11. 17.
반응형

 

 

Multi-threading 정의

 

**멀티 스레딩(Multi-threading)**은 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것을 의미합니다. 스레드는 프로세스의 실행 단위로, 프로세스 내의 메모리와 자원을 공유하며 독립적으로 실행됩니다. 멀티 스레딩의 장점은 다음과 같습니다:

  • 자원의 효율적 사용: 스레드 간 메모리와 자원을 공유하기 때문에, 프로세스를 여러 개 생성하는 것보다 자원을 더 효율적으로 사용할 수 있습니다.
  • 응답성 향상: 한 스레드가 블록되어도 다른 스레드는 계속 작업을 수행할 수 있어, 응용 프로그램의 응답성이 향상됩니다.
  • 병렬 처리 강화: 멀티코어 프로세서에서 각 코어에 다른 스레드를 할당하여 병렬 처리 능력을 극대화할 수 있습니다.

 

Multi-process VS Multi-thread

  1. 자원 공유:
    • 멀티 프로세스: 각 프로세스는 독립된 메모리 공간을 가지며, 프로세스 간 자원 공유가 기본적으로 제한됩니다.
    • 멀티 스레드: 하나의 프로세스 내의 스레드들은 메모리와 자원을 공유합니다.
  2. 통신 비용 및 오버헤드:
    • 멀티 프로세스: 프로세스 간 통신(IPC)은 복잡하고 비용이 더 많이 듭니다.
    • 멀티 스레드: 스레드 간 통신은 비교적 쉽고, 오버헤드가 적습니다.
  3. 안정성과 보안:
    • 멀티 프로세스: 하나의 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않아 안정성이 높습니다.
    • 멀티 스레드: 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 줄 수 있어 상대적으로 취약합니다.
    •  

Multi-process 환경에서의 데이터 교환 방법

멀티 프로세스 환경에서 프로세스 간 데이터를 교환하는 방법에는 다음과 같은 것들이 있습니다:

  1. 파이프(Pipes): 일방향 통신 채널로, 한 프로세스에서 다른 프로세스로 데이터를 전송합니다.
  2. 메시지 큐(Message Queues): 프로세스 간 메시지를 교환하기 위해 사용되며, 복잡한 데이터 구조를 전송할 수 있습니다.
  3. 공유 메모리(Shared Memory): 서로 다른 프로세스가 접근할 수 있는 메모리 영역을 설정하여 데이터를 공유합니다.
  4. 세마포어(Semaphores) / 뮤텍스(Mutexes): 공유 자원에 대한 접근을 동기화하는 데 사용됩니다.
  5. 소켓(Sockets): 네트워크를 통해 서로 다른 시스템의 프로세스 간에도 통신할 수 있습니다.
반응형

댓글