ஒரு process என்பது தனக்கே உரிய தனிமைப்படுத்தப்பட்ட memory (address space) கொண்ட, இயங்கிக்கொண்டிருக்கும் program; ஒரு thread என்பது ஒரு process-க்கு உள்ளே இயங்கும் ஒரு அலகு. ஒரு process பல threads-ஐக் கொண்டிருக்கலாம், அந்த threads process-இன் memory-ஐ பகிர்ந்துகொள்கின்றன — ஆனால் ஒவ்வொரு process-ம் மற்ற எல்லா process-இலிருந்தும் தனிமைப்படுத்தப்பட்டுள்ளது.
ஒவ்வொன்றும் எதை வைத்திருக்கிறது
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│
└─────────────────────────────┘
