作者:Maverick
blog:http://blog.csdn.net/zhaohuabing 轉載請註明出處
一、首先讓我們看看磁碟片的物理結構
磁碟片在物理上有柱面、磁軌和扇區的結構,其關係是柱麵包含磁軌,磁軌包含扇區,扇區是電腦讀取磁碟片的基本單位
1、柱面:磁碟片有兩個柱面,編號為:0,1 (其實就是磁碟片的兩面)
2、磁軌:每個面劃分為若干個磁軌,從外向內編號:0,1,2...80
3、扇區:每個磁軌劃分為若干個扇區,一個磁軌中扇區的編號:1,2,3...18,每個扇區的容量相同,能儲存512 byte的資料。
二、然後看看扇區的編碼
扇區的編號由兩種,一種是物理編號,一種是邏輯編號
1、物理編號:表明扇區在磁碟片上的物理位置,用柱面、磁軌、扇區表示,BIOS中斷int 13h就是使用物理編號來確定要讀的扇區位置。
2、邏輯編號:表明扇區的邏輯位置,是一個相對於起始扇區(柱面0磁軌0扇區0)的序號
3、物理編號和邏輯編號的對應關係如下:
物理編號 (柱面號 磁軌號 扇區號) 邏輯編號
0柱面0磁軌 0 0 1 0
0 0 2 1
... ... ... ...
0 0 18 17
1柱面0磁軌 1 0 1 18
1 0 2 19
... ... ... ...
1 0 18 35
0柱面1磁軌 0 1 1 28
0 1 2 29
... ... ... ...
0 1 18 53
1柱面1磁軌 1 1 1 54
1 1 2 55
... ... ... ...
1 1 18 71
..................
0柱面79磁軌 0 79 1
0 79 2
... ... ...
0 79 18
1柱面79磁軌 1 79 1
1 79 2
... ... ... ...
1 79 18 2879
可以看到,邏輯扇區編號是按照物理扇區號、物理柱面號、物理磁軌號的先後順序進行編碼的,為什麼要按照這個順序進行編號呢,我想主要是為了減少磁頭的移動,加快磁碟片的I/O速度。因為檔案一般是存放在按照相鄰的邏輯扇區中,按照物理扇區號、物理柱面號、物理磁軌號的先後順序對邏輯扇區進行編碼,相鄰的邏輯扇區在磁碟片的物理位置上也是相鄰的(同一面或者另一面),可以減少讀取同一檔案式磁頭的移動距離。
由上面可以得到兩種編號的換算關係:
邏輯扇區號 = (磁軌號 * 2 + 柱面號) * 18 + 物理扇區號 - 1
因為每一個磁軌有18個扇區,而物理扇區號是在每一個磁軌從0開始編號,所以物理扇區號 = 邏輯扇區號/18 的餘數 + 1
因為每一個磁軌有18*2個扇區,所以 磁軌號 = 邏輯扇區號/(18*2) 的商 即磁軌號=商>>2
如果 邏輯扇區號/18的商是偶數,則是柱面0,如果商是奇數,則是柱面1 即柱面號=商&1