1. 程式人生 > >3、開機流程(內存分布)

3、開機流程(內存分布)

開機流程 內存分布

內存可以分為三段
第一段空間是BIOS:BIOS的ROM加載到內存過程,然後執行硬件檢測,也正是因為有這一段才加電自檢
第二段空間是內核:加載內核的,也就是kernel space
第三段空間才是各個應用程序的使用內存
當然內存沒有我們想象的這麽簡單,這只是表面的介紹內存的分塊

http://blog.csdn.net/langeldep/article/details/8788119
第0階段
計算機啟動是一個很矛盾的過程:必須先運行程序,然後計算機才能啟動,但是計算機不啟動就無法運行程序!早期真的是這樣,必須想盡各種辦法,把一小段程序裝進內存,然後計算機才能正常運行。所以,工程師們把這個過程叫做”拉鞋帶”,久而久之就簡稱為boot了

第1階段
開機程序被刷入ROM芯片,計算機通電後,第一件事就是讀取它。
BIOS中主要存放的程序包括:自診斷程序(通過讀取CMOS;RAM中的內容識別硬件配置,並對其進行自檢和初始化)、CMOS設置程序(引導過程中,通過特殊熱鍵啟動,進行設置後,存入CMOS RAM中)、系統自動裝載程序(在系統自檢成功後,將磁盤相對0道0扇區上的引導程序裝入內存使其運行)和主要I/O驅動程序和中斷服務(BIOS和硬件直接打交道,需要加載I/O驅動程序)。
BIOS程序首先檢查,計算機硬件能否滿足運行的基本條件,這叫做”硬件自檢”(Power-On Self-Test),縮寫為POST。
如果硬件出現問題,主板會發出不同含義的蜂鳴,啟動中止。如果沒有問題,屏幕就會顯示出CPU、內存、硬盤等信息
第2階段
1、啟動順序
硬件自檢完成後,BIOS把控制權轉交給下一階段的啟動程序。
這時,BIOS需要知道,”下一階段的啟動程序”具體存放在哪一個設備。也就是說,BIOS需要有一個外部儲存設備的排序,排在前面的設備就是優先轉交控制權的設備。這種排序叫做”啟動順序”(Boot Sequence)。
打開BIOS的操作界面,裏面有一項就是”設定啟動順序”。

技術分享圖片

2、主引導記錄
BIOS按照”啟動順序”,把控制權轉交給排在第一位的儲存設備。即根據用戶指定的引導順序從軟盤、硬盤或是可移動設備中讀取啟動設備的MBR,並放入指定的位置(0x7c000)內存中。
這時,計算機讀取該設備的第一個扇區,也就是讀取最前面的512個字節。如果這512個字節的最後兩個字節是0x55和0xAA,表明這個設備可以用於啟動;如果不是,表明設備不能用於啟動,控制權於是被轉交給”啟動順序”中的下一個設備。

這最前面的512個字節,就叫做”主引導記錄”(Master boot record,縮寫為MBR)。
2.1 主引導記錄的結構
“主引導記錄”只有512個字節,放不了太多東西。它的主要作用是,告訴計算機到硬盤的哪一個位置去找操作系統。
主引導記錄由三個部分組成:
(1) 第1-446字節:調用操作系統的機器碼。
(2) 第447-510字節:分區表(Partition table)。
(3) 第511-512字節:主引導記錄簽名(0x55和0xAA)。

其中,第二部分”分區表”的作用,是將硬盤分成若幹個區。
2.2 分區表
硬盤分區有很多好處。考慮到每個區可以安裝不同的操作系統,”主引導記錄”因此必須知道將控制權轉交給哪個區。
分區表的長度只有64個字節,裏面又分成四項,每項16個字節。所以,一個硬盤最多只能分四個一級分區,又叫做”主分區”。
每個主分區的16個字節,由6個部分組成:
(1) 第1個字節:如果為0x80,就表示該主分區是激活分區,控制權要轉交給這個分區。四個主分區裏面只能有一個是激活的。
(2) 第2-4個字節:主分區第一個扇區的物理位置(柱面、磁頭、扇區號等等)。
(3) 第5個字節:主分區類型。
(4) 第6-8個字節:主分區最後一個扇區的物理位置。
(5) 第9-12字節:該主分區第一個扇區的邏輯地址。
(6) 第13-16字節:主分區的扇區總數。

最後的四個字節(”主分區的扇區總數”),決定了這個主分區的長度。也就是說,一個主分區的扇區總數最多不超過2的32次方。
如果每個扇區為512個字節,就意味著單個分區最大不超過2TB。再考慮到扇區的邏輯地址也是32位,所以單個硬盤可利用的空間最大也不超過2TB。如果想使用更大的硬盤,只有2個方法:一是提高每個扇區的字節數,二是增加扇區總數。
第3階段:硬盤啟動
這時,計算機的控制權就要轉交給硬盤的某個分區了
後面的啟動順序就看其他文檔或者看網站

3、開機流程(內存分布)