自己動手寫作業系統(一)

2021-07-29 12:07:10 字數 1441 閱讀 6566

從去年就想好好的讀一下這本書,跟著書上做一下,但是給耽擱了,現在就好好的開始探索這麼書吧!

雖然我很想在這裡吹一段這本書有多麼的厲害,但是!我第一章都沒有看完,吹不了!!!等我讀的個七七八八再回來吹吧。

我是在搜尋嵌入式的學習路線中發現的這本書,當時他們說這本書很有趣,操作能力強,對作業系統的理解很有幫助,於是上網準備買一本。然鵝,它已經絕版了。好在圖書館可以借到,破費一番周折之後,終於弄到了這本書。這本書的作者很有趣,他所提出的在實踐中學習很值得我們學習。

囉嗦了這麼多,下面開始對這本書的第一章開始進行總結。

首先介紹一下我使用的環境:vmware + ubuntu,版本分別是10.0.1/14.04(ubuntu版本檢視方式 cat /stc/issue)

翻開書的第一章,wtf???第乙個要求就是準備一張軟盤?軟盤是我們計算機基礎老師用來憶苦思甜的玩意兒了好嗎?我去**弄塊軟盤來?有問題問度娘,發現這個問題很好解決嘛,用虛擬機器就不沒事了,虛擬軟盤嘛。但是操作方法嘛,我這裡提供一種在linux系統內實現的方法。

使用下列工具,就可以實現軟盤引導。

1.dd:在指定大小內對乙個檔案進行拷貝,並在拷貝的同時進行指定的轉換。

這個鏈結對dd進行了詳細的講解。

2.nasm:彙編的編譯工具,可以生成.bin檔案。

這個鏈結對qemu進行了概述。

好了,既然環境、工具都準備好了,那我們便開始編寫helloworld吧!

1.編寫helleworld的**

1.1.建立asm檔案

vi boot.asm

1.2.編寫boot.asm檔案

org 07c00h

mov ax,cs

mov ds,ax

mov es,ax

call dispstr

jmp $

dispstr:

mov ax,bootmessage

mov bp,ax

mov cx,16

mov ax,01301h

mov bx,000ch

mov dl,0

int 10h

retbootmessage:    db "hello,os world!"

times 510-($-$$) db 0

dw 0xaa55

1.3.編寫boot.asm檔案並生成boot.bin檔案

nasm boot.asm -o boot.bin

1.4.生成boot.img映象檔案

dd conv=sync if=boot.bin of=boot.img bs=1440k count=1

1.5.將helloworld跑起來

qemu-system-x86_64 -fda boot.img -boot a -m 64 -localtime

好了,這樣helloworld就能跑起來了,這和我們以往的程式設計是不同的,它是在裸機上面執行的,不依賴任何軟體!

自己動手寫作業系統(一)

好了,廢話不多說,我們開始第一章,開發準備。我這裡使用的是ubuntu作業系統,模擬器採用的是bochs,編譯器使用的是gcc和nasm。bochs安裝 sudo apt get install bochs.gcc用來編譯c檔案。ubunt自帶,無需安裝 nasm用來編譯彙編,安裝命令 sudo a...

自己動手寫作業系統

virtual pc 5.2 下 dos7.1 中 執行.com檔案相關問題 2009 09 09 12 55 剛才在進入dos後,編譯.asm檔案獲得.com檔案,但系統會出現 emm386 unrecoverable privileged operation error n9.press ent...

自己動手寫作業系統

今天看了前兩章,現將重點記錄如下 作業系統的啟動,關鍵點時同bios的介面 這裡有兩個位址很重要,a,0x7c00 510 0x7dfe登記標誌位 兩個byte 0xaa55 b,0x7c00,作業系統載入的目標位址 系統啟動過程 1 bios清零cpu現場 傳送reset訊號 2 cpu從0xf ...