XV6記憶體布局

2021-05-23 19:04:59 字數 389 閱讀 2601

1、        規定系統最大物理記憶體為16mb。

2、        應用程式使用0-640k虛擬記憶體,640k-1m是對映io空間,1m以上的高位記憶體只有核心可以使用,4064-4096最高32m位址空間對映到不同的裝置。

3、        每個應用程式都有自己的頁表,頁表的前160項(0-640k)記憶體是自己對映的,從640k到最高物理記憶體,其實體地址和虛擬位址是一致的,不過應用程式沒有訪問高於640k記憶體的許可權。這樣可以》    快速從應用層切換到核心層。

4、        應用程式要求分配頁面的時候,核心空間對映的物理頁會再次對映到使用者空間,相當於乙個頁被映**兩次。

5、        核心使用乙個被自旋鎖保護的鍊錶來儲存空閒頁面,鍊錶的節點就位於空閒頁面的頂端(好精妙的設計!)。

Xv6 多程序程式設計

參考 xv6 riscv book 1.1 processes and memory 系統呼叫 描述int fork 建立乙個程序 通過複製當前程序 返回子程序 pid int exit int status 終止當前程序,status 會被報告給 wait 無返回值 int wait int st...

安裝並啟動xv6

從github上拉取xv6的原始碼 git clone git sudo apt get install qemu輸入下面的命令 objdump i第二行應該輸出 elf32 i386 輸入下面的命令,gcc m32 print libgcc file name應輸出 usr lib gcc i48...

xv6磁碟驅動及快取

前面的博文中詳細講述了xv6的檔案系統,其中使用位圖塊來進行磁碟block的 管理,但是對於block內容進行讀寫則需要更底層的磁碟驅動程式,同時考慮到磁碟讀寫的速度非常慢 相對於記憶體讀寫 因此我們有必要對磁碟的資料塊進行快取。整個磁碟的快取是採用類似物件池 object pool 的框架來實現的...