當計算機加電後,一般不直接執行作業系統,而是執行系統初始化軟體完成基本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計算機硬體自檢和初始化。
bios執行做完計算機硬體自檢和初始化後,會選擇乙個啟動裝置(例如軟盤、硬碟、光碟等),並且讀取該裝置的第一扇區(即主引導扇區或啟動扇區)到記憶體乙個特定的位址0x7c00處,然後cpu控制權會轉移到那個位址繼續執行。至此到bootloader完成以下工作:
當bootloader通過讀取硬碟扇區把作業系統載入到記憶體後,就轉跳到ucore作業系統在記憶體中的入口位置(kern/init.c中的kern_init函式的起始位址),這樣ucore作業系統就接管了整個控制權。
作業系統(一)
1.01 歷史 1.02 分類 作業系統 桌面作業系統 redhat fedora slackware ubuntu debian suse linux centos 伺服器作業系統 linux ubuntu deepin startos mint debain suse redhat centos...
作業系統(一)
1 單道批處理系統 batch processing system 2 多道批處理系統 multiprogrammed batch processing system 3 分時系統 time sharing system 程序控制 為作業建立程序 撤銷已結束的程序 控制程序狀態轉換。程序同步 為多個...
作業系統(一)
1.設計現代os的主要目標是什麼?方便性 有效性 可擴充性和開放性 2.os的作用可表現在那幾個方面?os作為使用者與計算機硬體系統之間的介面 os作為計算機系統資源的管理者 os 實現了對計算機資源的抽象 3.為什麼說作業系統實現了對計算機資源的抽象?os首先在裸機上覆蓋一層i o裝置管理軟體,由...