從硬件到軟件介紹計算機是如何啓動的

    這是我最近閱讀操作系統書籍以及查閱網上資料獲得的收穫,技術不牢,如有錯誤或疑問歡迎各位提出。

硬件部分

1.接通電源

插上電源線,首先ATX電源接入電,ATX電源先把220V的交流變成了直流(不穩定),然後通過變換器把直流變成交流,最後又把交流變成直流(穩定)輸出到主板。同時實時時鐘開始工作,向CMOS電路和開機電路發送實時時鐘信號。

2.按下開機鍵

當你按動電源鍵的時候,開關元件會通過物理方式接通電路。
這時主板其待命電壓自達南橋芯片(輸出/輸入控制器中心)或I/0芯片
CMOS電路回偵測到一個電壓跳變,此時電源接頭的第14引腳變成低電平。
南橋芯片發出指令給IO芯片,ATX電源全面工作。

在30MS(30毫秒,也就是一剎那)後,ATX電源內部的智能監測電路對ATX電源輸出的各組電壓進行檢測(如有任何一組電壓有短路,漏電等現象,ATX電源會切斷所有的電壓輸出,這是ATX電源的自我保護)

電源接頭的各個引腳向主板的各大系統和各個硬件輸出相應的電壓。

3.準備復位信號

所有供電輸出無誤後的100-500ms後,ATX電源會由第8引腳向主板發送出3V-5V的PowerGood信號,此信號分別提供給CPU、北橋和南橋,其中進入南橋的PowerGood信號作用在內部的復位模塊上,另外,PowerGood信號經過南橋連接到系統的時鐘!芯片的RST端,作爲RST信號(復位信號)。

有了RST信號後,時鐘芯片開始工作,並向主板發送各種頻率的時鐘信號,有了時鐘信號南橋內部的復位模塊開始工作。

這時北橋和CPU等主板的硬件設備開始復位。

4.CPU運行

電源管理芯(電源IC)在供電,
PG信號都正常的情況下會發出1-5組高頻控制信號(具體要看CPU主供電有幾組MOS管)
給CPU主供電的上下MOS管的G極—柵極,也是控制極讓MOS管倒通。(先是上MOS管將電源IC送到的的電壓拉低後從S極(源極)送給下MOS管的D極(漏極)在經過下MOS管的進一步控制下輸出CPU所需要的電壓經過一些電解電容,電感,電阻的濾波等一些列處理在之後讓電壓變得更平穩後。

送給CPU。(這時CPU還沒有工作。數字電路工作必須滿足三大條件,按先後循序爲供電,時鐘,復位。這時CPU還只有供電滿足了)

於此同時,時鐘芯片在供電,PG信號都正常的情況下開始工作。它會將14.318MHz的晶振所產生的頻率通過時鐘芯片內部的升頻電路或降頻電路將其升高或降低後輸給各個需要的元件。(這時CPU的時鐘滿足了)

南橋芯片在供電,時鐘都正常後開始工作,將經過了許多邏輯轉換的PG信號在其內部的復位加工電路變成復位信號輸給北橋芯片(CPU所在)!

北橋芯片在供電,時鐘,復位都正常後開始工作。它將南橋芯片送來的復位信號再次加工後送給CPU!此時CPU的供電,時鐘,復位都已滿足,CPU開始工作,到此電腦的硬啓動結束,也就是我們在沒有看到屏幕上出現主板LOGO畫面之前的所有工作。

軟件部分

5.POST自檢

在CPU開始工作後,首先需要進行自檢,即開始讀取POST自檢程序(主要檢測系統中一些關鍵設備是否存在和能否正常工作,如內存和顯卡等。),

而自檢程序在BIOS【BIOS是存儲於主板盛一個芯片CMOS裏的程序(基本I/O系統),後來將CMOS與它統稱爲BIOS】中存放,所以CPU通過前端總線的A0-A31地址線發送尋址信號尋找自檢程序。在發送尋址信號前,先要檢查前端總線是否被佔用,CPU會檢測DBSY(總線忙信號引腳)是否爲低電平。低電平爲空閒,高電平爲忙。

如果前端總線空閒,則通過前端總線向北橋發送32位或64位尋址信息,北橋接收到尋址信息後,經過譯碼和電壓轉換後,北橋通過AD線(數據地址複合專線)發送給南橋。(當CPU的尋址指令到達南橋後,在PCI插槽的A34腳位上產生一個高頻脈衝波形,稱爲“幀信號” 當到達BIOS芯片後會在長形BIOS的第22腳;方形BIOS的23腳上產生一個高頻脈衝波形,稱爲“片選信號”!這兩個信號用示波器可以看到)

南橋收到尋址信息後經過PCI總線譯碼後發給ISA總線,再由ISA總線控制其經過地址線譯碼、頻率轉換和電壓轉換後,發送給BIOS芯片。

BIOS接到尋址信息後,通過D0-D7輸出自檢程序,自檢程序首先送到ISA總線緩衝區,再轉成16位數據,傳給ISA總線控制器。

ISA總線控制器經過譯碼、轉換後,再將數據發送給PCI總線。PCI總線經過譯碼後產生32位的數據在發送給北橋芯片。
北橋接到數據後轉換爲64位數據,在經過前端總線發送給CPU,CPU接到數據後,開始安裝程序開始自檢硬件設備,自檢完成。

6.顯示畫面

POST自檢完成之後,BIOS會調用其他代碼來進行更完整的硬件檢測。接下 來 系 統 BIOS 將 查 找 顯 卡 的 BIOS ( 在 地 址C0000H 處) ,找到顯卡 BIOS 之後就調用它的初始化代碼來初始化顯卡,對於大多數顯卡來說都會將一些初始化信息顯示在屏幕上,例如生產廠商、 型號等基本信息,但幾乎是一閃而過。系統 BIOS 接着會查找其他設備的 BIOS 程序,調用它們的初始化代碼來初始化相關設備。

BIOS根據設定判斷是否加載BIOS,如果加載則系統 BIOS 將顯示出它自己的啓動畫面,列出系統 BIOS 的類型、 序列號和版本號等內容。
下一步,系統 BIOS 將檢測和顯示 CPU 的類型和工作率,接 着 測 試 所 有 的 隨 機 存 取 存 儲 器 ( Random Access Memory, RAM) ,同時在屏幕上顯示內存測試的進度,內存測試通過之後,系統 BIOS 將開始檢測系統中安裝的一些標準硬件設備, 包括硬盤、 CD-ROM 等。接下來將要檢測和配置系統中安裝的即插即用設備,顯示出檢測到的設備名稱和型號信息,爲這些設備分配可用資源。
所有硬件設備都檢測完畢之後,屏幕上會顯示出各種標準硬件設備使用的資源和相關工作參數等信息。然後系統 BIOS 將 更 新 擴 展 系 統 配 置 數 據 ( Extended System Configuration Data, ESCD) ,系統 BIOS 通過它來與操作系統交換硬件配置信息, 這些數據被存放在 CMOS 中, 通常ESCD 數據只在系統硬件配置發生變化時纔會更新。

如果設置不加載BIOS,則默認BIOS默認執行檢測操作,檢測完成後,交出CPU控制權。

7.啓動硬盤

硬盤啓動
BIOS完成檢測後,系統 BIOS 的操作界面上會顯示出用戶指定的啓動設備順序,所列外部存儲設備可以是軟盤、 硬盤或者是光盤等。排在前面的設備擁有優先轉交控制權,BIOS 按照啓動順序讀取設備中的主引導記(MasterBoot Record, MBR) , 放 到 7C0000H 內 存 地 址 中, 從MBR中查找接下來要讀取的信息。
計算機在讀取 MBR 時不會把控制權轉交給某一分區,而是運行事先安裝的啓動管理器, 由用戶選擇要啓動的操作系統。在 Linux 系統下的啓動管理
器( G Rand Unified Boot loader, Grub) 以 MBR的前 446 B作爲自己的始執行程序,可以選擇操作系統分區上的不同內核,也可以向這些內核傳遞啓動參數。

機械硬盤系統
CPU讀取MBR(主引導記錄)位於整個硬盤的最開始扇區,①擁有446字節的引導程序;②參數64字節的分區表,每個分區項16字節,最大支持2T,4個主分區;③2字節的結束標記0x55和0xaa;

MBR由分區表中尋找“活動分區”—操作系統所在區,並將CPU使用權交由該去的引導程序(通常是內核加載器)OBR也稱DBR

EBR用於擴展分區,與MBR結構相同但是位置和個數不同。

固態硬盤機器

固態硬盤系統一般使用的是UEFI+GUID啓動的,其中UEFI是BIOS的升級版。

UEFI啓動流程:

  1. 系統開機-上電自檢( Power On Self Test或POST)。
  2. UEFI固件被加載,並由它初始化啓動要用的硬件。
  3. 回件讀取其引導管理器以確定從何處(比如,從哪個硬盤及分區)加載哪個UEF應用。
  4. 回件按照引導管理器中的啓動項目,加載UEF應用
  5. 已啓動的UEF應用還可以啓動其他應用(對應於 UEFI shell或 rEFInd之類的引導管理器的情
    況)或者啓動內核及 initramfs(對應於GRUB之類引導器的情況),這取決於UEF應用的配配置
    guid是由uefi啓動的

GUID的是GUID Partition Table,即【全局唯一標識磁盤分區表】。

  1. 它是另外一種更加先進新穎的磁盤組織方式,一種使用UEFI啓動的磁盤組織方式。
  2. 最開始是爲了更好的兼容性,後來因爲其更大的支持內存(mbr分區最多支持2T的磁盤),更多的兼容而被廣泛使用,
  3. 特別是蘋果的MAC系統全部使用guid分區。
  4. guid不在有分區的概念,所有CDEF盤都在一段信息中存儲。
  5. 因爲兼容問題,guid其實在引導的最開始部分也有一段mbr引導,也叫做【保護引導】,爲了防止設備不支持uefi區別;

8.加載操作系統

在上一步CPU使用權交付給OBR/DBR(內核加載器)後,內核加載器裝載系統,把機器的控制權移交給操作系統。
系統的內核先被載入內存,進行系統初始化,加載設備驅動程序。在 Linux 系統下, 首先載入 /boot 目錄下的操作系統 kernel( 內核) , kernel 是操作系統的核心部分, 主要功能有控制和管理事件的調度和同步、 進程間的消息傳遞、 存儲器管理和進程管理等。磁盤文件系統掛載,內核加載成功後, 首先運行磁盤文件系統下 /sbin /init 中的程序, 它根據配置文件產生 init 進程。這是 Linux 啓動後的第一個進程, 設置進程控制塊中的進程識別號 PID( Process Identification,PID) 編號爲 1,其他進程都在它之後產生,爲其子進程。然後 init 線程開始加載系統的各個模塊,完成初始化,檢查系統日誌,如果之前有錯誤怎根據不同錯誤加載錯誤信息,一切正常則操作系統啓動完成。用戶便可以進行正常的日常使用了。

參考資料:
1.https://zhidao.baidu.com/question/1174101903220869099.html
2.《深入理解計算機操作系統》
3.袁茜茜.探究計算機的啓動過程[J].微型機與應用,2016,35(03):38-40.
4.周振興.基於GPT分區+UEFI引導和MBR分區+BIOS引導多分區安裝Windows系統[J].福建電腦,2018,34(12):144-145.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章