process의 address space를 공유한다
각 thread는 개인 stack 영역을 보유
각 thread는 개인 register set 보유
process는 1개 이상의 thread를 갖는다
process는 각자 독립된 address space를 갖는다
OS가 각 프로세스에게 가상화한 address space(virtual address space)를 준다
다른 프로세스의 주소 공간에 접근 못함
process는 오류가 발생해 강제 종료되어도, 기본적으로 다른 프로세스와 데이터를 공유하지 않기에 영향을 주지 않음
thread는 Code, Data, Heap 메모리 영역을 공유하기에 특정 thread에서 오류 발생하면 같은 프로세스 내의 다른 thread가 모두 종료될 수 있음
- process는 각각 독립된 address space를 갖는다
process는 shared memory, pipe, socket 등 IPC 활용해 통신 → 상대적으로 overhead가 크다
thread는 같은 address space를 공유해서 데이터 공유 및 통신이 더 쉽다 → 대신에 race condition과 같은 synchronize 문제 발생할 수 있음
process는 PCB를 교환하는데 비용 많이 발생하고 시간도 오래 걸림
thread는 stack을 제외한 다른 영역은 공유하기에 context switching 비용이 비교적 적다