4.2.33 · HinglishOperating Systems

Directory structure — tree, DAG (hard links, symbolic links)

2,113 words10 min readRead in English

4.2.33 · Coding › Operating Systems


1. Directory actually hai kya?


2. Tree structure (the default)

WHY tree convenient hai: unique path ⇒ unique name ⇒ deletion trivial hai (ek entry, inode free karo). HOW hum ise walk karte hain: / se start karo, path ko / par split karo, current directory mein har component ka inode lookup karo, repeat karo.

Ek "pure tree" mein bhi secretly har directory mein do special entries hoti hain:

  • . → directory ka apna inode
  • .. → parent ka inode

Yeh directory graph ko directories ke liye technically cyclic banate hain, aur exactly yahi reason hai kyun hum user-created directory hard links ban karte hain (aage aur baat karenge).


Hard links par constraints (aur WHY):

  1. Cannot cross filesystems — inode numbers sirf ek filesystem ke andar meaningful hote hain.
  2. Cannot hard-link directories (users ke liye) — cycles create hoti, traversal tod deta aur "reachability" ke liye link count undefined ho jaata. (Kernel khud ./.. carefully use karta hai.)

Figure — Directory structure — tree, DAG (hard links, symbolic links)

5. Side-by-side (80/20 table)

Property Hard link Symbolic link
Points to inode path string
Apna inode? Nahi (target ka share karta hai) Haan (alag inode)
Target link count bump karta hai? Haan Nahi
Target deletion ke baad survive karta hai? Haan (count 0 tak) Nahi → dangling
Cross-filesystem? Nahi Haan
Directory ko link kar sakta hai? Nahi (users) Haan
ls -l type char - (normal) ==l==


Recall Feynman: 12-saal ke bachche ko samjhao

Socho ek bada toy box (data) jisme ek label number painted hai. Ek hard link deewar par ek sticker hai jo kehta hai "toy box #42." Aap alag-alag rooms mein bahut saare stickers laga sakte ho sab "#42" kehte hue — woh sab same box kholte hain. Box ek chhota counter rakhta hai kitne stickers uski taraf point karte hain; box sirf tab phenka jaata hai jab aakhri sticker hata diya jaata hai. Ek symbolic link alag hai: yeh ek sticky note hai jo bas kehti hai "kitchen mein jao aur teddy wala box dhundho." Agar koi kitchen wale box ka naam badal de, tumhari sticky note ab kuch bhi point nahi karti — ek dead note. Kyunki kai stickers ek box ko point kar sakte hain, naam ka map ek simple family tree nahi raha; yeh ek aisa web hai jo kabhi apne aap par loop nahi karta — ek DAG.


Connections

  • Inodes and File Metadata
  • File System Implementation — Block Allocation
  • Path Resolution and the namei() routine
  • Mount points and Virtual File System (VFS)
  • Graphs — Trees vs DAGs
  • Reference Counting and Garbage Collection
  • Unix system calls — link, unlink, symlink, stat

Ek directory entry (dentry) kya map karti hai?
Ek human-readable naam ko ek inode number se.
File ka naam kahan store hota hai — inode mein ya directory mein?
Directory mein (inode metadata + data pointers rakhta hai, naam nahi).
Hard links ke saath filesystem DAG kyun hai tree ki jagah?
Multiple paths/names same inode tak pahunch sakti hain (in-degree >1), lekin directory cycles forbidden hain, isliye yeh acyclic hai.
Hard link kya hota hai?
Ek additional directory entry jo same inode ko point karti hai; ek sachcha co-equal naam.
Inode link count kya hai aur data blocks kab freed hote hain?
Inode ko reference karne wali dentries ki sankhya; blocks sirf tab freed hote hain jab link count = 0 AND koi process usse open na rakhe.
Kya symlink create karna target ka link count change karta hai?
Nahi — symlink ka apna inode hota hai aur sirf target ka path text ke roop mein store karta hai.
Dangling symlink kya hota hai?
Ek symlink jiska target path ab exist nahi karta, isliye resolution fail ho jaati hai.
Do cheezein jo symlink kar sakta hai jo hard link nahi kar sakta?
Filesystems cross kar sakta hai, aur directory ko link kar sakta hai.
Users hard-link directories kyun nahi kar sakte?
Yeh cycles create kar sakta hai, traversal aur reference counting tod ke.
rm actually kya call karta hai, aur woh kya karta hai?
unlink(); ek naam remove karta hai aur inode link count decrement karta hai.
Symlink ke liye ls -l ka pehla character?
'l'.
Hard vs soft links ke liye mnemonic?
Hard HEART (inode) ki taraf point karta hai; Soft SPOT (path) ki taraf point karta hai. Hard counts, Soft doesn't.

Concept Map

answered by

maps name to

stores

separates name from

each has one parent

many names one inode

adds dentry to same inode

increments

freed when zero

requires

keeps traversal finite

stores path not inode

Name to data lookup

Directory as lookup table

Inode metadata plus data

Directory entry name to inode

Tree namespace

Directed Acyclic Graph

Hard link

Symbolic link

Link count n

Ban directory cycles