自己動手從零寫桌面操作系統GrapeOS系列教程——6.電腦啓動過程介紹

學習操作系統原理最好的方法是自己寫一個簡單的操作系統。


按一下電腦上的電源按鈕,電腦就啓動了,不一會兒電腦屏幕上就出現了登錄界面或直接進入了桌面。
這是一個很日常的場景,但有時候會有個疑問:電腦內部是如何啓動的?本講我們就簡單的介紹一下。
因爲本教程屬於入門型,不考慮UEFI等比較新的技術,但不影響對操作系統基本原理的學習。
電腦的啓動過程在細節上是比較複雜的,但在大的過程上分爲以下幾個:

上電->BIOS->MBR(boot)->loader->kernel->交互界面(圖形/命令行)

上面是一個比較經典的電腦啓動過程,可以看到電腦啓動過程類似接力賽,下面介紹一下接力賽的每一棒。

1. 上電

上電就是我們按了一下電腦上的電源按鈕。上電後CPU會初始化,程序寄存器會指向一個固定的起始位置0xFFFF0。這個地址是BIOS程序的入口地址,CPU執行的第一條程序就從這裏開始。

2. BIOS

Basic Input Output System 簡稱BIOS,中文譯爲基本輸入輸出系統。BIOS可以理解爲一個微型操作系統,但它的功能很有限。它的主要作用是上電自檢,然後加載並執行MBR裏的程序。
BIOS程序存儲在主板上的一塊芯片裏,CPU可以像訪問內存條那樣通過地址訪問BIOS程序。但這塊芯片在斷電後不會丟失信息,對比內存斷電後內存信息就全清零了。
BIOS上電自檢主要是對電腦硬件進行檢測和初始化,如果硬件有比較嚴重的問題,比如沒發現內存條,BIOS會給出提示,並停止後續的操作。
BIOS自檢完,如果硬件沒有大的問題,就會去尋找啓動項的MBR。這裏說的啓動項主要指硬盤、優盤、光盤、軟盤等這些設備。安裝過操作系統的朋友應該知道,在BIOS設置裏有個啓動項列表,可以調整啓動項的順序,在安裝操作系統時我們可能會對這裏進行設置。BIOS此時會根據這個啓動項列表順序讀取第一個啓動項的第一個扇區到內存地址0x7C00處。每個扇區有512個字節,BIOS程序會檢查這512個字節中最後2個字節是否是0x55和0xAA。如果是說明這就是合法的MBR,並通過跳轉指令跳轉到0x7C00處執行程序。如果不是則讀取下一個啓動項的第一個扇區到內存地址0x7C00處,重複上面的過程。如果最後沒有發現一個合法的MBR,BIOS會給出提示,並停止程序。

3. MBR

Master Boot Record 簡稱MBR,中文譯爲主引導記錄,也就是啓動項的第一個扇區。但並不是說啓動項的第一個扇區就一定是MBR。只有啓動項第一個扇區的最後2個字節是0x55和0xAA,該扇區纔是MBR,該啓動項纔是合法的啓動項。
需要注意的是一般硬盤的MBR中有分區表,而GrapeOS沒有,因爲GrapeOS使用的虛擬硬盤只有4MB,沒必要分區。
BIOS中的程序一般在電腦出廠前就內置好了,從MBR開始及其之後的程序就該我們寫了。
MBR裏寫的程序我們這裏叫boot。因爲MBR只有512個字節,boot功能有限,它主要就做一件事,就是加載並運行loader。

4. loader

loader的主要作用就是先做一些初始化工作,然後加載並運行kernel。

5. kernel

kernel是操作系統的內核,也是操作系統中最重要的部分。內核運行後會先做一些初始化工作,然後打開交互界面。

6. 交互界面

交互界面平時常見的是圖形模式,但也有命令行模式,比如本教程開發環境中用的沒有桌面的CentOS。

至此電腦啓動完畢,用戶可以用了。


如果需要可以觀看本講的視頻版:https://www.bilibili.com/video/BV1UA411B7j3/
GrapeOS操作系統交流QQ羣:643474045

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