Search
🏃

프로세와 스레드의 개념

프로세스

메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적)
별도의 code, data, stack, heap 영역을 할당 받음
최소 한 개의 스레드(메인 스레드를 가짐)
다른 프로세스의 자원에 접근하려면 프로세스 간 통신 필요 (IPC, inter-process communication)

스레드

프로세스 내에서 실행되는 여러 흐름의 단위
각각 stack만 할당받고 code, data, heap 영역은 공유
별도의 register와 stack을 가지고 있지만 heap 메모리 영역은 서로 읽고 쓸 수 있다.

멀티 프로세스

하나의 프로그램을 여러 개의 프로세스로 구성하여 작업처리
장점
한 자식 프로세스에서 문제 발생 시 다른 자식 프로세스로 영향이 확대되지 않음
단점
context switching 과정에서의 오버헤드 (캐쉬 메모리 초기화 등)
프로세스 사이의 어렵고 복잡한 통신 기법(IPC)

멀티 스레드

하나의 프로그램을 여러 개의 스레드로 구성하여 작업 처리
장점
시스템 자원 소모 감소 (프로세스 생성 및 자원할당 시스템 콜)
시스템 처리량 증가 (스레드 간 정보 교환이 빨라 context switching이 빠름)
간단한 통신 방식 (IPC에 비해 간단하고 통신 비용이 적다)
단점
한 스레드에서 문제 발생 시 전체 프로세스가 영향 받음
동기화 문제 (전역 변수(데이터 세그먼트)사용 시 충돌 문제)

출처

프로세스와 스레드의 차이
간단하게 핵심 위주로 작성 됨