1. 在syscall.h中定义系统调用编号SYS_uptime 2. 在syscall.c中引入sys_uptime,并将系统调用编号与具体函数调用相关联 3. 在sysproc.c中提供sys_uptime的定义 试验部分 此处仅提供大体思路,具体代码可参考【MIT 6.S081-2020Fall】Lab: System call - 知乎 (zhihu.com) trace 在proc结构体中添加int类型的trace...
2 A kernel page table per process (hard) 最难且重量级的一项放在lab3,后面的实验就都是水怪实验。创建一个内核页表,我们为proc额外初始化一个k_pagetable与kstack_pa: proc.h: struct proc { struct spinlock lock; // p->lock must be held when using these: enum procstate state; // Process stat...
pingpong #include"kernel/types.h"#include"kernel/stat.h"#include"user/user.h"intmain(intargc,char*argv[]){intpipefd[2],pid;if(pipe(pipefd)==-1){fprintf(2,"pipe error");exit(1);}pid=fork();if(pid==0){read(pipefd[0],&pid,sizeofpid);fprintf(1,"%d: received ping\n",getpid...
MIT xv6 2020系列实验:Lab5 lazy 这个和cow实验联系很紧密,并且cow比这个实验恶心一些的样子。 任务一:sbrk假分配 在sbrk中取消随栈指针变化对内存的分配/回收,只变化相应的栈指针。 这个比较简单,进入sbrk调用的growproc中去掉uvmalloc与uvmdealloc的部分即可。 任务二:Lazy allocation 提示: 13为读缺页,15为写...
xv6-riscv-lab MIT 6.S081 / 2020年秋季实验室 进度 Lab1 Lab2 Lab3 Lab4陷阱 Lab5延迟分配 Lab6写时复制 Lab7多线程 Lab8锁 Lab9文件系统 Lab10 mmap Lab11网络驱动程序 文件 Lab1 Lab2 Lab3点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 ...
conf COW lab Oct 1, 2020 kernel implemented cow~ May 14, 2022 mkfs separate source into kernel/ user/ mkfs/ Jun 11, 2019 user Merge branch 'riscv' into cow Oct 2, 2020 .dir-locals.el Setting indent-tabs-mode nil everywhere is dangerous Sep 6, 2011 ...
OSLab1.1-Bootxv6(easy) 1.1 - Boot xv6 (easy) Lab 1 Xv6 and Unix utilities 实验要求: /6.828/2020/labs/util.html 1 实验目的 切换到 xv6-labs-2020 代码的 util 分支,并利用 QEMU 模拟器启动 xv6 系统。 2 实验步骤 使用下面的命令克隆 xv6-labs-2020 代码到本地。 • git clone git://g.cs...
Lab 1 Xv6 and Unix utilities 1.1 - Boot xv6 (easy) Lab 1 Xv6 and Unix utilities实验要求: https://pdos.csail./6.828/2020/labs/util.html 1 实验目的 切换到 xv6-labs-2020 代码的 util 分支,并利用 QEMU 模拟器启动 xv6 系统。 2
MIT xv6 2020系列实验:Lab10 mmap 实现两个功能:分别是mmap与munmap,将文件映射到内存当中,并为一个线程记录他管理的文件所在的页表目录。 函数原型如下: char* mmap( char* addr, int len, int prot, int flags,int fd, int off); int munmap( char* addr , int len ); 其中mmap参数含义分别是映射...
MIT xv6 2020 系列实验:Lab4 traps 主要是一个内核调度alarm,定时中断并输出alarm。 任务一:backtrace 首先取出内核栈栈顶指针fp,对应到xv6的寄存器名是s0。 static inline uint64 r_fp() { uint64 x; asm volatile("mv %0, s0" : "=r" (x) ); return x; } backtrace:内核栈大小一页也就是4KB,...