開機啓動的全過程

第一步:在主板接通電源以後,系統就由POST(Power On Self Test,上電自檢)開始自檢,在咱們剛剛接通電源的時候,整個系統由BIOS控制,電壓還不太穩定(這個過程很是短暫,通常只有幾毫秒,這個時候電壓的穩定徹底依靠主板和電源內部的濾波電容進行),主板芯片組會向CPU發出reset的命令讓CPU開始初始化,同時主板芯片組等待電源發出POWE GOOD命令,一旦電源發出POWER GOOD命令,主板芯片組會立刻中止reset命令的發出(若是是手動reset那麼鬆開reset按鈕時就會中止發出命令),這時候CPU會立刻從地址FFFFF0H或FFFF0H開始執行尋址指令(這個地址是在BIOS內而再也不內存裏面),在這個地址中不管是AMI BIOS仍是Award BIOS,在這個地址中都會存儲一條跳轉命令,直接跳轉到系統BIOS中真正的啓動代碼處,這個時候BIOS就會進行到第二個步驟POST。
第二步:系統BIOS的啓動代碼首先要作的事情就是POST,POST的主要任務就是在檢測系統中的一些關鍵設備是否存在和正常工做。因爲POST在初始化顯示卡以前,所以若是POST過程當中出現任何的被BIOS認爲的致命錯誤,好比沒有找到內存或者說內存錯誤之類的,POST會經過主板上再帶的揚聲器來發送長短和數量不等的警報聲以傳遞錯誤信息,若是在正常狀況下,POST會進行的很是快,咱們是難以感受到這個過程的。設計模式

第三步:在這一步,系統BIOS會找到顯示卡,存放顯卡BIOS的ROM一般其實地址在C0000H處,系統BIOS找到顯卡BIOS以後調用它的代碼,因爲顯卡生產商的不一樣,因此顯卡的初始化是由顯卡BIOS來完成的,因此不一樣顯卡廠商的界面也是不太同樣的。
第四步:硬盤引導啓動:這一步是根據BIOS設置的啓動順序進行,按照順序將控制權依次轉移給列表中的存儲設備,不管是哪一個設備,計算機都會依次讀取這個設備的第一個扇區,即第一個512字節,若是這512個字節的最後兩個字節是0x55和0xAA,代表這個設備能夠用於啓動;若是不是,代表設備不能用於啓動,控制權因而被轉交給"啓動順序"中的下一個設備,這最前面的512個字節就被叫作主引導記錄(Master boot record,縮寫爲MBR)。
其中主引導記錄的主要做用就是引導硬盤到指定的位置來加載操做系統,通常分爲三個部分:第1-446字節:調用操做系統的機器碼;第447-510字節:分區表(Partition table);第511-512字節:主引導記錄簽名(0x55和0xAA)。
其中分區表的做用是將硬盤分爲若干個分區,硬盤分區的好處就是在於能夠在不一樣的分區中安裝不一樣的操做系統,可是主引導記錄必須知道每一個操做系統具體是在哪一個分區。
主引導記錄的大小總共只有64個字節,其中分爲四項,每項16個字節,也就是說,每塊硬盤只有4個主分區,只能安裝4套操做系統。每一個主分區總共16個字節,分爲6個部分:
第一個字節:若是爲0x80,就表示該主分區是激活分區,控制權要轉交給這個分區。四個主分區裏面只能有一個是激活的。
第二至四個字節:表示主分區第一個扇區的物理位置(柱面、磁頭、扇區號等等)。
第五個字節:表示主分區類型(具體內容比較多在這裏就再也不過多闡述)。
第六隻八個字節:表示主分區的最後一個扇區的物理位置。
第九至十二個字節:表示主分區第一個扇區的邏輯地址。
第十三至十六個字節:表示主分區的扇區總數。
最後一條規定了 主分區的長度,也就是說,主分區的長度最大不能大於2^32,因此,每一個分區512個字節的話,整塊硬盤的大小不會超過2TB,因此提升硬盤大小隻有兩個辦法:一是提升硬盤扇區總數;二是提升每一個扇區的字節數。
第五步:硬盤啓動。這個時候系統會優先從四個主分區裏面的那個被激活的分區來啓動,叫作引導卷啓動(Volume boot record,縮寫爲VBR),卷引導記錄的主要做用是,告訴計算機,操做系統在這個分區裏的位置。而後,計算機就會加載操做系統了。可是若是系統被安裝在了拓展分區和邏輯分區中,就要經過啓動管理器來啓動,在這種狀況下,計算機讀取"主引導記錄"前面446字節的機器碼以後,再也不把控制權轉交給某一個分區,而是運行事先安裝的"啓動管理器"(boot loader),由用戶選擇啓動哪個操做系統。
6
第六步:內核加載啓動。這個時候計算機的操做系統位置已經肯定,就要進行內核加載。在內核加載階段,Ntldr 將首先加載Windows內核 Ntoskrnl.exe 和 硬件抽象層 (HAL). HAL 有點相似於嵌入式操做系統下的BSP(Borad support package),這個抽象層對硬件底層的特性進行隔離,對操做系統提供統一的調用接口,操做系統移植到不一樣硬件時只要改變相應的 HAL 就能夠,其它的內核組件不須要修改,這個是操做系統一般的設計模式。ide

接下來Ntldr 從HKEYLOCAL MACHINE\SYSTEM\CurrentControlSet 下讀取這臺機器安裝的驅動程序,而後依次加載驅動程序。驅動程序加載完成後,Windows作以下設置:操作系統

  1. 建立系統環境變量
  2. 啓動 win32.sys ,這個是Windows子系統的內核模式部分。
  3. 啓動 csrss.exe,這個是Windows子系統的用戶模式部分。
  4. 啓動 winlogon.exe
  5. 建立虛擬內存頁面文件
  6. 對一些必要的文件進行更名最後,咱們就能看見那熟悉的藍天白雲出如今咱們的電腦屏幕上了
相關文章
相關標籤/搜索