Visual walkthrough — Memory allocation — contiguous (first-fit, best-fit, worst-fit)
4.2.23 · D2· Coding › Operating Systems › Memory allocation — contiguous (first-fit, best-fit, worst-f
Hum ek running scenario use karte hain (parent ka Worked Example 1):
- Holes address order mein: (sab KB mein).
- Requests arrival order mein: (KB).
Step 1 — Shelf draw karo aur har piece ko naam do
KYA. RAM ek lamba horizontal strip hota hai. Dark bars woh memory hain jo doosre programs ne pehle se use ki hui hai; unke beech ke light bars holes hain — free space ke unbroken stretches. Har hole ko ek letter aur KB mein uski size se label karte hain.
KYUN. Jo bhi algorithm hum padhenge woh exactly ek kaam karta hai: yeh holes ki list dekhta hai aur ek choose karta hai. Toh jedani bhi state matter karti hai woh hai "kaun se holes hain, kis order mein, kis size par." Choose karne se pehle, hume shelf padhni aani chahiye.
PICTURE. Neeche strip dekho. Left se right padhte hue (yeh direction address order hai — left par low address, right par high address) free holes hain. Unki sizes unke andar likhi hain. "Address order" shelf par simply physical left-to-right order hai — yaad rakho, kyunki first-fit exactly isi order mein scan karta hai.

Step 2 — Ek placement: chunk kaatna aur leftover chhodna
KYA. Request lo, size wala ek hole choose karo jisme ho, aur program ko us hole ke left end par rakho. Hole do parts mein split hota hai: program (size ) aur ek naya chhota hole (size ).
KYUN. Yeh atomic move hai jo har rule perform karta hai; rules sirf kaunsa choose karte hain isme differ karte hain. Ek cut samjho aur teeno algorithms samajh lo — woh sirf teen answers hain "kaunsa ?" ke.
PICTURE. Figure mein, size ka teal hole orange knife se position par apne left edge se slice hota hai. Knife ke left ki taraf used ho jaati hai; knife ke right ki taraf (plum sliver, width ) ek naya hole ban jaata hai.
- Agar : knife exactly right edge par padti hai — hole bilkul gayab ho jaata hai.
- Agar : ek real sliver bachta hai, address (hole ka base ) par baitha.
- Agar : illegal — knife hole ki right edge se aage kat jaati. Yeh hole candidate hi nahi hai.

Step 3 — First-fit chalta hai: pehle fit hone wale hole par ruk jao
KYA. Har request ke liye, holes ko address order mein scan karo () aur sabse pehle aise hole par ruko jiska size ho. Wahan cut karo.
KYUN. Kyunki hum jaldi ruk jaate hain, first-fit sabse fast rule hai: average par yeh sirf pehle kuch holes hi touch karta hai. First-fit har hole jo visit karta hai use test karta hai (kya hai?), lekin woh candidates ko ek doosre se compare nahi karta — jis moment ek pass kare, hum commit kar lete hain. Yahi early stop uski speed ka source hai.
PICTURE. Green check mark wahan hai jahan scan ruka; grey crosses woh holes hain jinhe skip kiya (too small) ya kabhi reach hi nahi kiya. dekho: yeh par step karta hai (cross, ), par land karta hai (check), aur cut karta hai — bachta hai.
Full run:
- : ✗, ✓ → leftover .
- : sab too small, ✓ → leftover .
- : ✗, ✓ → leftover .
- : holes ab hain — koi bhi nahi. FAILS.

Step 4 — Best-fit chalta hai: sabse tight hole choose karo
KYA. Har request ke liye, sab holes scan karo, har candidate jo size ho use collect karo, aur sabse chhota aisa candidate choose karo — sabse tight fit.
KYUN. Tight fit is step mein sabse chhota possible leftover kaata hai, toh intuitively yeh "abhi kam waste karta hai." Price: hume confirm karne ke liye ki hum sabse chhota mile, poori free list scan karni padti hai — first-fit se slow.
PICTURE. ke liye candidates () hain ; unme sabse chhota, , plum mein glow karta hai (chosen), sirf bachta hai. Compare karo first-fit se, jisne bada pakda aur waste kiya.
Full run:
- : candidates → sabse chhota → leftover .
- : candidates → sabse chhota → leftover .
- : candidates (note , ) → sabse chhota → leftover .
- : candidate → → leftover . Chaaron succeed karte hain.

Step 5 — Worst-fit chalta hai: sabse choda hole choose karo
KYA. Har request ke liye, sab holes scan karo aur sabse bada choose karo (chahe woh se kitna bhi bada ho).
KYUN. Umeed yeh hai: sabse bade hole mein se kaatne ke baad sabse bada possible leftover bachega, jo "reusable" rahega. Khatre ki baat, jo picture reveal karti hai, yeh hai ki tum apne bade holes pehle kha jaate ho — toh ek badi future request ke liye kuch nahi bachta.
PICTURE. ke liye har hole candidate hai (sab widest compare kiye ja sakte hain); sabse tall bar choose hota hai aur tak shrink ho jaata hai. Notice karo ko do baar nibble hote hue — end mein ke liye koi bada hole nahi bachta.
Full run:
- : largest → leftover .
- : largest → leftover .
- : ab largest → leftover .
- : holes — largest hai. FAILS.

Step 6 — Degenerate cases (reader ko kabhi stranded mat chhodho)
KYA. Woh corners jo running example ne hit nahi kiye. Har ek ek legal input hai jo algorithm ko handle karna padega.
KYUN. Ek rule jo tum sirf "nice" inputs par samajhte ho woh real workloads par surprise karega. Yeh rahi chaar edges.
PICTURE. Chaar mini-shelves, ① ② ③ ④ labelled top se bottom, neeche chaar numbered cases se match karte hue:
- ① Exact fit (): leftover . Hole bilkul gayab ho jaata hai — koi sliver nahi, is step se koi fragmentation nahi. Sabse achha possible outcome.
- ② Koi hole fit nahi hota ( har ke liye): request fail hoti hai chahe total free space ho. Do 30 KB holes ek 50 KB program host nahi kar sakte — contiguity splitting forbid karta hai. (Yeh external fragmentation ka kaatna hai.)
- ③ Zero-size request (): kisi bhi hole se trivially satisfiable; kuch nahi badalta — ek well-behaved allocator immediately return karta hai.
- ④ Ties (do holes equally good): best-fit aur worst-fit ties ko address order se break karte hain (lowest first), first-fit ke scan direction se match karte hue — ek convention hai, lekin ek fixed convention, toh results reproducible hain.

Ek-picture summary
Neeche, teeno rules same request ka saamna same starting shelf par karte hain. Corner mein ek legend har arrow ke color ko uske algorithm se map karta hai: orange → first-fit ( pakadta hai, pehla jo fit ho), plum → best-fit ( pakadta hai, tightest), teal → worst-fit ( pakadta hai, widest). Har arrow apne target ke paas words mein bhi labelled hai, toh mapping kabhi sirf color par depend nahi karti — ek image mein poora chapter.

Recall Feynman: poora walkthrough simple words mein
Ek lamba shelf imagine karo jisme alag-alag widths ke kuch khaali gaps hain. Ek nayi kitab ko ek piece mein fit hone ke liye kaafi wide gap chahiye — use do mein nahi kaata ja sakta. First-fit: left se chalo, kitaab ko pehle gap mein daalo jisme fit ho — fast hai, lekin ek chhoti kitaab bade gap mein jam sakti hai aur waste ho sakti hai. Best-fit: har gap check karo aur snuggest wala use karo — is baar bahut kam space waste hoti hai, lekin bohot saare gaps chhoot jaate hain jo kisi bhi cheez ke liye thodi si kam bade hain. Worst-fit: hamesha sabse choda gap use karo taaki leftover roomy rahe — lekin tum apne bade gaps jaldi kha jaate ho, aur baad mein ek moti kitaab ke liye kahin jaane ki jagah nahi hoti. Humari shelf par best-fit ittefaq se last badi kitaab bachane mein kamyaab raha kyunki usne sabse choda gap end tak akela chhodha; first-fit aur worst-fit pehle hi use kha chuke the. Trick yeh hai: tum kaunsa gap choose karte ho yeh baaki sab gaps ko reshape kar deta hai, aur yahi decide karta hai ki baad mein kaun andar aata hai. Koi rule hamesha nahi jeetataa — yeh depend karta hai aage kaun aata hai.
Active Recall
Best-fit ka choice ke liye mein se?
Example mein first-fit ko kyun fail karta hai?
Leftover formula kya hai aur exact-fit case mein kya hota hai?
Kya wali request fail ho sakti hai jab do KB holes free hain?
Kaun sa rule sabse bade hole ko sabse zyada der tak untouched rakhta hai, aur yahan woh kyun matter kiya?
Connections
- Parent topic (Hinglish)
- Fragmentation — in cuts se bache slivers external fragmentation hain.
- Compaction — allocated blocks ko saath slide karta hai taaki bikhre leftovers merge ho sakein.
- Free List Management — OS hole list ko kaise store aur scan karta hai jo tumne yahan dekhi.
- Paging — woh contiguity requirement hata deta hai jisne corner case fail karaya.
- Segmentation — variable-size contiguous chunks, har segment ke liye same placement rules.
- Buddy System — ek alag splitting scheme jo leftover sizes bound karta hai.