原文:XV6學習(9)Lab cow: Copy-on-write fork

代碼在github上。總體來說如果理解了COW機制的話,這個實驗的完成也沒有很復雜。 這一個實驗是要完成COW copy on write fork。在原始的XV 中,fork函數是通過直接對進程的地址空間完整地復制一份來實現的。但是,拷貝整個地址空間是十分耗時的,並且在很多情況下,程序立即調用exec函數來替換掉地址空間,導致fork做了很多無用功。即使不調用exec函數,父進程和子進程的代碼段 ...

2021-01-31 12:19 0 1017 推薦指數:

查看詳情

MIT 6.828 - 5. Lab 05: Copy-on-Write Fork for xv6

目錄 實驗總結 0. 實驗准備 0. 引用計數 1. 實現基於 cow 的 uvmcopy 2. 處理頁面異常 4 & 5. 各種檢查 實驗總結 本次實驗用時約 11 個小時。 收獲是對 Copy-on-Write 機制 ...

Thu Dec 26 18:38:00 CST 2019 0 1017
MIT 6.S081 2021: Lab Copy-on-Write Fork for xv6

雖然Copy-on-Write原理是很顯而易見的,但是在具體實現中需要處理的細節特別多,經常會在莫名其妙的地方出現錯誤,再加上使用gdb調試內核本身就是一件不容易的事情 ...

Sat Nov 20 06:43:00 CST 2021 0 770
MIT 6.S081 Lab5 Copy-On-Write Fork

前言 最近絕大多數的空閑時間都拿來錘15-445了,很久沒動6.S081。前幾天回頭看了一下一個月前錘完的Lazy Allocation,自己寫的代碼幾乎都不認識了.......看來總結之類的東西最好還是趁着熱乎的時候寫啊。 不過15-445的內容實在太多了,我只是為了錘Lab粗略的看了看課件 ...

Fri Nov 06 00:00:00 CST 2020 0 527
XV6學習(7)Lab lazy

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

Sat Jan 16 18:39:00 CST 2021 1 461
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學習 (4)Lab pgtbl

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

Wed Dec 23 18:33:00 CST 2020 0 509
XV6學習(1) Lab util

正在學習MIT的6.S081,把做的實驗寫一寫吧。 實驗的代碼放在了Github上。 第一個實驗是Lab util,算是一個熱身的實驗,沒有涉及到系統的底層,就是使用系統調用來完成幾個用戶模式的小程序。 Boot xv6 (easy) 啟動XV6,按照文檔執行就ok了。 在XV6中 ...

Tue Dec 22 01:21:00 CST 2020 0 727
XV6學習(6)Lab: traps

這一個實驗主要是對RISC-V的匯編、棧幀結構以及陷阱進行簡單的了解,難度並不大。 代碼放在github上。 RISC-V assembly (easy) Q1: Which registers ...

Wed Jan 06 18:37:00 CST 2021 0 957
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM