原文: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