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...