[CS] 프로세스와 스레드의 차이

insung·2025년 5월 2일

CS

목록 보기
14/20
post-thumbnail

프로세스 (Process)

  • 독립적인 실행 단위
  • 실행 중인 프로그램 하나하나를 프로세스라고 칭함.
  • 각 프로세스는 독립적인 메모리 공간을 가지고 있어서 서로의 자원에 직접 접근할 수 없음.

특징

  • 독립성
    • 다른 프로세스에 영향을 주지 않음.
    • 하나의 프로세스에 문제가 생겨도 다른 프로세스는 안전.
  • 자원 할당
    • 운영체제로부터 독립적인 메모리, 파일, 장치 등의 자원을 할당.
  • 생성 및 종료
    • 프로세스를 새로 만들거나 종료하는 것은 비교적 많은 시스템 자원을 소모하는 작업.
  • 통신
    • 프로세스 간에 데이터를 주고받으려면 파이프, 소켓, 메시지 큐 등 복잡한 통신 방법을 사용.

스레드 (Thread)

  • 프로세스 내의 실행 흐름 단위
  • 하나의 프로세스 내에서 여러 개의 실행 흐름이 동시에 진행될 수 있도록 하는 단위.

특징

  • 공유 자원
    • 같은 프로세스 내의 스레드들은 메모리, 파일, 코드 등의 자원을 공유.
  • 경량성
    • 스레드를 생성하고 종료하는 것은 프로세스에 비해 훨씬 적은 자원을 소모하고 빠름.
  • 동시성
    • 여러 스레드가 번갈아 가며 또는 실제로 동시에 작업을 수행하여 하나의 프로세스가 여러 작업을 효율적으로 처리할 수 있게 해줌
  • 통신
    • 같은 프로세스 내의 스레드들은 메모리를 공유하므로 통신이 훨씬 쉽고 빠름.

핵심적인 차이점

  • 특징
    • 프로세스 (Process)
      • 독립성 높음 (자원 격리)
    • 스레드 (Thread)
      - 독립성 낮음 (자원 공유)
  • 자원 할당
    • 프로세스 (Process)
      • 독립적인 자원 할당
    • 스레드 (Thread)
      • 프로세스 자원 공유
  • 생성/종료!
    • 프로세스 (Process)
      • 자원 소모 큼, 느림
    • 스레드 (Thread)
      • 자원 소모 작음, 빠름
  • 통신
    • 프로세스 (Process)
      • 복잡하고 느림
    • 스레드 (Thread)
      • 간단하고 빠름

언제 무엇을 사용해야하는가?

  • 프로세스
    • 완전히 독립적인 작업들을 동시에 실행해야 하거나, 하나의 작업 실패가 다른 작업에 영향을 주지 않아야 할 때 유용.
    • 예를 들어, 웹 브라우저에서 여러 개의 탭을 각각 다른 프로세스로 실행하는 것.
  • 스레드
    • 하나의 프로그램 내에서 여러 작업을 동시에 처리하여 응답성을 높이거나 효율성을 극대화하고 싶을 때 유용.
    • 예를 들어, 워드 프로세서에서 문서 편집과 맞춤법 검사를 동시에 수행하는 것
profile
안녕하세요 프론트엔드 관련 포스팅을 주로 하고 있습니다

0개의 댓글