標籤:style blog http color io os 使用 ar strong
電腦是怎麼啟動的?
你是非曾經想過當你按下你電腦或者手提的電源鍵時,出現了Windows或者Linux標誌
的螢幕後方到底發生了什嗎?從按下按鍵到出現登入畫面的過程中,大概有上百的組件被初始化以及上前行的代碼在啟動過程中運行。但是,什麼時候啟動(Booting)呢?
我們將到機器裡面看看到底發生了什麼。那就讓我們開始了吧。。。
什麼是啟動(booting)?
啟動時一個載入然後開始運行作業系統的一系列過程或者操作,過程從你按下你的電源鍵開始。
什麼是啟動過程?
很多基礎的啟動過程文檔都會讓人感到困惑,因為他們經常會與linux或者windows等作業系統相關。但是我會竟可能的把他寫的通用一點。
一盤啟動過程由下面這些步驟組成:
- 按下電源鍵
- 重設CPU的引腳電平,把寄存器設為特定的初始值
- CPU跳到載入了BIOS的記憶體區(0xFFFF0)
- BIOS運行上電自檢(POST - Power-On Self Test)和一些其他檢測
- 主載入器(Primary Bootloader)沖MBR運行,然後跳轉到第二載入器(Secondary Bootloader)
- 第二載入器載入作業系統
這些就是啟動過程中所需要做的任務。現在我們來說說他們的細節。
當我們按下電源鍵,送出重設訊號然後CPU的寄存器初始化為特定的初始值(譯者註:送出重設訊號指的是:通常有一個引腳只要在CPU通電以後,這個引腳檢測到特定的電平,例如高電平,就會重設CPU)。最開始和最重要的是重設如所示的重設向量(例子使用的是4GB的RAM)。值得注意的是目前記憶體裡面的值都是一些垃圾值(複位後的隨機值),指令和資料所存放的地址是由你電腦的晶片集的記憶體地圖(memory map)所決定的。記憶體地圖把儲存在ROM中的資料和指令映射到特定的記憶體位址。必須保證的是,這些重設向量地址裡面的值必須存放“跳轉到系統BIOS代碼的地址”的指令,以便於接下來BIOS代碼接手,繼續啟動系統。
BIOS - Basic Input Output System (基礎輸入輸出系統)
正如我們之前看到上電後CPU重設以及把寄存器的值設定為初始值,那到底是哪一個記憶體位址存放了BIOS呢?一般來說EEPROM(電擦除唯讀記憶體)這個硬體裡面存放著BIOS。BIOS執行的任務有以下幾類:
l POST-上電自檢,是一個用來檢測和測試基礎硬體的最重要的程式。如果這一步中出現了錯誤,將會顯示錯誤。
l 初始化硬體裝置,然後讓各個裝置運行各自的BIOS(例如:有的顯卡會有他們自己內建的顯卡代碼)
l 尋找主引導記錄(MBR)然後讀取他們
l 把開機磁區中的代碼複製到RAM(記憶體)中然後把控制權移交給這段代碼。
開機磁區
指的是一個硬碟中的其中一個扇區,它有512位元組的大小。一個扇區會被被視為為開機磁區是因為它所在的位置和這個扇區負責進一步地啟動系統。這個開機磁區一般被稱為主引導記錄(MBR - Master Boot Record)。主引導記錄是一個位於硬碟第一個位置的扇區,擁有512位元組(0號柱面,0號磁頭,1號扇區)。當BIOS找到了開機磁區,他就會把這個扇區複製到RAM中,然後把運行權交給MBR中的代碼。
在MBR中的頭446個位元組是主載入器,也被叫做PBL,主引導載入程式(primary bootloader)。
接下來的64位元組是分區表,裡面存摺分區的記錄。
MBR以0xAA55這兩個位元組結束(511byte為0x55,512byte為0xAA)。這兩個數字就像是憑證一樣,指明這是一個開機磁區。
原網站:http://www.engineersgarage.com/tutorials/how-computer-pc-boots-up?page=1
轉載本文請保留以下網址:http://www.cnblogs.com/warren-wong/p/3982149.html
如果發現文中有錯誤之處,請務必告訴我,謝謝大家。
電腦是怎麼啟動的?(轉載翻譯)