編輯:關於android開發
一個操作系統從開機到開始運行,大致經歷“引導—>加載內核入內存—>跳入保護模式—>開始執行內核”這樣一個過程。也就是說,在內核開始執行之前不但要加載內核,而且還有准備保護模式等一系列工作,如果全都交給引導扇區來做,512字節很可能是不夠用的,所以不妨把這個過程交給另外的模塊來完成,我們把這個模塊叫做Loader。引導扇區負責把Loader加載入內存並且把控制權交給它,其他工作放心地交給Loader來做,因為它沒有512字節的限制,將會靈活得多。
為了操作方便,把軟盤做成FAT12格式。這樣對Loader以及今後的Kernel(內核)的操作將會非常簡單易行。
引導扇區是整個軟盤的第0個扇區,FAT12格式如下:
loader源碼:
org 0100h mov ax, 0B800h mov gs, ax mov ah, 0Fh ; 0000: 黑底 1111: 白字 mov al, 'L' mov [gs:((80 * 0 + 39) * 2)], ax ; 屏幕第 0 行, 第 39 列 jmp $ ; 到此停住
然後執行命令
nasm boot.asm -o boot.bin
nasm loader.asm -o loader.bin
先用bximage生成一個軟盤映像,然後在linx下這樣做,因為我的linux裡只有/mnt/hgfs/
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
sudo mount -o loop a.img /mnt/hgfs/
sudo cp loader.bin /mnt/hgfs/ -v
sudo umount /mnt/hgfs/
運行結果如下:
看到了字符“L”。
如果把前面學習的時鐘中斷程序按照上面的方法來運行也可以,如下
可以在虛擬機上運行,說明已經突破了512字節限制。
那麼現在我們假設已經有了一個內核,Loader肯定要加載它入內存,而且內核開始執行的時候肯定已經在保護模式下了,所以,Loader要做的事情至少有兩件:
1.加載內核入內存
2.跳入保護模式
【源碼】
《Android源碼設計模式解析》讀書筆記——Android中你應該知道的設計模式 斷斷續續的,《Android源碼設計模式解析》也看了一遍,書中提到了很多的設計模式,
Android 在外部存儲讀寫文件,android讀寫本文主要介紹android中如何在外部存儲讀寫數據 sd卡的路徑 sdcard:2.3之前的sd卡路徑 mnt/sd
Android中手機錄屏並轉換GIF的兩種方式,android錄屏之前在博文中為了更好的給大家演示APP的實現效果,本人了解學習了幾種給手機錄屏的方法,今天就給大家介紹兩
基於HTML5的WebGL結合Box2DJS物理引擎應用上篇我們基於HT for Web呈現了A* Search Algorithm的3D尋路效果,這篇我們將采用HT f