운영체제

프로세스와 스레드

kiwi_wiki 2025. 1. 19. 08:00
728x90
반응형

프로세스(Process)

  • 메모리에 로드된 실행 중인 프로그램의 인스턴스
  • 운영체제로부터 독립적인 메모리 공간을 할당받으며 코드, 데이터, 스택, 힙 메모리를 포함
  • 각 프로세스는 서로 독립적이며 하나의 프로세스가 종료되어도 다른 프로세스에는 영향을 주지 않음

스레드(Thread)

  • 프로세스 내에서 실제 작업을 수행하는 실행 단위
  • 프로세스 내의 다른 스레드와 메로리를 공유하며 스택과 PC(Program Counter)는 개병적으로 관리됨
  • 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며 이를 멀티스레딩(Multi-threading) 이라고 함
  프로세스 스레드
정의 실행 중인 프로그램의 독립적인 인스턴스 프로세스 내에서 실행되는 작업 단위
메모리 프로세스 간에는 메모리를 공유하지 않음 동일 프로세스 내에서 메모리를 공유
오버헤드 프로세스를 생성할 때 더 많은 자원과 시간이 필요 스레드는 프로세스보다 가볍고 생성 속도가 빠름
독립성 프로세스 간에는 독립적 동일 프로세스 내 스레드는 서로 영향을 줄 수 있음
통신 방식 프로세스 간 통신을 통해 데이터 공유 같은 프로세스 내에서는 스택을 제외한 메모리 공유 가능

멀티 스레딩과 멀티 프로세싱

멀티 스레딩

  • 하나의 프로세스 내에서 여러 개의 스레드가 병렬로 실행되는 방식
  • 공유 메모리를 통해 스레드 간 데이터 교환이 빠르지만 경합 조건, 데드락 등의 문제를 처리해야 함
  • 장점
    • 메모리 효율적: 프로세스 내 메모리를 공유하므로 메모리 사용량이 적음
    • 빠른 컨텍스트 스위칭: 스레드 간 전환이 빠름
    • I/O작업에 유리: 비동기 작업, 네트워크 요청 등에서 성능 향상
  • 단점
    • 스레드 안전 문제: 공유 자원을 사용할 때 동기화가 필요
    • 데드락 위험: 여러 스레드가 자원을 점유하고 대기하는 상황 발생 가능
  • 사용 사례: 웹 서버, 게임 서버와 같이 동시에 많은 요청을 처리해야하는 시스템

멀티 프로세싱

  • 여러 개의 프로세스를 병렬로 실행하는 방식
  • 각 프로세스는 독립적인 메모리 공간을 사용하며 서로 간섭하지 않음
  • 장점
    • 안정성: 한 프로세스가 실패해도 다른 프로세스에 영향을 주지 않음
    • 병렬 처리: 멀티코어 CPU에서 각 프로세스를 병렬로 실행하여 CPU 활용률 극대화
  • 단점
    • 높은 메모리 사용량: 프로세스마다 메모리를 따로 할당받아야 함
    • 느린 프로세스 생성: 프로세스 간 컨텍스트 스위칭이 느림
    • 프로세스 간 통신비용(IPC): 프로세스 간 데이터 공유가 복잡하고 비용이 큼
  • 사용 사례: 마이크로서비스 아키텍처, 데이터 분석, 대규모 백엔드 시스템 등 독립적인 작업 단위로 나눌 수 있는 경우
  멀티 스레딩 멀티 프로세싱
메모리 사용 메모리를 공유하여 효율적 각 프로세스마다 메모리 공간을 할당
컨텍스트 스위칭 속도 빠름 상대적으로 느림
안정성 한 스레드의 오류가 프로세스 전체에 영향을 줄 수 있음 한 프로세스의 오류가 다른 프로세스에 영향을 주지 않음
데이터 공유 동일 프로세스 내에서 공유 메모리를 사용하여 쉽게 데이터 교환 프로세스 간 통신(IPC)을 통해 데이터 공유 필요
사용 사례 웹 서버, 게임 서버, 비동기 작업 마이크로 서비스, 분산 처리 시스템, 시스템 분석
728x90
반응형