WHAT problem solve kar rahe hain? Physical RAM ek shared, finite resource hai. Multiple processes ko saath rehna hai, ek doosre se isolated rehna hai, aur ek clean, contiguous address space dikhna chahiye — chahe physical memory fragmented ho.
WHY pages (fixed-size blocks), arbitrary segments ki jagah?
Fixed size ⇒ koi external fragmentation nahi, trivial allocation (koi bhi free frame kisi bhi page ke liye fit hoga).
Page ke andar ka offset translation ke dauran kabhi nahi badalta, isliye hum sirf page number translate karte hain.
Ek virtual address do parts mein cut hota hai: page number aur offset.
Offset unchanged kyun jaata hai? Kyunki ek page aur ek frame ka size P identical hai, ek page ka byte k uske frame ka byte k hota hai. Sirf kaun sa frame hai woh badalta hai.
HOW kaam karta hai: VPN ko khud kai index fields mein split karo, ek per level. Tree ko top-down walk karo; har entry next-level table ko point karti hai; aakhiri level PFN rakhta hai.
Translation ke liye cache kyun chahiye?n-level walk matlab n RAM reads sirf yeh jaanne ke liye ki data kahan hai, data ko touch karne se pehle. Yeh brutal hai.
Ek bade apartment complex ki kalpana karo. Har family (program) ko bataya jaata hai "tumhare paas rooms number 1 se ek million tak hain!" — lekin building mein sach mein ek million rooms nahi hain. Toh ek directory hai: tum kaho "mujhe mera room 5 chahiye", directory dekhe ki woh asli room kaun sa hai. Ek badi directory jo sab ek million fake rooms list kare, kaagaz barbad karti hai, aur zyaadatar families sirf 3 rooms use karti hain. Toh hum ek chhoti directory use karte hain jo chhoti directories ko point kare — jaise ek table of contents jo chapters ko point kare. Hum sirf wahi chapters print karte hain jo family actually use karti hai. TLB tumhare darwaze pe ek sticky note hai jo tumhare last kuch room lookups yaad rakhti hai taaki har baar poori directory na parhni pade.