原文:XV6學習(12)Lab lock: Parallelism/locking

代碼在github上 這一次實驗是要對XV 內部的鎖進行優化,減少鎖爭用,提高系統的性能。 Memory allocator moderate 第一個實驗是對XV 內核的內存頁面分配器進行改進,改進的策略在前面的章節中也講過了。XV 原本是使用一個空閑頁面鏈表,但是這樣就會導致不同CPU上的kalloc和kfree會產生鎖爭用,內存頁面的分配被完全串行化了,降低了系統的性能。 而一個改進策略就是為 ...

2021-02-06 19:01 0 484 推薦指數:

查看詳情

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
XV6學習(11)Lab thread: Multithreading

代碼放在github上。 這一次實驗感覺挺簡單的,特別是后面兩個小實驗。主要就是對多線程和鎖進行一個學習。 Uthread: switching between threads 這一個實驗是要實現一個簡單的用戶級線程,寫完之后發現原來用戶級線程的簡單實現也沒有想象的那么復雜。 首先定義一個 ...

Sat Feb 06 05:24:00 CST 2021 1 775
XV6學習(15)Lab mmap: Mmap

代碼在Github上。 這一個實驗是要實現最基礎的mmap功能。mmap即內存映射文件,將一個文件直接映射到內存當中,之后對文件的讀寫就可以直接通過對內存進行讀寫來進行,而對文件的同步則由操作系統來 ...

Wed Feb 10 20:04:00 CST 2021 0 695
XV6學習(16)Lab net: Network stack

最后一個實驗了,代碼在Github上。 這一個實驗其實挺簡單的,就是要實現網卡的e1000_transmit和e1000_recv函數。不過看以前的實驗好像還要實現上層socket相關的代碼,今年就 ...

Thu Feb 11 02:50:00 CST 2021 0 455
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM