프로세스
•
메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적)
•
별도의 code, data, stack, heap 영역을 할당 받음
•
최소 한 개의 스레드(메인 스레드를 가짐)
•
다른 프로세스의 자원에 접근하려면 프로세스 간 통신 필요 (IPC, inter-process communication)
스레드
•
프로세스 내에서 실행되는 여러 흐름의 단위
•
각각 stack만 할당받고 code, data, heap 영역은 공유
•
별도의 register와 stack을 가지고 있지만 heap 메모리 영역은 서로 읽고 쓸 수 있다.
멀티 프로세스
•
하나의 프로그램을 여러 개의 프로세스로 구성하여 작업처리
•
장점
◦
한 자식 프로세스에서 문제 발생 시 다른 자식 프로세스로 영향이 확대되지 않음
•
단점
◦
context switching 과정에서의 오버헤드 (캐쉬 메모리 초기화 등)
◦
프로세스 사이의 어렵고 복잡한 통신 기법(IPC)
멀티 스레드
•
하나의 프로그램을 여러 개의 스레드로 구성하여 작업 처리
•
장점
◦
시스템 자원 소모 감소 (프로세스 생성 및 자원할당 시스템 콜)
◦
시스템 처리량 증가 (스레드 간 정보 교환이 빨라 context switching이 빠름)
◦
간단한 통신 방식 (IPC에 비해 간단하고 통신 비용이 적다)
•
단점
◦
한 스레드에서 문제 발생 시 전체 프로세스가 영향 받음
◦
동기화 문제 (전역 변수(데이터 세그먼트)사용 시 충돌 문제)
출처
•
프로세스와 스레드의 차이
•
간단하게 핵심 위주로 작성 됨