操作系統(一)--啓動

 BIOS啓動過程

      當計算機加電後,一般不直接執行操作系統,而是執行系統初始化軟件完成基本IO初始化和引導加載功能。簡單地說,系統初始化軟件就是在操作系統內核運行之前運行的一段小軟件。通過這段小軟件,我們可以初始化硬件設備、建立系統的內存空間映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操作系統內核準備好正確的環境。最終引導加載程序把操作系統內核映像加載到RAM中,並將系統控制權傳遞給它。

    絕大多數計算機系統中,操作系統和應用軟件是存放在磁盤(硬盤/軟盤)、光盤、EPROM、ROM、Flash等可在掉電後繼續保存數據的存儲介質上。計算機啓動後,CPU一開始會到一個特定的地址開始執行指令,這個特定的地址存放了系統初始化軟件,負責完成計算機基本的IO初始化,這是系統加電後運行的第一段軟件代碼。對於Intel 80386的體系結構而言,PC機中的系統初始化軟件由BIOS (Basic Input Output System,即基本輸入/輸出系統,其本質是一個固化在主板Flash/CMOS上的軟件)和位於軟盤/硬盤引導扇區中的OS Boot Loader。BIOS實際上是被固化在計算機ROM(只讀存儲器)芯片上的一個特殊的軟件,爲上層軟件提供最底層的、最直接的硬件控制與支持。更形象地說,BIOS就是PC計算機硬件與上層軟件程序之間的一個"橋樑",負責訪問和控制硬件。

以Intel 80386爲例,計算機加電後,CPU從物理地址0xFFFFFFF0(由初始化的CS:EIP確定,此時CS和IP的值分別是0xF000和0xFFF0))開始執行。在0xFFFFFFF0這裏只是存放了一條長跳轉指令,通過跳轉指令跳到BIOS例行程序起始點,BIOS計算機硬件自檢和初始化。

 

bootloader啓動過程

    BIOS執行做完計算機硬件自檢和初始化後,會選擇一個啓動設備(例如軟盤、硬盤、光盤等),並且讀取該設備的第一扇區(即主引導扇區或啓動扇區)到內存一個特定的地址0x7c00處,然後CPU控制權會轉移到那個地址繼續執行。至此到bootloader完成以下工作:

 

操作系統啓動過程

     當bootloader通過讀取硬盤扇區把操作系統加載到內存後,就轉跳到ucore操作系統在內存中的入口位置(kern/init.c中的kern_init函數的起始地址),這樣ucore操作系統就接管了整個控制權。

 

 

 

 

 

 

 

 

 

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