原文:安裝並啟動xv6

. 下載xv 從github上拉取xv 的源碼: . 下載qemu 在Ubuntu下使用apt get,其他發行版自行搜索如何下載: . 測試編譯環境 輸入下面的命令 第二行應該輸出:elf i 輸入下面的命令, 應輸出: usr lib gcc i linux gnu version libgcc.a或者 usr lib gcc x linux gnu version libgcc.a 如果是 ...

2022-01-26 12:14 1 620 推薦指數:

查看詳情

XV6學習筆記(1) : 啟動與加載

XV6學習筆記(1) 1. 啟動與加載 首先我們先來分析pc的啟動。其實這個都是老生常談了,但是還是很重要的(也不知道面試官考不考這玩意), 1. 啟動的第一件事-bios 首先啟動的第一件事就是運行bios,這個時候我們的機器位於實模式,也就是16位地址。這個時候能訪問的空間只有1mb ...

Tue Aug 17 05:43:00 CST 2021 5 326
XV6學習(7)Lab lazy

代碼在github上。 這一個實驗是要利用缺頁異常來實現懶分配(lazy allocation)。用戶態程序通過sbrk系統調用來在堆上分配內存,而sbrk則會通過kalloc函數來申請內存頁面,之 ...

Sat Jan 16 18:39:00 CST 2021 1 461
XV6學習(10)鎖

在包括XV6的絕大部分操作系統都是多個任務交錯執行的。交錯的一個原因是多核硬件:多核計算機的多個CPU核心獨立執行計算,如XV6的RISC-V處理器。多個CPU核心共享物理內存,XV6利用這種共享來維護所有核心都會讀寫的數據結構。而這種共享會導致一個CPU在讀取某數據結構時,可能有另一個CPU正在 ...

Fri Feb 05 19:05:00 CST 2021 0 334
xv6實驗環境搭建

安裝bochs 因為要運行的是xv6,所以不能直接使用 apt-get 直接獲取軟件。apt-get獲取到的軟件不支持SMP (Symmetric Multi-Processing)。因此,需要下載源碼自己編譯(源代碼下載地址在下載頁面的底部Download SVN Snapshot ...

Wed Jan 01 22:55:00 CST 2014 0 3082
xv6的系統調用

最近更新於2021/08/05. 我們以xv6的一個系統調用getpid()為例,觀察xv6的系統調用大致過程。 系統調用的聲明位於 user.h 中,xv6的用戶程序若要使用系統調用需要包括這個頭文件,其中getpid()聲明如下: int getpid(void); 此函數定義 ...

Thu Aug 05 09:20:00 CST 2021 0 113
XV6學習(2)Lab syscall

實驗的代碼放在了Github上。 第二個實驗是Lab: system calls。 這個實驗主要就是自己實現幾個簡單的系統調用並添加到XV6中。 XV6系統調用 添加系統調用主要有以下幾步: 在user/user.h中添加系統調用函數的定義。 在user/usys.pl中添加 ...

Mon Dec 21 18:28:00 CST 2020 0 917
XV6學習(3)Page tables

頁表是操作系統中非常重要的一部分,用於將虛擬地址轉化為物理地址。虛擬內存是操作系統實現進程隔離的關鍵技術。 在 XV6 中通過 RISC-V 的頁表機構完成了虛擬地址向物理地址的轉換。 分頁硬件機構 XV6 運行於 Sv39 RISC-V 上,64 位地址中的低 39 位被使用。RISC-V ...

Mon Dec 21 18:32:00 CST 2020 0 743
XV6學習 (4)Lab pgtbl

這一個實驗主要是學習XV6的頁表(分頁機制),關於分頁機制的相關內容已經寫在XV6學習 (3)里面了。 代碼放在Github上。 Print a page table (easy) 這一個就是要實現一個vmprint()函數來遍歷頁表並打印,可以仿照freewalk()函數來寫。 在這里 ...

Wed Dec 23 18:33:00 CST 2020 0 509
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM