经过多次改进,终于可以做到最大化发挥xv6的性能,将xv6操作系统的64个线程全部跑满,经测试可以筛选出270以内的所有素数。 踩过的坑: 1. 整个结构的设计,每个进程都循环的从前一个管道fd读取数据,经判断后发送给下一个管道p_next,一个数一个数的读取,整体来看,每个线程都同时在不停的读取输出。因此要先fork了再...
xv6 kernel is booting hart 2 starting hart 1 starting init: starting sh $ 到这里就表示实验环境已经搭建完成了。此时我们已经进入了xv6系统中。 可以尝试输入命令来测试以下这个系统,如ls,这将列入当前xv6系统目录下的文件列表,或者echo 你好,这将在终端打印“你好”。 同时按下ctrl和a,松手,然后按下x...
Cancel Create saved search Sign in Sign up Reseting focus {{ message }} Iuriak / OS-Xv6-Lab-2023 Public Notifications You must be signed in to change notification settings Fork 1 Star 20 同济大学操作系统课程实验 2023小学期项目 OS-XV6 20 stars 1 fork Branches ...
用gdb跟踪xv6的trap代码(下) 5856 27 44:27 App MIT6.S081操作系统实验 - Lab6. Cow - 写时拷贝优化 3356 8 23:56 App MIT6.S081操作系统实验-Lab4. Traps - RISC-V汇编热身(easy) 2773 0 08:04 App MIT6.S081操作系统实验 - 关于lab3 & 聊聊天 6113 13 28:00 App MIT6.S081操作系统...
相对xv6,在 JOS 中我们中了一个关键的简化:在内核态时禁用外部设备中断。外部中断使用%eflag寄存器的FL_IF位控制。当该位置 1 时,开启中断。由于我们的简化,我们只在进入以及离开内核时需要修改这个位。 我们需要确保在用户态时FL_IF置 1,使得当有中断发生时,可以被处理。我们在 bootloader 的第一条指令cli就关...
sys_trace(void){int mask;if(argint(0, &mask) < 0)return -1;myproc()->mask = mask;return 0; } 1.2 系统调用流程 根据Lab的介绍,系统调用的流程如下: 系统调用函数需要被用户程序所感知,因此在/user/user.h中添加系统调用的方法int trace(int);,以供给用户调用 ...
lab1-find. 参考ls命令实现find 6024 13 28:00 App MIT6.S081操作系统实验 - Lab7. 进程上下文切换 1820 62 14:02 App MIT6.S081操作系统实验 - Lab4. 用gdb跟踪xv6的trap代码(下) 1805 6 15:55 App MIT6.S081操作系统实验-Lab4.2-backtrace (下) 5751 27 44:27 App MIT6.S081操作系统...
经过多次改进,终于可以做到最大化发挥xv6的性能,将xv6操作系统的64个线程全部跑满,经测试可以筛选出270以内的所有素数。 踩过的坑: 1. 整个结构的设计,每个进程都循环的从前一个管道fd读取数据,经判断后发送给下一个管道p_next,一个数一个数的读取,整体来看,每个线程都同时在不停的读取输出。因此要先fork了再...