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