ఒక process అనేది తన స్వంత ఐసొలేటెడ్ మెమరీ (address space) కలిగిన నడుస్తున్న ప్రోగ్రామ్; ఒక thread అనేది ఒక ప్రాసెస్ లోపల ఉండే అమలు యూనిట్. ఒక ప్రాసెస్ అనేక threadలను కలిగి ఉండగలదు, ఆ threadలు ప్రాసెస్ యొక్క మెమరీని పంచుకుంటాయి — కానీ ప్రతి ప్రాసెస్ ప్రతి ఇతర ప్రాసెస్ నుండి ఐసొలేట్ చేయబడి ఉంటుంది.
ఏది దేనిని కలిగి ఉంటుంది
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│
└─────────────────────────────┘
