process는 자신만의 격리된 메모리(주소 공간)를 가진 실행 중인 프로그램이고, thread는 프로세스 내부의 실행 단위다. 하나의 프로세스는 여러 thread를 가질 수 있고, 그 thread들은 프로세스의 메모리를 공유한다 — 하지만 각 프로세스는 다른 모든 프로세스로부터 격리된다.
각자가 소유하는 것
text
PROCESS A PROCESS B
┌─────────────────────────────┐ ┌───────────────┐
│ address space (code/heap) │ │ address space │
│ file descriptors, PID │ │ (isolated) │
│ ┌────────┐ ┌────────┐ │ │ ┌────────┐ │
│ │thread 1│ │thread 2│ ... │ │ │thread 1│ │
│ │ stack │ │ stack │ │ │ │ stack │ │
│ │ regs/PC│ │ regs/PC│ │ │ └────────┘ │
│ └────────┘ └────────┘ │ └───────────────┘
│ ▲ shared heap, globals, fds│
└─────────────────────────────┘
