偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

阮一峰:為什么主引導記錄的內存地址是0x7C00

移動開發(fā)
《計算機原理》課本說,啟動時,主引導記錄會存入內存地址0x7C00。這個奇怪的地址,是怎么來的,課本就不解釋了。我一直有疑問,為什么不存入內存的頭部、尾部、或者其他位置,而偏偏存入這個比 32KB 小1024字節(jié)的地方?昨天,我讀到一篇文章,終于解開了這個謎。

《計算機原理》課本說,啟動時,主引導記錄會存入內存地址0x7C00。

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

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

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

簡單說,計算機啟動是這樣一個過程。

  1. 通電
  2. 讀取ROM里面的BIOS,用來檢查硬件
  3. 硬件檢查通過
  4. BIOS根據指定的順序,檢查引導設備的***個扇區(qū)(即主引導記錄),加載在內存地址 0x7C00
  5. 主引導記錄把操作權交給操作系統(tǒng)

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

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

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

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

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

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

  1. 0x7FFF - 512 - 512 = 0x7C00  

0x7C00就是這樣來的。

計算機啟動后,32KB內存的使用情況如下。

  1. +--------------------- 0x0 
  2. | Interrupts vectors 
  3. +--------------------- 0x400 
  4. | BIOS data area 
  5. +--------------------- 0x5?? 
  6. | OS load area 
  7. +--------------------- 0x7C00 
  8. | Boot sector 
  9. +--------------------- 0x7E00 
  10. | Boot data/stack 
  11. +--------------------- 0x7FFF 
  12. | (not used) 
  13. +--------------------- (...) 

(完)

責任編輯:倪明 來源: 阮一峰的博客
相關推薦

2013-08-05 15:44:36

C語言基礎

2015-09-24 09:43:08

阮一峰持續(xù)集成

2012-11-15 09:43:08

開發(fā)算法高斯模糊

2011-12-05 10:44:38

inodeLinux文件系統(tǒng)

2021-08-26 05:01:40

0x3f 數組算法

2015-11-13 11:33:39

阮一峰ecmascript

2015-11-02 19:11:27

阮一峰javascript循環(huán)加載

2015-10-08 08:44:23

阮一峰Github清點對象

2017-07-25 15:09:48

Linux地址轉化

2015-09-17 15:23:56

阮一峰網頁性能

2015-09-06 10:34:54

蒙特卡洛阮一峰

2015-09-18 15:21:33

求職就業(yè)創(chuàng)業(yè)阮一峰

2021-01-28 10:19:57

Windows 10硬盤軟件

2021-11-17 08:26:22

空類EBO技術

2022-09-19 08:12:47

編譯器程序函數

2021-02-11 09:14:36

內存虛擬機數據

2015-09-07 09:53:02

Objective-CRuntime

2021-07-09 06:48:29

數組存儲內存

2025-05-29 08:00:00

數組編程語言

2020-05-07 10:09:30

MAC地址網絡協(xié)議網絡
點贊
收藏

51CTO技術棧公眾號