作業系統其實是乙個取指執行的過程.
其中的指就是指標,pc(program count程式計數器)指標,然後從記憶體找到命令找到位址給cpu處理執行.
以x86 windowx作業系統為例
計算機開機時
(1) 讓cpu處於實戰模式.
cpu模式分兩種,實戰模式和保護模式,兩種模式的定址不同,實戰模式是cs<<4+ip定址.
(2)定址
cs=0xfff;ip=0x000 定址找到0xfff0 (rom bios對映區) 唯讀記憶體 base input/output system,這裡面有一段**.
(3)檢查
因為前面讀取的那段記憶體會執行一段**,檢查硬體(ram,鍵盤,顯示器,軟硬磁碟)所以有時候電腦出故障了就會開不了機.
(4)讀取磁碟
將磁碟0磁軌0扇區讀入0x7c00處.512位元組為乙個扇區,0磁軌0扇區就是引導扇區bootsect.s,也就是作業系統的第一段**
(5)bootsect
bootsect叫引導扇區其實就是起乙個引導作用,輸出開機畫面,並且轉入0x9002 setup的地盤.
(6)進入setup
setup佔四個扇區,做了很多重要的事情,這裡重點說5個
1.知道你計算機長啥樣,進行一些引數的獲取(游標位置,擴充套件記憶體數,顯示卡引數,根裝置號...)
2.將作業系統的system模組移動到記憶體的0位址處.
3.初始化gdt表(全域性描述符表)
4.進入cpu保護模式也就是將pe修改成1,也就是讓cpu的電路改一下更改cpu定址操作.此時保護模式定址cs的含義為索引從gdt中查表,然後加上ip進行定址(cs所以叫選擇子)
5.定址進入system模組.
為什麼進入保護模式呢,原因是如果是實戰模式的定址計算操作最多表示20位也就是1m的記憶體大小,但計算機的記憶體是很大的所以要換一種定址計算操作.
(7)進入到system模組.
也就是到了模組的第一部分**head.s,head.s又會初始化一遍gpt表.然後進入main.c(是通過函式是方式,壓棧進入)
(8)main.c進入
main.c是乙個死迴圈,裡面是一些init初始化函式:記憶體,中斷,裝置,時鐘,cpu... 如果main.c斷了,棧彈出然後棧頂為head.s設定的乙個中斷,然後宕機.
最後乙個鮮活的桌面誕生了.
總結
所以巨集觀的說作業系統一開始在磁碟,然後從磁碟轉入記憶體,然後進行一些初始化的操作
作業系統的故事從現在開始!
結構體 86 計算機開機時間
要求說明 程式設計實現計算機開機時間,要求每次開始計算時間時都能接著上次記錄的結果接著向下記錄 計算開機時間 include include include struct time 定義時間結構體 t int main int argc,char argv t.second 0 秒數置0 else ...
計算機開機報警
award bios 1短 系統正常啟動。表明機器沒有任何問題。2短 常規錯誤,請進入cmos setup,重新設定不正確的選項。1長1短 記憶體或主機板出錯。換一條記憶體試試,若還是不行,只好更換主機板。1長2短 顯示器或顯示卡錯誤。1長3短 鍵盤控制器錯誤。檢查主機板。1長9短 主機板flash...
計算機如何開機
作業系統是軟體,那麼計算機如何認識作業系統軟體並且執行它,開機時計算機還沒有任何軟體系統,那麼它如何讀取硬碟內的作業系統檔案,這裡就不得不講到開機程式了。bios 開機主動執行的乙個韌體 也是乙個軟體程式 會認識第乙個可開機的裝置 cmos 記錄各項硬體引數且嵌入在主機板上面的儲存器。介紹完這兩個,...