ਇੱਕ process ਇੱਕ ਚੱਲ ਰਿਹਾ ਪ੍ਰੋਗਰਾਮ ਹੈ ਜਿਸਦੀ ਆਪਣੀ ਵੱਖਰੀ (isolated) ਮੈਮੋਰੀ (address space) ਹੁੰਦੀ ਹੈ; ਇੱਕ thread ਇੱਕ process ਦੇ ਅੰਦਰ ਚੱਲਣ ਦੀ ਇਕਾਈ ਹੈ। ਇੱਕ process ਕਈ threads ਰੱਖ ਸਕਦਾ ਹੈ, ਅਤੇ ਉਹ threads 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│
└─────────────────────────────┘
