深入理解BIOS

2021-05-24 09:04:57 字數 1380 閱讀 5502

在學習windows系統啟動的過程中,經過仔細的思考,我還存在一點困惑:cpu的reset訊號撤銷掉,cpu會從f000:fff0位址(即1mb的ram的最高位址的64kb)開始執行,這個位置實際上是一條跳轉指令,直接跳轉到bios的位址開始執行。

在網上查閱了一些資料後,我開始慢慢明白了,其實cpu不僅僅可以跟ram打交道的,也可以跟rom打交道的,只是一般情況下rom的速度實在太慢,所以一般情況下並不跟rom打交道,但那並不代表不能跟rom直接打交道,rom和ram在cpu看來是一樣的,只是他們的速度不一樣而已。

實際上,

處理器的第一條指令會將位址定位到bios儲存器中,讓初始化程式開始執行,f000段只是rom占用了ram段而已。

cpu會執行bios的一小部分**,我們習慣把這一段**叫做boot block。這段**將對記憶體ram進行檢測,檢測完畢後再將剩下的**轉到ram中去執行,這些**再去做bios的各種工作。

bios的基本功能

很多人都知道bios是工作在計算機最底層的的基本輸入輸出系統,它是英文basic input/output system的首字母縮寫。從本質上來講,狹義的bios就是指載入在電腦硬體系統上的最基本的軟體程式碼,如果我們按照功能來劃分,bios有5大功能:

1 .開機自我測試:檢查**處理器 (cpu) 及各控制器的狀態是否正常;

2.初始化動作:針對記憶體、主板晶元組、顯示卡及周邊裝置做初始化動作;

3.記錄系統設定值:提供各元件的基本設定,如顯示器、鍵盤、處理器、記憶體等;

4.提供常駐程式庫:提供作業系統或應用程式呼叫的中斷常駐程式,如int 10h等;

5.載入作業系統:從儲存裝置中載入作業系統到隨機訪問記憶體。

通俗來講,我們可以將bios看作是專門與硬體溝通的微型作業系統,通常使用與cpu相容的組合語言來編寫(機械語言+高階語言)。但在筆者看來,bios既是英文的首字母縮寫,同時也具有希臘文本「βιοζ」(生命)的寓意。

真正的bios技術起源於ibm pc/at機器的流行,以及第一台由康柏公司研製生產的「轉殖」

pc。在啟動的過程中,bios擔負著初始化硬體、檢測硬體功能以及引導作業系統的責任。在早期,bios還需要提供一套執行時的服務程式給作業系統或者應用軟體來使用。

可以說,bios是整台計算機最核心的靈魂,所以必須找到乙個合適的容器來妥善保管;否則一旦魂飛魄散,那整台計算機也就失去了工作的能力。由於特殊的工 作要求,bios中的微**程式必須存放在乙個斷電後能夠不丟失資訊的唯讀儲存器中,當系統加電或者被重置時,處理器的第一條指令會將位址定位到bios 儲存器中,讓初始化程式開始執行。

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...