环境 系统Ubuntu 20.04 64位系统 HW地址:HW2-Shell 正文 本次实验难度一般般,不需要写很多的代码,并且能够帮我们熟悉常用的Unix system call((),比如说open,close等等。在正式做这个作业之前,务必先阅读xv6Book chapter 0。记下chapter 0中的对于各个system call的详细…
环境 deepin 20 64 位系统 说在前面 本次Lab我也觉得比较难,到最后也有部分测试点没有通过,在实现pipe上也有点问题。另外,我觉得Lab5这部分和xv6中对于Unix的一些知识点的实现稍微有些不同(至少我是这么认为的,这个lab中的很多知识点我选择了认真阅读xv6的代码来理解)。比如说pipe的实现,file descriptor的…
环境 deepin 20 实验地址:mit6.828 2018 lab4 partC 很重要:不知道是不是我的代码实现有些问题,请把lib/syscall.c中的sys_ipc_recv()中的 return syscall()的第二个参数由1改为0。具体看文末 正文 在lab4的最后一部分,你将会修改内核的代码来从uncooperative的进程…
环境 deepin 20(Ubuntu系统老遇到小问题,就换到deepin去了) lab原地址:mit6.828 lab4 本次lab关键在于理清里面代码的逻辑 正文 正如前面说提到的,Unix提供了fork()来作为他的创建进程原语。fork()这个系统调用复制了父进程的地址空间到子进程中去。 xv6通过复制父进程所有的内容来实现fork().这…
环境 ubuntu 20.04 64 系统 正文 在本次实验将在多个同时运行的用户程序中实现抢占式多线程(Preemptive Multitasking)。首先解释一下什么是抢占式多线程: In computing, preemption is the act of temporarily interrupting a task being car…
环境 ubuntu 20.04 64位系统 正文 现在你的内核有了最基本的中断处理能力,我们还会进一步的对它升级使得它能够提供依赖于异常处理的重要的操作系统原语。 Handing Page Fault page fault,第14号中断(T_PGFLT),是一个非常重要的中断贯穿在本次lab以及下一次lab。当处理来处理page fault的时候,…
环境 ubuntu 20.04 64位系统之前有些实验是在xv6的源码上操作的,发现20.04无法运行。后来发现lab还是可以在20.04正常做的,就把环境切换到本机上了。 lab地址:mit 6.828 lab3 废话 这次实验感觉难做了不少,参考了别人不少的代码。毕竟代码是别人写的,要花心思去理解别人的思路。注释里面的提示我也觉得有点模棱两可。…
环境 ubuntu 20.04 64位系统 lab2地址:点击我查看lab2 正文 lab2说实话还是挺难的,这也首先归因我对于页式内存了解有点不到位。在实验中走了一些弯路。不过还是很努力地把lab3的内容都做完了。废话不多说,开始干! 下面这段还是翻译下lab2 part3的一些原文。JOS 将32bit的线性地址空间划分为两个部分。用户使用低地…
环境 Ubuntu20.04 64位系统lab2地址:lab2 正文 本次实验需要我们对paging有一个比较深入的了解,如果只是一知半解可能连代码都不知道什么意思。所以在正式开始代码实验之前,我们先来介绍一下一些预先需要的知识。在part1当中,主要做的就是对物理内存分页,我们使用了PageInfo 和一个page_free_list来管理空闲的…
环境 Ubuntu 20.04 64 位系统Lab的地址:点击这里去Lab2 准备工作 因为在Lab1当中代码我写了很多注释在里面,并且还有修改了一些代码。所以我重新clone一份lab1。然后执行下面的命令就行: git checkout -b lab2 origin/lab2 git merge lab1 这样一来应该就看到lab2新的一些文件…