JOS实验四:实现调度与exofork解析

5星 · 超过95%的资源 需积分: 10 106 下载量 135 浏览量 更新于2024-07-31 3 收藏 1.31MB DOC 举报
"JOS LAB4实验记录 - 华中科技大学集群网络与服务计算实验室 - 卓达城" 本文档详细记录了MIT JOS (Jail Operating System) 实验室实验四的内容,主要涉及操作系统内核的调度算法实现、系统调用的修改以及`sys_exofork`函数的解析。实验环境为华中科技大学集群网络与服务计算实验室,作者为卓达城。 在实验的第一部分,作者修改了`kern/sched.c`中的`sched_yield`函数,用于实现简单的调度算法。该函数遍历环境队列,寻找可运行的环境,并在找到时切换执行。同时,`syscall.c`中的`syscall`函数也被调整,以适应实验需求。 为了测试调度效果,`init.c`中创建了多个环境。实验过程中需要注意控制Bochs模拟器的输出,避免因调试信息过多导致屏幕刷屏。作者提供了两种解决方式:一是关闭Bochs或删除调试信息,二是激活特定代码行以优化输出。 实验的难点在于`sys_exofork`函数的实现。这个函数用于创建新的环境,是理解和实现JOS的关键。`sys_exofork`涉及到中断和异常处理,这部分内容需要对CPU中断机制有深入理解。作者简要介绍了CPU中断的分类,如fault、trap、interrupt(用户调用)以及不易翻译的`abort`。中断和异常可以跨特权级切换,而call则受限于同特权级或降级切换。 在`sys_exofork`中,需要处理页表的复制和内存分配,包括使用虚拟页目录(VPD)和虚拟页表(VPT)。实验过程中可能需要利用回环搜索来处理pgdir和二级页表,这部分用加粗字体表示,是理解实验过程的重点。 在实现`sys_exofork`时,还要回顾中断和异常处理的基本原理,包括如何进行特权级切换以及如何处理不同类型的中断和异常。这部分内容对于正确理解和实现JOS的进程创建至关重要。 JOS LAB4着重于操作系统的调度和进程创建,通过修改内核源码,学习操作系统核心功能的实现。实验者需要具备一定的汇编语言基础、中断处理知识以及操作系统原理的理解。通过这样的实践,学生能更深入地掌握操作系统的设计和实现。