프로세스

  • 정의
    • 실행중인 프로그램의 인스턴스를 의미
    • 운영체제로부터 독립적인 메모리 공간과 자원(CPU, 메모리 등)을 항당받아 실행
  • 특징
    • 실행중인 프로그램을 의미하며 여러 개의 프로셋,가 동시에 실행할 수 있음
    • 각각 독립적인 코드, 데이터, 힙, 스택 메모리 공간을 가짐
    • 다른 프로세스와 메모리를 공유하지 않음-> 프로세스 간 통신(IPC, Inter-Process Communication)이 필요
    • 운영체제에 의해 개별적으로 개별적으로 관리됨(PID(Process)부여)
  • 메모리 구조
    • 코드 영역: 실행할 프로그램의 명령어가 저장됨
    • 데이터 영역: 전역 변수 및 정적 변수가 저장됨
    • 힙 영역: 동적 메모리 할당을 저장하는 공간
    • 스택 영역: 함수 호출, 지역변수 저장(각 스레드마다 개별적으로 할당됨)
  • 실행 예시
    • 게임 실행시, 게임 실행 파일이 프로세스로 로드되어 실행됨
    • 인터넷 브라우저에서 각 탭이별도의프로세스로 실행되지만(하나의 탭이 충돌해도 다른탭에 영향이 없음), 각 프로세스마다 메모리 할당을 받기 때문에 메모리 사용량이 증가

스레드

  • 정의
    • 프로세스 내에서 실행되느 작업 단위
    • 하나의 프로세스는푀소 하나의 메인 스레드를 가지며, 여러 개의 스레드를 가질 수도 있음
  • 특징
    • 같은 프로세스 내에서 여러 개의 스레드가 실행될 수 있음
    • 코드, 데이터, 힙, 메모리를 공유하지만, 스택은 개별적으로 할당됨
    • 스레드 간 데이터 공유가 가능하지만 동기화 문제(레이스 컨디션 등)가 발생할 수 있음
    • 문맥 전환(Context Switchig) 비용이 낮음
  • 메모리 구조
    • 스레드는 프로세스의 메모리 공간을 공유하지만, 개별적으로 할당되는 영역이 있음
    • 공유하는 영역 : 코드, 데이터, 힙
    • 개별적인 영역 : 스택(각 스레드마다 별도 할당)
  • 실행 예시
    • 게임내에서 그래픽 렌더링 스레드, 물리 연산 스레드, AI 처리 스레드 등이 동시에 실행
    • 웹 브라우저에서 UI 업데이트 스레드, 네트워크 통신 스레드, 렌더링 스레드가 독립적으로 동작

차이점

구분 프로세스(Process) 스레드(Thread)
정의 실행 중인 프로그램의 인스턴스 프로세스 내에서 실행되는 작업 흐름
메모리 구조 독립적인 메모리 공간 가짐 같은 프로세스의 메모리를 공유(스택만 개별 할당)
자원할당 운영체제로부터 독립적인 자원 할당 같은 프로세스 내에서 자원을 공유
통신 방식 프로세스 간에는 IPC(Inter-Process Communication, 메시지 큐, 파이프 )필요 스레드는 공유 메모리를 사용하므로 빠르게 통신 가능
문맥 전환 비용 높음(별도의 메모리 공간 필요, PCB(Process Control Block) 관리) 낮음(같은 프로세스 내에서 동작)
예제 게임, 웹 브라우저, 텍스트 편집기, 동영상 플레이어 게임의 AI 연산, 브라우저의 렌더링 스레드, 백그라운드 다운로
적절한 사용 예 독립적인 실행 환경이 필요할 때, 서로 다른 권한이나 보안 이 필요한 경우(샌드박싱 환경 등), 프로그램 충돌 시 다른 작업에 영향을 주지 않도록 할때 같은 자원을 공유하면서 여러 작업을 동시에 실행할때
빠른 데이터 공유가 필요할때
CPU 연산을 분산하여 성능을 향상시킬 때(멀티코어 활용)

 

 

 

'오늘의 키워드' 카테고리의 다른 글

Perlin Noise VS Simplex Noise  (0) 2025.02.18
언리얼 리플렉션 시스템  (0) 2025.02.10
스넬의 법칙, 프레넬 방적식  (0) 2025.02.06
반사/굴절 벡터  (0) 2025.02.04
슬라이딩 벡터  (0) 2025.01.23