作業系統的啟動

2021-07-23 13:22:22 字數 995 閱讀 7428

bootsect.s

x86(inter)結構電腦剛開機時cpu處於實模式狀態;cs<<4+ip

記憶體中有一段固化的**(rom bios)//基本輸入輸出,位於0xffff0

cs=0xffff//段暫存器   ip=0x0000//偏移

先檢查硬體,如果不合格作業系統無法執行

start:

如果硬體通過則將磁碟中的0磁軌的0扇區(作業系統的引導扇區)的內容讀到0x07c00,緊接著cs=0x07c0,ip=0x0000

將bios讀入的bootsect.s從0x7c00移到0x90000//留下這段空間留給作業系統使用

load_setup:

從磁碟的第二個扇區開始讀四個扇區(setup)讀入到記憶體0x90200處

ok_load_setup:

列印開機logo

read_it:

讀入system模組 然後將控制權轉交給setup去執行

setup.s

start:

完成os啟動前的設定

int 0x15(獲得物理記憶體的大小)並儲存//便於以後作業系統管理記憶體;

將得到的硬體裝置的資訊放到0x90000處;

do_move:

將system模組移到記憶體中的0位址處,跳到system的第乙個模組開始執行(通過makefile來控制)

所有的原始碼通過makefile生成image

setup最後:進入保護模式,臨時建立乙個gdt表並初始化

保護模式下的位址翻譯:gdt(global describe table),inter結構通過硬體產生32位位址cs(選擇子)cs放的是查表的索引,利用下標查表得到基址+ip;

保護模式下的中段處理:idt,找到中斷處理函式的入口位址

system

head.s->main.c

課後疑問:

10

單選(1分)

mem_init

就是初始化乙個陣列,下面哪個論述不對?()

作業系統的啟動

當按下電源的時候作業系統都幹了些什麼?要搞清楚都幹了些什麼就要搞清楚作業系統是如何啟動的。那麼就要從最基本的常識來入手。認識圖靈機 通用圖靈機模型中 控制器首先從紙帶上面讀取控制動作比如到底是加法還是減法啊,到底是做炒雞蛋啊還是做炒土豆啊。這就好像是我們現在電腦的應用程式了。cpu讀取動作,決定到底...

OS作業系統的啟動

ucore的啟動過程.ucore.img 映象檔案的生成 rom中的bios 軟體執行,完成加電自檢的工作後,跳轉到bootloader 程式.bootloader負責將os從硬碟載入到記憶體中,載入完成後,將cpu控制權移交給os,完成os的啟動.bootloader還完成了實模式和保護模式 32...

作業系統的啟動流程

1.計算機加電 2.從rom中拿出bios程式開始執行,檢測硬體 cpu,記憶體,硬碟 3.bios讀取coms儲存器中的配置資訊,選擇啟動裝置 4.從啟動裝置上讀取第乙個扇區的內容 mbr主引導記錄512位元組,前446位元組為引導資訊,64為分割槽資訊,最後兩位為標誌位 5.根據分割槽資訊讀入b...