作業系統引導程式總體功能

2021-10-04 19:51:30 字數 1071 閱讀 6909

當 pc 的電源開啟後, 80x86 結構的cpu 將自動進入實模式,並從位址 0xffff0 開始自動執行程式**,這個位址通常是 rom-bios 中的位址。 pc 機的 bios 將執行系統的某些硬體檢測和診斷功能,並在實體地址 0 處開始設定和初始化中斷向量。此後,它將可啟動裝置的第乙個扇區(磁碟引導扇區, 512 位元組)讀入記憶體絕對位址 0x7c00 處,並跳轉到這個地方開始引導啟動機器執行了。 啟動裝置通常是軟碟機或是硬碟。 這裡的敘述非常簡單,但這已夠理解核心初始化工作開始的過程了。

linux 的最前面部分是用 8086 組合語言編寫的( boot/bootsect.s), 並儲存在引導裝置的第乙個扇區中。 它將由 bios 讀入到記憶體絕對位址 0x7c00( 31kb) 處。 當它被執行時就會把自己移動到記憶體絕對位址 0x90000( 576kb) 處,並把啟動裝置盤中後 2kb 位元組**( boot/setup.s) 讀入到記憶體 0x90200 處。而核心的其他部分( system 模組)則被讀入到從記憶體位址 0x10000( 64kb)開始處。 因此從機器加電開

始順序執行的程式見圖 6-1 所示。

因為當時 system 模組的長度不會超過 0x80000 位元組大小(即 512kb),所以 bootsect 程式把 system模組讀入實體地址 0x10000 開始位置處時並不會覆蓋在 0x90000( 576kb) 處開始的 bootsect 和 setup 模組上。後面 setup 程式將會把 system 模組移動到物理記憶體起始位置處,這樣 system 模組中**的位址也即等於實際的實體地址,便於對核心**和資料進行操作。 圖 6-2 清晰地顯示出linux 系統啟動時這幾個程式或模組在記憶體中的動態位置。圖中,每一豎條框代表某一時刻記憶體中各程式的映像位置圖。在系統載入期間將顯示資訊"loading…"。然後控制權將傳遞給 boot/setup.s 中的**,這是另乙個實模式組合語言程式。

linus當時給出的**的執行流程。

作業系統如何引導程式

1.使用者編寫完 後,通過編譯器將編譯為資料段 段 堆疊段 bss段,由鏈結器鏈結為裝入模組 2.使用者通知作業系統要執行的程式 3.作業系統根據路徑找到對應的程式,檢測程式的頭部,找到 段和資料段的位置 4.檔案系統根據這些段的位置找到對應的磁碟塊 5.作業系統建立程序 建立執行環境 並將要執行的...

作業系統引導

1.系統開機或者重啟。2.bios 加電自檢 power on self test post bios執行記憶體位址為ffff 0000h 處的跳轉指令,跳轉到固化在rom中的自檢程式處,對系統硬體 包括記憶體 進行檢查。3.當bios檢查到硬體正常並與cmos 中的設定相符後,按照cmos 中對啟...

作業系統引導

作業系統是如何引導的呢?當系統加電自檢通過以後,硬碟被復位,bios 將根據使用者指定的啟動順序從軟盤 硬碟或光碟機進行啟動。以從硬碟啟動為例,系統 bios 將主引導記錄讀入記憶體。然後,將控制權交給主引導程式,然後檢查分割槽表的狀態,尋找活動的分割槽。最後,由主引導程式將控制權交給活動分割槽的引...