基本構成
分區(qū)就是把磁盤像比薩餅一樣切成大小一樣的扇形, 當然分區(qū)大小不一樣扇形的大小也就不一樣
上下一串盤片中而柑,相同半徑的磁道所組成的一個圓柱型的環(huán)壁,就稱為柱面
在柱面組中, 比較重要的兩個結構是:i節(jié)點和數據塊
i節(jié)點和數據塊
數據塊集合是由大小固定的數據塊組成, 在很多系統(tǒng)中數據塊的大小為4K
以4K為例, 如果一個文件的大小是12K,那么它會占用3個數據塊
讀取三個數據塊就可以知道文件的內容, 可是我們要如何知道這三個數據塊的位置?
如果三個數據塊不是連在一起而是東一塊西一塊又該如何?
i節(jié)點的作用就是記錄文件的數據塊數量和數據塊在磁盤上的位置的
不僅如此,i節(jié)點還包含文件的其它屬性信息,文件屬性struct stat的內容便是來自于i節(jié)點
讀取文件內容
文件讀取: 當我們打開一個文件讀取時, 系統(tǒng)找到文件名對應的i節(jié)點, 然后通過i節(jié)點找到數據塊, 再把文件內容拼湊出來
文件夾讀取: 就是讀取一系列目錄項(dirent), 每個目錄項由兩部分組成: a.文件或文件夾的名稱 b.該文件名對應的i節(jié)點
鏈接
引用計數: 當有很多指針都需要訪問同一塊內存的數據時, 我們記下來當前在訪問的指針總數, 來一個就把總數加1, 當有指針調用free操作時, 我們不釋放這塊內存, 只是把剛剛記下的總數減一, 直到最后一個指針調用free時才真正把內存釋放掉
硬鏈接: 引用計數在磁盤文件上同樣適應, 那個總數保存i節(jié)點中. 對一個已存在的文件執(zhí)行l(wèi)ink操作, 生成一個新的文件, 新舊文件都指向同一個i節(jié)點, 刪除新舊文件中的一個只是把i節(jié)點中的鏈接總數減一, 并不會刪除數據塊.
軟鏈接: 與硬鏈接相對. 像windows系統(tǒng)中的快捷方式, 不會增加鏈接總數, 依賴于原先的舊文件
如果i節(jié)點中硬鏈接總數減為0時, 就會釋放對應的數據塊, 但數據塊內容不會被立即擦除, 這些數據塊原先被i節(jié)點保護不會被系統(tǒng)隨意征用, 現在可以被系統(tǒng)重新分配給其它程序使用, 在未重新分配給其它程序寫入內容之前, 我們還是可以通過技術恢復數據塊內容的.
文件的復制和刪除
復制: 在不跨分區(qū)的情況下, 文件復制只是多了一個別名, 然后對應的i節(jié)點鏈接總數加1.
刪除: 對應的i節(jié)點鏈接總數減1, 如果是最后一個鏈接就釋放數據塊.