본문 바로가기
Frontend

프로세스와 스레드

by (╯✧▽✧)╯┻━┻ 2024. 3. 6.

 

 

프로세스와 스레드

 

 

프로세스(Process)와 스레드(Thread)는 운영체제에서 실행되는 프로그램의 기본 단위다

 

프로세스

프로세스는 실행 중인 프로그램의 인스턴스다

운영체제에서 프로세스는 자체적인 코드, 데이터, 힙(Heap), 스택(Stack) 공간 등을 가진 독립적인 실행 환경을 제공받는다

프로세스는 최소 하나 이상의 스레드(메인 스레드)를 포함하며,

각 프로세스는 다른 프로세스와는 독립적으로 실행된다

프로세스 간 통신(IPC, Inter-Process Communication)을 위해서는 특별한 메커니즘이 필요하다

주요 특징

  • 독립적인 메모리 영역(코드, 데이터, 힙, 스택)을 가짐
  • 다른 프로세스와는 독립적으로 실행
  • 자원 사용량이 스레드에 비해 많음
  • 컨텍스트 스위칭 비용이 높음

 

스레드

스레드는 프로세스 내에서 실행되는 실행의 단위다

하나의 프로세스는 여러 개의 스레드를 가질 수 있으며,

이 스레드들은 프로세스의 자원(메모리 등)을 공유한다

스레드는 각자의 스택을 가지지만, 코드, 데이터, 힙 영역은 프로세스 내의 다른 스레드와 공유한다

멀티스레딩은 프로그램의 동시 실행을 가능하게 하여 성능을 향상시킬 수 있다

주요 특징:

  • 프로세스 내에서 공유 메모리를 사용하여 통신 및 데이터 공유가 용이
  • 각 스레드는 독립적인 실행 흐름을 가지지만, 같은 프로세스 내 스레드끼리 자원을 공유
  • 자원 사용량이 프로세스에 비해 적음
  • 컨텍스트 스위칭 비용이 낮음

 

프로세스와 스레드의 차이

  • 메모리 공유
    • 프로세스 간에는 독립적인 메모리 공간을 사용하며, 스레드 간에는 메모리(힙 영역)를 공유함
  • 통신 및 동기화
    • 스레드 간 통신과 동기화는 비교적 간단하지만, 프로세스 간 통신(IPC)은 더 복잡한 메커니즘을 필요로 한다
  • 생성 및 관리 비용
    • 스레드는 프로세스에 비해 생성 및 관리 비용이 낮다
    • 프로세스의 컨텍스트 스위칭은 더 많은 오버헤드를 발생시킨다

 

프로세스와 스레드는 각각의 장단점을 가지고 있으며,

애플리케이션의 요구 사항과 성능 목표에 따라 적절하게 선택하여 사용해야 한다