MIT6.S081
文章平均质量分 74
//夜游神
这个作者很懒,什么都没留下…
展开
-
2021 MIT6.S081 LAB9 file system Large files Symbolic links
实验九原网址 Lab: file systemLarge files这个实验的目标是增加一个文件的最大容量,原来的字节数是(256+12)* 1024,有12个直接引用块1个1级间接引用块,这一个间接引用块有256个直接引用块。将12个直接引用腾出一个位置,作为一个2级间接引用,所以,腾出来后,有(256*256 + 256 + 11)个块。修改宏定义NDIRECT、最大文件MAXFIEL以及相关结构体,增加新宏定义DOUBLE_INDIRECT。修改NDIRECT为11后,结构体din原创 2021-12-26 09:47:06 · 535 阅读 · 1 评论 -
2021 MIT6.S081 LAB6 Multithreading
实验六原网址 Lab: MultithreadingUthread: switching between threads实现线程切换时,寄存器的保存与恢复。保存切出去的线程的寄存器,恢复切进来的线程的寄存器uthread_switch.S中的汇编代码实现寄存器的保存与恢复,与内核中swtch.S类似,但是要保存的寄存器没内核的那么多,起初我用内核的struct context保存寄存器是可以的,后来发现uthread.asm中的汇编代码用到的寄存器有s0-s4,改了之后发现也行。thre原创 2021-12-13 11:21:45 · 642 阅读 · 0 评论 -
2021 MIT6.S081 LAB5 copy-on write COW
fork()函数写时复制的简单实现原创 2021-12-09 10:47:57 · 667 阅读 · 0 评论 -
2021 MIT6.S081 LAB4 backtrace alarm
实验四原网址 Lab: trapsRISCV-V assemblyWhich registers contain arguments to functions? For example, which register holds 13 in main's call to printf?call.asm中地址0x24的指令将13放在了a2Where is the call to function f in the assembly code for main? Where is t原创 2021-12-04 14:22:12 · 469 阅读 · 0 评论 -
2021 MIT6.S081 LAB3
实验三原实验网址:Lab: page tablesSpeed up system calls操作系统通过在用户空间和内核之间的共享只读区中的数据来加速某些系统调用。这种做法可以消除用户态到内核态之间切换的消耗。这次实验就使让我们学会将映射插入页表中,我们的第一个任务就是实现对系统调用getpid()的优化。当一个进程被创建的时候,映射一个只读页到虚拟地址USYSCALL(定义在memlayout.h中)。在该页的开始存放一个结构体,初始化这个结构体,结构体的只有一个成员,初始化为当前进程的pi原创 2021-11-30 09:33:14 · 2492 阅读 · 0 评论 -
2021 MIT6.S081 LAB2
实验二原实验网址 Lab: system callstracetrace命令可以用来查询一个程序是否使用了某些系统调用,这些系统调用通过参数mask来设置。例如,read的系统调用号是5,通过使用命令 trace 32 grep hello README,来查看grep命令是否使用系统调用read,32 = 1 << 5。这个mask掩码可以是系统调用号的集合,在某一位上为1,就说明需要判断有没有这个系统调用,例如上面的read,mask二进制位上从右往左第五位应该置为1;同时,原创 2021-11-25 19:12:38 · 883 阅读 · 3 评论 -
2021 MIT6.S081 LAB1
实验一原实验网址:Lab:Xv6 and Unix utilitiessleep(easy)为xv6实现UNIX下的sleep指令,你的sleep指令应该暂停一定的tick数,该数由用户指定。tick是由xv6定义的时间概念,即定时器芯片两个中断间的经过的时间。你的代码应该放在user/sleep.c文件下提示写代码前,阅读vx6 book书中第一章代码看看其他程序(user/echo.c user/grep.c user/rm.c)是怎样获取命令行参数的如果用户使用sleep原创 2021-11-22 14:25:46 · 1322 阅读 · 0 评论