分类:项目学习

4 篇文章

6.S081 Lab4:trap
经过Lab3的折磨后,很轻松的完成Lab4,Lab4的思路在于实现一个软件中断处理机制,提供一个系统调用接口启动定时中断和相应的处理函数,在中断的时候运行相应的处理函数。 整体思路:原程序发送中断后,进入trap,保存相应的寄存器到trapframe,在内核模式中运行相应动作后恢复现场,返回到trap前的位置。因此可以通过替换sepc原程序的位置为…
6.S081 Lab3:page tables
完成Lab3花费了将近两周的时间,主要的时间都花在了DEBUG第三个问题Simplify copyin/copyinst上,第一个问题Print a page table对后面的DEBUG起到了非常大的帮助。在这个lab3大部分BUG几乎都是内存访问错误,因此很难通过gdb定位,最简单的方法是直接通过vmprint打印出页表检查。 Problem1…
6.S081 Lab2:system calls
Lab2:system calls 编写两个系统调用 Problem 1:System call tracingSystem call tracing需要对系统调用进行跟踪,并且要求能够继承给子进程,因此需要将相关的信息记录到存储进程相关信息的数据结构中。 Problem 2:SysinfoSysinfo涉及到了系统调用的传参和返回值,要点在于意识…
6.S081 Lab1:Xv6 and Unix utilities
Lab1:Xv6 and Unix utilities,主要内容是利用系统调用完成一些小程序。 Problem 1:环境配置第一个难题是boot xv6,配置环境使xv6在qemu上运行。一开始我是在Vmware上的Ubuntu18.04上配置,交叉编译工具需要自己手动安装,但是从github的clone一直失败,最后索性在wsl的Ubuntu20…