磁盤的物理結構,如圖所示,注意區分幾個概念,值得注意的是扇區,簇
硬盤物理結構.jpg
扇區和簇的區別
一個扇區大小512B,但硬盤在進行文件操作時并非以扇區為單位,而是——簇,“簇”是系統進行分配的最小單位,一個簇可以包含多個扇區
MBR
什么是MBR
master boot record 主引導記錄,位于磁盤的0號扇區
有什么作用
計算機開機時,BIOS讀入并執行MBR,MBR第一件事就是確定活動分區,讀入這個分區的地一個塊,即引導塊,引導塊中的程序將加載計算機操作系統
文件存儲
文件存儲的關鍵問題
即記錄哪個文件用了哪些磁盤塊
文件存儲的方法
連續分配
鏈表分配
內存中鏈表分配
i節點
具體見<操作系統原理>P156
這幾個方法哪個最為常用,即優缺點
連續分配性能高,但磁盤浪費嚴重
鏈表分配磁盤利用率高,隨機讀取速度相當慢
內存中鏈表分配,費內存,需要把整個表都放進內存中
最常用的是i節點
i節點原理
每個文件都賦予了一個i節點數據結構,里面你列出了文件屬性和文件的磁盤地址
那么與內存鏈表分配有那些優點
這樣的話,只有打開的文件才在內存中,節省內存空間.
i節點還有個問題,每個節點只能呢個存儲固定數量的磁盤地址,如何文件很大怎么辦?
節點中最后一個磁盤地址不指向具體的磁盤地址,而是指向一個包含更多磁盤地址的磁盤塊
拓展:
硬鏈接和軟鏈接區別
硬鏈接的文件的i節點號碼都一樣,多個文件名指向了同一個i節點,所以刪除一個另一個不受影響
軟鏈接是一個快捷方式,實際上是一個文本文件,里面保存了到真正地址的位置信息
如何查看一個文件的inode值
ll -i
查單個用stat命令
ps:軟一峰也有篇文章科普inode(http://www.ruanyifeng.com/blog/2011/12/inode.html),但是我任務軟一峰沒有從文件存儲的角度來引出來inode,也沒有將為什么出現了inode,有什么優點,算是這類科普文章的一個缺點,速記但也容易速忘
linux目錄的實現
linux和dos的實現區別
dos直接把文件屬性放進了目錄項中
linux吧文件屬性放進了i節點當中
即每個目錄有對應的一個列表,列表當中哦給你存儲了各個文件的i節點及文件名
對于目錄中文件名的處理方式
因為文件名是不固定長度的,自然有兩種處理方式
一種是列表中為每個文件都保留了固定長度的空間
另一種是文件名指向了一個專門的區域中,暫稱為堆,但不是數據結構中的堆
優缺點自然很明星,肯定是第二種優先,但一定要維護好這個堆區域