Orange s 乙個作業系統的實現之筆記1

2021-06-05 23:39:24 字數 1711 閱讀 6722

《orange's 乙個作業系統的實現》之筆記1

從今天開始,我們要自己設計乙個超簡陋的os了,主要的參考教材就是于淵的《orange's 乙個作業系統的實現》,這是一本非常非常好的書!

俗話說,工欲善其事,必先利其器,我們需要以下工具:

bochs:執行我們的os的主要平台,這是乙個x86指令集模擬器,非常強大。安裝步驟可以參考:

nasm:乙個非常好用的彙編器,我們的彙編**就要用它編譯成機器指令。安裝步驟可以參考:

軟盤製作工具:我們的所有程式最終都會寫到一塊軟盤上,因此我們需要這麼乙個工具。

不過我們完全可以自己寫乙個軟盤製作工具,需要了解的知識就是一塊軟盤的大小為1440k(1474560bytes),並且第乙個512位元組的最後兩個位元組是0x55,0xaa。知道上面兩點就可以了。直接貼**:

makefile:

all:

gcc -wall -o pad pad.c

clean:

rm -rf *.o pad

pad.c:

#include #include #include #include int fileexist(char * filename)

else }

long getfilelength(char * filename)

fseek(fp, 0, seek_end);

length = ftell(fp);

fseek(fp, 0, seek_set);

fclose(fp);

return length;

}void printusage()

int main(int argc, char * argv)

if(!fileexist(argv[1]))

if(fileexist(argv[2]))

char * temp;

int c;

long i;

long size = strtol(argv[3], &temp, 10);

long leng = getfilelength(argv[1]);

file * in = fopen(argv[1], "r");

file * out = fopen(argv[2], "w");

for(i=0; i= 512)

return 0;

}

這個程式如果去掉最後的設定55aa的部分,就是乙個通用的程式了,命令行為:pad src dst size,其中src是原始檔路徑,dst是新建檔案的路徑,size是以位元組計算的大小。因此pad程式的功能是:

新建乙個大小為size位元組的dst檔案,並且將src檔案copy過去,剩餘的部分用0填充,如果src大於size位元組,則截短為size

而對於我們的軟盤製作工具,可以這樣呼叫:

pad src dst 1474560

好了,準備工作完成了,下面要正式開始啦~~

完成!

Orange s乙個作業系統的實現的開發環境的搭建

平台 linux ubuntu 10.04 需要的軟體 1 編輯器 系統已經自帶vim和gedit 2 檢查依賴關係 編譯生成結果 的make 系統自帶 3 c 編譯器gcc 使用命令安裝 sudo apt get install build essential 4 nasm彙編 編譯器 使用命令安...

乙個小作業系統

1 1 chapter1 a boot.asm 乙個 作業系統 可以只有20行 把下面這段 用nasm編譯一下 nasm boot.asm o boot.bin org 07c00h 告訴編譯器程式載入到7c00處 mov ax,cs mov ds,ax mov es,ax call dispstr...

乙個簡單的作業系統

電腦上電後,bios在自檢後會根據使用者指定的裝置啟動作業系統。假設我們指定軟盤為啟動盤,bios會把軟盤的第乙個扇區 512位元組 讀取到記憶體的0x7c00處,如果這個扇區的最後兩個位元組為0xaa55,bios會跳轉到0x7c00處開始執行。我們可以利用這樣乙個過程做乙個簡單的作業系統。我們的...