寫(xiě)在前面的話:上一篇寫(xiě)了《理解硬盤(pán)》,對(duì)硬盤(pán)的基本組成和基本概念說(shuō)了說(shuō),基本上是從硬件的角度來(lái)說(shuō)的,這篇再來(lái)寫(xiě)寫(xiě)硬盤(pán),基本概念就不說(shuō)了,直接看前一篇就可以了,重點(diǎn)關(guān)注于文件和系統(tǒng)分區(qū)在硬盤(pán)里面的位置,也解答一下@金色海洋(jyk)陽(yáng)光男孩 的疑問(wèn)。
====正文開(kāi)始====
一、我的磁盤(pán)參數(shù)
我們知道硬盤(pán)里面重要的幾個(gè)概念:磁頭(Head)、柱面(Cylinder)、扇區(qū)(Sector),下圖是我電腦的這幾項(xiàng)的數(shù)據(jù),用DiskGenius查看的:
共有60801個(gè)柱面,255個(gè)磁頭,每道扇區(qū)數(shù)63個(gè),總扇區(qū)數(shù):976773168,這里說(shuō)明兩點(diǎn):
(1)磁頭數(shù)為奇數(shù):我們知道磁盤(pán)里面一個(gè)盤(pán)面有兩面可以存儲(chǔ)數(shù)據(jù),但是有的盤(pán)面只使用了一面,因此磁頭數(shù)可能出現(xiàn)奇數(shù),這里可以知道磁頭編號(hào)是從0~255。(沒(méi)有采用多磁頭技術(shù))
(2)每道扇區(qū)數(shù):我們知道對(duì)于一個(gè)盤(pán)面,越往外磁道周長(zhǎng)越長(zhǎng),對(duì)于以前老式的磁盤(pán),每個(gè)磁道的扇區(qū)數(shù)目是相同的,這樣就導(dǎo)致外面的磁道存儲(chǔ)數(shù)據(jù)密度太低,因此現(xiàn)代的磁盤(pán)都是外面磁道扇區(qū)數(shù)目多,里面的扇區(qū)數(shù)目少,這里的每道扇區(qū)數(shù)其實(shí)是經(jīng)過(guò)折算后的,也就是用總扇區(qū)數(shù)除以磁頭數(shù)再除以柱面數(shù)得到的。
(3)柱面數(shù):共有60801,所以可以知道柱面和磁道編號(hào)為0~60800
(4)總扇區(qū)數(shù):976773168,這個(gè)就是我的硬盤(pán)總共的扇區(qū)數(shù),這些扇區(qū)可以存儲(chǔ)數(shù)據(jù),其中每個(gè)扇區(qū)512Bytes,所以我的磁盤(pán)容量大概也就是:465GB
二、低級(jí)格式化
上面我們列舉了我的磁盤(pán)里面柱面、扇區(qū)數(shù)目,這些數(shù)目是怎么來(lái)的呢?一個(gè)空白的硬盤(pán)可以想象成一個(gè)“鐵磚頭”,并沒(méi)有這些所謂的磁道、柱面、扇區(qū)等參數(shù),出廠前,硬盤(pán)廠家往往會(huì)進(jìn)行格式化,確定硬盤(pán)的柱面、扇區(qū)等等物理參數(shù),這就是所謂的“低級(jí)格式化”,這種格式化和操作系統(tǒng)是沒(méi)有關(guān)系的。
三、磁盤(pán)尋址
磁盤(pán)經(jīng)過(guò)低級(jí)格式化后,就有了扇區(qū),我們就可以往里面寫(xiě)數(shù)據(jù)了,但是如何來(lái)確定我們的數(shù)據(jù)寫(xiě)到哪個(gè)扇區(qū)呢?如果我們不告訴計(jì)算機(jī),它是不知道的。因此我們應(yīng)該找到我們需要寫(xiě)入或讀出數(shù)據(jù)的扇區(qū),也就用到了“磁盤(pán)尋址”。
(1)找到一個(gè)具體的扇區(qū),可以通過(guò)提供柱面號(hào)(Cylinder),磁頭號(hào)(Header)、扇區(qū)號(hào)(Sector),就能唯一確定那個(gè)扇區(qū)了,這種尋址方式稱為CHS尋址方式。例如CHS為0/0/1表示0號(hào)柱面、0號(hào)磁頭、1號(hào)扇區(qū),也就是整塊磁盤(pán)的第一個(gè)扇區(qū);60800/254/63,表示60800號(hào)柱面,255號(hào)磁頭,63號(hào)扇區(qū),表示我的磁盤(pán)的最后一個(gè)扇區(qū)。
?。?)找到一個(gè)具體的扇區(qū),還可以使用另外一種方式,那就是僅僅提供扇區(qū)號(hào)來(lái)確定,叫做LBA,邏輯尋址,或者線性尋址,例如0號(hào)柱面0號(hào)磁頭扇區(qū)數(shù)為100個(gè)(這里不是68個(gè)了,因?yàn)橥馊Ρ葍?nèi)圈扇區(qū)數(shù)多),其對(duì)應(yīng)的物理編號(hào)為1~100,但是對(duì)應(yīng)的LBA邏輯編號(hào)為0~99(邏輯編號(hào)從0開(kāi)始);0號(hào)柱面1號(hào)磁頭對(duì)應(yīng)扇區(qū)物理編號(hào)為1~100,但是對(duì)應(yīng)的LBA邏輯標(biāo)號(hào)為100~199,以此類(lèi)推,因此所有的扇區(qū)編號(hào)為:0~976773167,相當(dāng)于把一個(gè)一個(gè)的柱面展開(kāi),然后連接起來(lái)了。
四、磁盤(pán)分區(qū)
看完了前面,一個(gè)物理參數(shù)已經(jīng)確定的磁盤(pán),如果我們要安裝操作系統(tǒng),例如windows,那么需要對(duì)磁盤(pán)進(jìn)行分區(qū),也就是說(shuō)C盤(pán)占用哪些扇區(qū),D盤(pán)占用哪些扇區(qū)等等,占用的扇區(qū)由我們給他們分配的大小決定。下圖是我的分區(qū)所占用的扇區(qū):
可以看到系統(tǒng)保留分區(qū)占用的扇區(qū),這里CHS和LBA兩種尋址方式都可以看到:
(1)對(duì)于CHS尋址:系統(tǒng)保留分區(qū)從0柱面32磁頭的33號(hào)扇區(qū)開(kāi)始,到12柱面,223磁頭的19扇區(qū)截止。
(2)對(duì)于LBA尋址:系統(tǒng)保留分區(qū)的起始扇區(qū)編號(hào)為:32*63+33-1=2048,注意這里的CHS中扇區(qū)編號(hào)從1開(kāi)始,而LBA尋址里面扇區(qū)編號(hào)從0開(kāi)始。
到這兒,也可以回答@金色海洋(jyk)陽(yáng)光男孩 的第一個(gè)疑問(wèn),C盤(pán)到底在硬盤(pán)的哪里:開(kāi)始于12柱面223磁頭20號(hào)扇區(qū),結(jié)束于7649號(hào)柱面13號(hào)磁頭44號(hào)扇區(qū)。而且操作系統(tǒng)一般存儲(chǔ)于磁盤(pán)靠外面的磁道,據(jù)說(shuō)外道訪問(wèn)速度比內(nèi)道快,而操作系統(tǒng)文件又需要經(jīng)常訪問(wèn)到。
再來(lái)看上面的圖,我們會(huì)發(fā)現(xiàn)幾個(gè)問(wèn)題:
(1)系統(tǒng)保留分區(qū)從2048扇區(qū)開(kāi)始,那么前面的0~2047個(gè)扇區(qū),相當(dāng)于1MB大小為什么沒(méi)有顯示出來(lái),它們是干什么的用的?
(2)里面看到了擴(kuò)展分區(qū)下面掛載了E盤(pán)和F盤(pán),當(dāng)然前面系統(tǒng)保留分區(qū)、C盤(pán)、D盤(pán)就是主分區(qū)了,他們有什么區(qū)別?
(3)擴(kuò)展分區(qū)結(jié)束于60801柱面,47磁頭46扇區(qū),那么后面的扇區(qū)干什么用了?(備注:這里60801應(yīng)該為60800,因?yàn)橹媸菑?開(kāi)始編號(hào)的,因此可能是軟件的錯(cuò)誤,這里不就深究了)
下面簡(jiǎn)單說(shuō)一說(shuō):
(1)對(duì)于問(wèn)題(1),前面有2048個(gè)扇區(qū),其中第一個(gè)扇區(qū),也就是0號(hào)柱面0號(hào)磁頭1號(hào)扇區(qū)(CHS尋址)或者0號(hào)扇區(qū)(LBA尋址),也稱為MBR區(qū),共有512個(gè)字節(jié),其中主引導(dǎo)記錄MBR占用446個(gè)字節(jié),用來(lái)引導(dǎo)操作系統(tǒng)啟動(dòng)的,不詳細(xì)寫(xiě)了,有機(jī)會(huì)再介紹;磁盤(pán)分區(qū)表(DPT)占用64個(gè)字節(jié),用來(lái)記錄各個(gè)分區(qū)的情況,例如C盤(pán)占哪些扇區(qū)、D盤(pán)占哪些扇區(qū)等等,我們發(fā)現(xiàn)它只有64個(gè)字節(jié),可以分成4條記錄,一條記錄占16個(gè)字節(jié),用來(lái)記錄一個(gè)分區(qū)的情況,因此只能有4個(gè)分區(qū)了,也就是4個(gè)主分區(qū),如果想分更多的區(qū),可以把其中一個(gè)主分區(qū)當(dāng)做擴(kuò)展分區(qū),再擴(kuò)充出去幾個(gè)邏輯分區(qū),幾個(gè)邏輯分區(qū)掛載在擴(kuò)展分區(qū)上面,因此擴(kuò)展分區(qū)也是主分區(qū)的一種,且只能有一個(gè);最后兩個(gè)字節(jié)以55AA結(jié)尾;其他的2047個(gè)扇區(qū)一些空著,一些另做他用。(該部分內(nèi)容不詳細(xì)寫(xiě)了,要不文章又要太長(zhǎng)了)
(2)對(duì)于問(wèn)題(2)在上面文字中簡(jiǎn)單說(shuō)明了一下主分區(qū)和擴(kuò)展分區(qū)的區(qū)別。
(3)對(duì)于問(wèn)題(3)我也好奇怪,那些空間都去哪兒了?
備注:可以把磁盤(pán)按照扇區(qū)展開(kāi),依次編號(hào)為0,1,2,……,然后分成幾部分:Part1,Part2,Part3,Part4,Part5,Part6,Part7其中Part2、Part3、Part4、Part5,Part6分別給了系統(tǒng)保留分區(qū)、C、D、E、F盤(pán),Part1和Part7空出的空間另作他用,其中每一個(gè)Part里面各個(gè)扇區(qū)又是有些什么,里面存儲(chǔ)了哪些信息,也是值得思考的。
五、寫(xiě)入文件
分區(qū)講完了,我們來(lái)看看寫(xiě)入文件。往磁盤(pán)里面寫(xiě)入文件,是按照柱面、磁頭、扇區(qū)的順序來(lái)寫(xiě)的,例如先寫(xiě)第1個(gè)柱面、第1個(gè)磁頭、第1個(gè)扇區(qū),然后寫(xiě)第1個(gè)柱面、第1個(gè)磁頭、第2個(gè)扇區(qū),寫(xiě)完63個(gè)扇區(qū)后,再移動(dòng)到下面一個(gè)磁頭來(lái)寫(xiě);當(dāng)寫(xiě)完一個(gè)柱面,再用后面的柱面。接下來(lái)假如往c盤(pán)寫(xiě)兩個(gè)文件a.txt,b.txt,他們一個(gè)占用了一個(gè)柱面,那么它們的扇區(qū)地址是緊緊挨著的且a.txt在前,b.txt再后,但是接下來(lái)就要發(fā)生一些事情:
(1)如果a.txt里面刪除內(nèi)容,那么占用空間減少,但是占用的空間還是1個(gè)柱面。
(2)如果a.txt里面增加內(nèi)容,那么一個(gè)柱面占不下了,而緊挨著它的柱面又被b.txt給占了,那么它會(huì)從其他柱面去找地方去放,然后在a.txt創(chuàng)建對(duì)新增內(nèi)容所在扇區(qū)的引用。
從(1)(2)可知,隨著系統(tǒng)的運(yùn)行,磁盤(pán)里面的碎片會(huì)越來(lái)越多,因此操作系統(tǒng)提供了碎片整理工具就是把這些空間整合的(當(dāng)然,對(duì)于SSD硬盤(pán),因?yàn)閮?nèi)部結(jié)構(gòu)不同,不建議碎片整理,這里就不解釋了。),可以看看我的D盤(pán)里面空間利用,并不是連續(xù)的,如下圖:
備注:操作系統(tǒng)對(duì)文件的操作比這個(gè)要復(fù)雜些,例如刪除文件并不會(huì)實(shí)際從扇區(qū)里面刪除,否則各種恢復(fù)就無(wú)法恢復(fù)文件了,具體的可以去看操作系統(tǒng)知識(shí)了。
另外,我們平時(shí)有過(guò)這樣的體會(huì):例如將D盤(pán)里面的一個(gè)大文件剪切到D盤(pán)的其他文件夾,速度很快,而剪切到其他盤(pán)符,速度就比較慢了,就是因?yàn)樵谕槐P(pán)符里面,剪切文件,實(shí)際上只是改變了文件的引用地址,并沒(méi)有改變文件實(shí)際的扇區(qū)地址,因此速度很快。這也給我們一個(gè)提示:以后磁盤(pán)分區(qū)沒(méi)必要分那么多了,分兩個(gè)就夠了,一個(gè)安裝系統(tǒng),一個(gè)放一些數(shù)據(jù)文件,這樣移動(dòng)文件速度也快,當(dāng)然如果有別的用途,如安裝多操作系統(tǒng)等需要,就另當(dāng)別論了。
好了,就寫(xiě)這么多吧,從此再看到硬盤(pán),是不是對(duì)它有了不一樣的認(rèn)識(shí),寫(xiě)的有點(diǎn)兒亂,還請(qǐng)見(jiàn)諒。
(完)
文檔信息
聯(lián)系客服