原文:MIT 6.S081 2021: Lab Copy-on-Write Fork for xv6

雖然Copy on Write原理是很顯而易見的,但是在具體實現中需要處理的細節特別多,經常會在莫名其妙的地方出現錯誤,再加上使用gdb調試內核本身就是一件不容易的事情,所以這個Copy on Write實驗還是很有難度的。首先來看一下什么是copy on write,兩張圖解釋: .uvmcopy 根據提示,首先要修改uvmcopy ,把子進程的虛擬地址映射到父進程的物理頁表上,同時清理父子進 ...

2021-11-19 22:43 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
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
XV6學習(9)Lab cow: Copy-on-write fork

代碼在github上。總體來說如果理解了COW機制的話,這個實驗的完成也沒有很復雜。 這一個實驗是要完成COW(copy on writefork。在原始的XV6中,fork函數是通過直接對進程的地址空間完整地復制一份來實現的。但是,拷貝整個地址空間是十分耗時的,並且在很多情況下,程序立即調用 ...

Sun Jan 31 20:19:00 CST 2021 0 1017
MIT 6.S081 聊聊xv6中的trap

前言 這個星期睡眠和精神狀態一直比較差,6.824很多論文沒時間回顧,15-445的Lab2又耗費了我巨大的精力,實在寫不動代碼了。只能寫點回顧總結之類的東西。我很久之前就想總結一下xv6中關於進程的知識,后來發現這涉及的范圍實在是太大了(廢話,這在哪本OS教材里都能占完整的一章),而且無論如何 ...

Fri Nov 06 09:27:00 CST 2020 1 787
MIT 6.S081 2021: Lab traps

RISC-V assembly Which registers contain arguments to functions? For example, which register holds 13 in main's call to printf ...

Sat Nov 20 06:42:00 CST 2021 1 740
MIT 6.S081 2021: Lab mmap

mmap mmap就是把指定的文件fd映射到進程內存空間的某一個部分,映射建立之后,進程讀寫這塊內存就像是在讀寫文件一樣。按照提示來做實驗: Implement mmap: find an unused region in the process's address space ...

Tue Nov 23 07:15:00 CST 2021 2 920
MIT 6.S081 2021: Lab Lock

Memory allocator xv6是使用linked list來管理空余內存塊,我們先看一下kalloc.c究竟是怎么工作的: 首先是2個結構體,匿名結構體kmem就是我們訪問空余內存的憑據了,kmem里面有一個自旋鎖和一個鏈表頭部指針 ...

Sat Nov 20 06:47:00 CST 2021 7 1243
MIT 6.S081 2021: Lab file system

i-node xv6文件系統是使用inode來管理文件,先上一張圖來解釋一個文件的inode是怎么管理它的磁盤塊的: xv6文件系統里定義了2個版本的inode。一個是硬盤上面存儲的版本struct dinode ...

Sat Nov 20 06:48:00 CST 2021 0 148
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM