"第四次实验记录:添加系统调用并解决读者写者问题"

需积分: 0 0 下载量 79 浏览量 更新于2023-12-21 收藏 4.01MB PDF 举报
本次实验记录涉及了在虚拟机ubuntu18.04上编译链接,然后在硬件级虚拟机bochs上运行“伪操作系统”,也就是包含可执行程序的镜像a.img。实验的选用框架为《orange's》第七章,并且实验思路是首先阅读《orange's》第六章和第七章的部分内容,然后尝试开始完成第一个目标,即添加系统调用让进程休眠,不被分配时间片。此外,还涉及了其他实验目标,如添加系统调用打印char*型参数以及模拟读者写者问题。 实验的关键目标之一是添加系统调用,让进程在定时内不被分配时间片。此外,还需要添加系统调用,用于打印char*型参数,并模拟读者写者问题。这些目标在实验信息中的详细说明下进行了实施。实验平台为主机win10上开发,使用虚拟机ubuntu18.04(x86_64架构)进行编译链接,并将二进制的可执行代码写入镜像文件a.img,并在硬件级虚拟机bochs中运行。 在开始实验的思路方面,首先是阅读《orange's》第六章和第七章的部分内容,然后尝试开始完成第一个目标,添加系统调用让进程休眠,不被分配时间片。接着,按部就班地编写了print,以及对读者写者问题的模拟。对于读者写者问题,明确了整个项目的执行流程,包括时钟中断处理程序clock_handler和调度算法schedule。随后,编写了信号量和PV操作的数据结构,定义了清晰的API,编写了6个进程的雏形,并逐一分析和完成了读者优先算法、写者优先算法以及读写公平算法。在算法完成的过程中,还考虑了定义哪些信号量、如何初始化等等。过程中的一些细节问题也一一解决,确保实验的完整性和准确性。整个过程需要严格遵守实验的规定和目标,确保实验结果的有效性和可行性。 总的来说,这次实验记录涵盖了系统调用的添加,进程休眠和时间片分配的控制,以及读者写者问题的模拟。实验采用了《orange's》第七章的框架,并遵守了实验的指导思路和目标要求。在实验过程中,严格按照要求进行了实验平台的选择和编译链接,并对关键功能进行了精确和有效的实现。最终实验结果将为进一步的操作系统学习和实践提供有力的支持和参考。