프로세스
- 정의
- 실행중인 프로그램의 인스턴스를 의미
- 운영체제로부터 독립적인 메모리 공간과 자원(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 |