能用通俗易懂的方法講一下linux中struct inode和struct file的關係嗎?

時間 2021-05-06 21:10:09

1樓:CobbLiu

每次使用者開啟乙個新檔案,不管是用系統呼叫open()得到乙個int型別的fd,還是用glibc的fopen得到乙個FILE*,linux核心中就會有乙個struct file與之對應。這是從使用者到系統的視角看到的。

反之,從硬碟到作業系統的視角看,以ext4為例,每個檔案系統中的檔案(或目錄,符號鏈結等)在硬碟上都是以乙個叫inode的型別來儲存,當使用者開啟乙個檔案後,作業系統會將盤上的這個檔案對應的inode的元資料讀取到記憶體,在記憶體中,用型別為struct inode的資料結構來儲存,通常記憶體中的struct inode是盤上inode的乙個超集。

有了struct file和struct inode的定義後,再看看他們是什麼關係。以使用者同時兩次開啟同乙個檔案為例,從上面的解釋可以看出,核心中會有兩個struct file,而因為它們操作的是同乙個檔案,所以每個struct file中都會有乙個指標指向同乙個struct inode,便於使用者在檔案操作過程中對盤上資料做對應的操作。

2樓:石超

記憶體中的inode結構是磁碟上inode的快取,裡邊有檔案長度、最後修改時間等資訊,這樣每次讀檔案元資料就不必讀磁碟(例如stat)。

file是開啟檔案得到的控制代碼,就是fd背後的結構,裡邊維護了fd當前的讀寫位置。

inode結構和file是一對多的關係。

誰能用通俗易懂的語言解釋一下增額終身壽和年金哪個更適合30多歲的年輕人,謝謝大家

huihui1809 增額終身壽可以在年輕的時候有高額賠付的槓槓,老年的時候高現金價值轉年金或者留著傳給子女。年金就是固定的時間給固定的錢 兩個都很好,選擇哪個要看你想解決什麼問題。如果有孩子有家庭或者有其他的家庭責任,終身壽比較適合。如果純粹為養老做規劃或者一大筆錢打散一點點給子女,年金挺好。 丸...

可以通俗易懂地解釋一下雲服務嗎?

雲掣YUNCHE 雲服務是基於網際網路的相關服務的增加 使用和互動模式,通常涉及通過網際網路來提供動態易擴充套件且經常是虛擬化的資源。雲是網路 網際網路的一種比喻說法。過去在圖中往往用雲來表示電信網,後來也用來表示網際網路和底層基礎設施的抽象。雲服務指通過網路以按需 易擴充套件的方式獲得所需服務。這...

有大神可以通俗易懂地解釋一下full goodwill和partial goodwill嗎?謝謝

高高 我們知道,goodwill產生於收購中收購價 fair value of target 和fair value of net asset之間的差異。比如你用100元收購乙個淨資產市值80元的公司,產生的20元 25 溢價就是goodwill 但是部分收購的時候就有了問題。上述收購中,加入你只收...