天天看點

《作業系統真象還原》——第2章 編寫MBR主引導記錄,讓我們開始 掌權 2.1 計算機的啟動過程

本節書摘來自異步社群《作業系統真象還原》一書中的第2章,第2.1節,作者:鄭鋼著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

不知道大家對“載入記憶體”這4個字的了解是怎樣的。以下這兩點是我曾經的疑問:第一,為什麼程式要載入記憶體。第二,什麼是載入記憶體。

先回答第一個。

cpu的硬體電路被設計成隻能運作處于記憶體中的程式,這是硬體基因的問題,這樣做的原因,首先肯定是記憶體比較快,且容量大。

其次,作業系統可以存儲在軟碟上,也可以存儲在硬碟上,甚至u盤,當然還有很多存儲媒體都可以。但由于各個硬體特性不同,作業系統要分别考慮每種硬體的特性才行。是以,都在記憶體中運作程式,作業系統和硬體設計都省事了,這可能也是為了方式的統一吧,否則總不能出現某種存儲媒體後,作業系統和硬體就要付出額外努力去支援。當然,具體原因隻有硬體工程師才知道,咱們在此先打住,繼續咱們的内容。

馬上回答第二個。

老聽說“程式載入記憶體”,我不知道有多少同學對這個詞僅僅是感性認識。

我隐約覺得很多同學都會将“載入記憶體”和“程式執行”畫等号。所謂的載入記憶體,大概上分兩部分。

(1)程式被加載器(軟體或硬體)加載到記憶體某個區域。

(2)cpu的cs:ip寄存器被指向這個程式的起始位址。

作業系統在加載程式時,是需要某個加載器來将使用者程式存儲到記憶體中的。其實“加載器”這隻是人為起的名字,突顯了其功能,并不是多麼神秘的東西,本質上它就是一堆函數組成的子產品,不要因為未知的東西而感到畏懼。

從按下主機上的power鍵後,第一個運作的軟體是bios。于是産生了三個問題。

(1)它是由誰加載的。

(2)它被加載到哪裡。

(3)它的cs:ip是誰來更改的。