從github上拉取xv6的原始碼:
$ git clone git:
$ sudo apt-get install qemu
輸入下面的命令
$ objdump -i
第二行應該輸出:elf32-i386
輸入下面的命令,
$ gcc -m32 -print-libgcc-file-name
應輸出:
/usr/lib/gcc/i486-linux-gnu/version/libgcc.a
或者/usr/lib/gcc/x86_64-linux-gnu/version/32/libgcc.a
如果是62位的系統,需要安裝32位的支援庫:
$ sudo apt-get install gcc-multilib
關於硬體虛擬化kvm的問題看這個:[couldn't find a working qemu executable][
編譯xv6原始碼:
$ cd xv6-public
$ make
啟動xv6:
$ make toolprefix=i386-elf- qemu-nox
或者
$ make qemu-nox
XV6記憶體布局
1 規定系統最大物理記憶體為16mb。2 應用程式使用0 640k虛擬記憶體,640k 1m是對映io空間,1m以上的高位記憶體只有核心可以使用,4064 4096最高32m位址空間對映到不同的裝置。3 每個應用程式都有自己的頁表,頁表的前160項 0 640k 記憶體是自己對映的,從640k到最高...
Xv6 多程序程式設計
參考 xv6 riscv book 1.1 processes and memory 系統呼叫 描述int fork 建立乙個程序 通過複製當前程序 返回子程序 pid int exit int status 終止當前程序,status 會被報告給 wait 無返回值 int wait int st...
xv6磁碟驅動及快取
前面的博文中詳細講述了xv6的檔案系統,其中使用位圖塊來進行磁碟block的 管理,但是對於block內容進行讀寫則需要更底層的磁碟驅動程式,同時考慮到磁碟讀寫的速度非常慢 相對於記憶體讀寫 因此我們有必要對磁碟的資料塊進行快取。整個磁碟的快取是採用類似物件池 object pool 的框架來實現的...