随笔分类 - MIT 6.828
MIT 6.828相关实验
摘要:任务概述 在这个作业中,需要增加 xv6 系统允许的文件大小。当前的 xv6 文件大小被限制为 140 扇区 (sectors),因为 xv6 的索引节点 (innode) 包含了 12 个 “直接的” 块 (block) 的序号和一个 “单独间接 (singly-indirect)” 块序号,这个
阅读全文
摘要:Part One: Eliminate allocation from sbrk() 任务 将 sbrk(n) 系统调用实现中的分配 page 部分删除,在 sysproc.c 中的 sys_sbrk() 中。在删除之后,新的 sbrk(n) 应该仅仅将进程的内存大小的指示符 (myproc()->
阅读全文
摘要:任务:修改代码以实现对于每一个循环,让每一个线程都暂时阻塞直到所有线程都调用了barier函数 实际上就是实现一个屏障,当线程运行到屏障之前,会被暂时挂起,直到所有线程都到达屏障之后才会继续运行 而在原始的代码中,由于 barriers 函数中没有进行处理,sleep 较短时间的线程必定会比另一线程
阅读全文
摘要:实验提供了一个shell的简化版本,主要功能是解析shell命令并且执行 在提供的shell代码中已经编写好了对命令进行解析的部分,我们需要的是利用Unix系统调用对命令进行执行 Executing simple commands 任务: 执行简单的命令,如: $ ls 要完成简单命令的执行,应该补
阅读全文
摘要:Part One: System call tracing 任务:修改Xv6内核的代码来打印出每个系统调用以及返回值 根据提示,应该在syscall.c中修改syscall()。 首先在syscall.c中增加对应系统调用名称的数组: static char *syscalls_name[] = {
阅读全文