亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

為什么主引導(dǎo)記錄的內(nèi)存地址是 0x7C00?

原創(chuàng) 2016-11-07 15:40:47 917
摘要:《計(jì)算機(jī)原理》課本說,啟動(dòng)時(shí),主引導(dǎo)記錄會(huì)存入內(nèi)存地址0x7C00。這個(gè)奇怪的地址,是怎么來的,課本就不解釋了。我一直有疑問,為什么不存入內(nèi)存的頭部、尾部、或者其他位置,而偏偏存入這個(gè)比 32KB 小1024字節(jié)的地方?昨天,我讀到一篇文章,終于解開了這個(gè)謎。首先,如果你不知道,主引導(dǎo)記錄(Master boot record,縮寫為MBR)是什么,可以先讀《計(jì)算機(jī)是如何啟動(dòng)的?》。簡(jiǎn)單說,計(jì)算機(jī)

《計(jì)算機(jī)原理》課本說,啟動(dòng)時(shí),主引導(dǎo)記錄會(huì)存入內(nèi)存地址0x7C00。

這個(gè)奇怪的地址,是怎么來的,課本就不解釋了。我一直有疑問,為什么不存入內(nèi)存的頭部、尾部、或者其他位置,而偏偏存入這個(gè)比 32KB 小1024字節(jié)的地方?

昨天,我讀到一篇文章,終于解開了這個(gè)謎。

5e4d414cgw1ewi9gemr8hj20h406jmy9 (1).jpg

首先,如果你不知道,主引導(dǎo)記錄(Master boot record,縮寫為MBR)是什么,可以先讀《計(jì)算機(jī)是如何啟動(dòng)的?》。

簡(jiǎn)單說,計(jì)算機(jī)啟動(dòng)是這樣一個(gè)過程。

通電

讀取ROM里面的BIOS,用來檢查硬件

硬件檢查通過

BIOS根據(jù)指定的順序,檢查引導(dǎo)設(shè)備的第一個(gè)扇區(qū)(即主引導(dǎo)記錄),加載在內(nèi)存地址 0x7C00

主引導(dǎo)記錄把操作權(quán)交給操作系統(tǒng)

所以,主引導(dǎo)記錄就是引導(dǎo)”操作系統(tǒng)”進(jìn)入內(nèi)存的一段小程序,大小不超過1個(gè)扇區(qū)(512字節(jié))。

5e4d414cgw1ewi9gezyx9j20go08vwei.jpg

0x7C00這個(gè)地址來自Intel的第一代個(gè)人電腦芯片8088,以后的CPU為了保持兼容,一直使用這個(gè)地址。

5e4d414cgw1ewi9gfepjsj20go0c2mxl.jpg

1981年8月,IBM公司最早的個(gè)人電腦IBM PC 5150上市,就用了這個(gè)芯片。

5e4d414cgw1ewi9gfmokgj206k04p0sz.jpg

當(dāng)時(shí),搭配的操作系統(tǒng)是86-DOS。這個(gè)操作系統(tǒng)需要的內(nèi)存最少是32KB。我們知道,內(nèi)存地址從0x0000開始編號(hào),32KB的內(nèi)存就是0x0000~0x7FFF。

8088芯片本身需要占用0x0000~0x03FF,用來保存各種中斷處理程序的儲(chǔ)存位置。(主引導(dǎo)記錄本身就是中斷信號(hào)INT 19h的處理程序。)所以,內(nèi)存只剩下0x0400~0x7FFF可以使用。

為了把盡量多的連續(xù)內(nèi)存留給操作系統(tǒng),主引導(dǎo)記錄就被放到了內(nèi)存地址的尾部。由于一個(gè)扇區(qū)是512字節(jié),主引導(dǎo)記錄本身也會(huì)產(chǎn)生數(shù)據(jù),需要另外留出512字節(jié)保存。所以,它的預(yù)留位置就變成了:

0x7FFF – 512 – 512 = 0x7C00

0x7C00就是這樣來的。

計(jì)算機(jī)啟動(dòng)后,32KB內(nèi)存的使用情況如下。

+——————— 0x0
| Interrupts vectors
+——————— 0x400
| BIOS data area
+——————— 0x5??
| OS load area
+——————— 0x7C00
| Boot sector
+——————— 0x7E00
| Boot data/stack
+——————— 0x7FFF
| (not used)
+——————— (…)


發(fā)佈手記

熱門詞條