
我在修改/proc
Linux 中的檔案系統時,發現了/proc/self
,它是指向當前進程的進程目錄的符號連結。我想知道它是如何實施的。一種解決方案是更改該符號鏈接每次上下文切換,但這顯然非常昂貴,因為它涉及磁碟存取。
答案1
http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482是當前的實現。
檔案系統proc
是完全虛擬的,並且被實現為內部 VFSreadlink
委託給特殊符號連結的正確位置。因此,它計算self
讀取/遍歷時指向的內容,而不是每次上下文切換。
答案2
檔案/proc
不會儲存在磁碟上,它們是由核心動態產生的。看當我打開並讀取 /proc 時會發生什麼?
/proc
如果您傾向於編程,您可以閱讀中的實現核心原始碼。的內容/proc/self
符號連結是由功能用呼叫進程的 pid 填入緩衝區。