核心電源管理器已啟動關機轉換 漫談計算機啟動過程

2021-10-11 19:22:41 字數 2805 閱讀 6132

對於電腦使用者來說,開啟電源啟動電腦幾乎是每天必做的事情,但計算機在顯示這些啟動畫面的時候在做什麼呢?大多數使用者都未必清楚了。下面就向大家介紹一下從開啟電源到出現windows 9x的藍天白雲,計算機到底幹了些什麼工作。

其實電腦啟動的過程是乙個十分完善的硬體自檢的過程,在加電自檢的那幾秒鐘裡面計算機可以完成上百道工序,下面就由我來與大家介紹一下這個過程。

第一步:在主機板接通電源之後,系統就由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),由使用者選擇啟動哪乙個作業系統。

第六步:核心載入啟動。這個時候計算機的作業系統位置已經確定,就要進行核心載入。在核心載入階段,ntldr 將首先載入windows核心 ntoskrnl.exe 和 硬體抽象層 (hal). hal 有點類似於嵌入式作業系統下的bsp(borad support package),這個抽象層對硬體底層的特性進行隔離,對作業系統提供統一的呼叫介面,作業系統移植到不同硬體時只要改變相應的 hal 就可以,其它的核心元件不需要修改,這個是作業系統通常的設計模式。

接下來ntldr 從hkey_local_ machinesystemcurrentcontrolset 下讀取這台機器安裝的驅動程式,然後依次載入驅動程式。驅動程式載入完成後,windows做如下設定:

1. 建立系統環境變數

2. 啟動 win32.sys ,這個是windows子系統的核心模式部分。

3. 啟動 csrss.exe,這個是windows子系統的使用者模式部分。

4. 啟動 winlogon.exe

5. 建立虛擬記憶體頁面檔案

6. 對一些必要的檔案進行改名

最後,我們就能看見那熟悉的藍天白雲出現在我們的電腦螢幕上了

oracle 啟動管理器

emctl start dbconsole 是10g的啟動console服務的命令 將oem服務停止emctl stop dbconsole emctl start dbconsole啟動em console服務,使用前需要先設定oracle sid環境變數 emctl stop dbconsole...

Linux啟動管理器

啟動管理器是儲存在磁碟開始扇區中的一段程式,例如,硬碟的mbr master boot record 在系統完成啟動測試後,如果系統是從mbr啟動,則bios basic input output system 將控制傳送給mbr。然後儲存在mbr中的這段程式將執行。這 段程式被稱為啟動管理器。它的...

自動啟動管理器

介面如下 主要 如下 1 實現檔案2 34 include stdafx.h 5 include managerun.h 6 include managerundlg.h 7 include regadd.h 8 9 ifdef debug 10 define new debug new 11 en...