Mit6.S081 2022版本
文章平均质量分 88
主要是完成这个版本Lab的笔记吧
晨曦中的暮雨
2 本后端开发,凄凄惨惨戚戚准备秋招...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用MacOS配置MIT6.S081的环境
摘要:在MacOS上运行XV6实验时,2020版本存在较多问题,包括环境配置复杂、路径查找困难以及运行时报错,最终无法进入内核。切换到2022版本后问题有所改善,但仍需修改user/usertests.c中的代码才能成功运行。建议直接使用2022版本进行实验,并注意环境配置和代码调试。原创 2025-11-02 15:27:52 · 279 阅读 · 0 评论 -
MIT6.s081——lab3虚拟内存的结构和pgtl的实现
本文摘要探讨了在xv6操作系统中通过共享只读内存区域来加速getpid()系统调用的方法。关键思路是在用户空间和内核之间映射一个包含进程PID的只读页面USYSCALL,使用户程序可直接读取而无需陷入内核。实现需要修改三个核心函数:allocproc()分配并初始化页面,proc_pagetable()建立页表映射,freeproc()释放页面。该方法不仅提升了getpid()性能,也为其他只读系统调用(如uptime)的优化提供了参考模式。实验通过ugetpid测试验证优化效果,展示了用户态与内核态数据共原创 2026-02-12 13:56:20 · 572 阅读 · 0 评论 -
MIT6.s081——lab1 实现常见的用户程序
本文介绍了在xv6操作系统中实现几个经典UNIX用户程序的方法,包括sleep、pingpong、primes、find和xargs。这些程序分别展示了系统调用的使用、进程间通信、并发编程和文件系统操作等核心概念。sleep程序通过系统调用实现定时休眠;pingpong利用管道实现父子进程间的通信;primes使用管道和fork实现并发质数筛;find程序递归遍历目录树查找文件;xargs则将标准输入转换为命令行参数。实现时需要注意正确处理命令行参数、管理文件描述符、处理进程间同步以及递归逻辑等细节。这些程原创 2026-01-05 23:13:05 · 903 阅读 · 0 评论 -
MIT6.s081——lab4 trap调用实现用户态和内核态的切换
本文摘要: RISC-V函数调用参数传递:a0-a7寄存器用于传递参数,在printf调用中a0传递格式字符串,a1和a2分别传递参数值。 函数调用优化:编译器会内联简单函数(如f和g),直接计算结果而不生成调用指令。 小端存储影响:通过示例分析57616和字符变量i的输出结果,说明小端存储模式下字节顺序对输出的影响。 格式字符串问题:当参数不足时,printf会读取栈上的随机值,导致未定义行为。 回溯功能原理:通过栈帧(包含返回地址和调用者帧指针)实现函数调用链追踪,用于调试目的。原创 2026-02-13 13:37:32 · 672 阅读 · 0 评论 -
MIT6.s081——lab2 系统调用的创建
本文介绍了在xv6操作系统中添加系统调用和进行内核调试的方法。主要内容包括:1) 使用gdb调试xv6内核,包括设置断点、查看堆栈回溯和寄存器状态;2) 通过实验分析系统调用执行流程,包括从用户态到内核态的转换过程;3) 实现一个trace系统调用,用于跟踪指定系统调用的执行情况。文章详细展示了如何利用gdb工具调试内核代码、分析系统调用参数传递机制,以及如何通过修改内核代码来添加新的系统调用功能。原创 2026-02-12 13:51:45 · 658 阅读 · 0 评论
分享