Pintos操作系统性能优化:测试与修复策略

需积分: 21 127 下载量 186 浏览量 更新于2024-08-10 收藏 585KB PDF 举报
"奇门白皮书2019最新版测试过程详解,涵盖忙等待超时处理、内存资源释放及系统平均负载能力测试" 本文档详细介绍了在Pintos操作系统实验二中的测试过程,主要涉及三个方面:忙等待造成的超时处理、内存资源释放操作以及系统平均负载能力的测试。 首先,针对忙等待造成测试超时的问题,原始的`process_wait`函数使用了一个无限循环来检查子线程的状态。当递归层数增加,进程创建速度减缓,可能导致测试无法在限定时间内完成。经过调试发现,线程创建的每个步骤耗时呈线性增长,表明存在忙等待现象。为解决此问题,引入了信号量机制。在`process_wait`中,父线程通过`sema_down`进入等待状态,子线程在运行完毕后通过`sema_up`唤醒父线程。这种方式确保在递归调用时,只有一个线程处于就绪状态,提高了递归速度,有效避免了超时。 其次,内存资源释放操作是系统性能优化的关键。在多内存占用(multi-oom)运行时,进程可能持续打开文件但未及时关闭,导致文件描述符(fd)泄露,影响系统效率。为此,修改了`struct thread`结构,添加`fd_list`来存储进程打开的文件描述符。在进程退出时,通过`process_exit`函数遍历`fd_list`,调用`file_close`关闭所有文件,并使用`free`释放文件描述符的内存,从而防止内存泄漏,保持Pintos操作系统的性能。 最后,系统平均负载能力测试旨在评估Pintos操作系统的并发能力。通过递归调用的层数模拟并发线程,层数越多,系统压力越大。测试目的是找出操作系统的并发能力上限,以便设定合理的线程创建限制,保证系统的稳定运行。 此外,文档还涵盖了小组成员分工、额外参考资料、用户程序运行、进程退出信息、参数传递、系统调用(syscall)的设计与实现、错误处理和性能压力测试等多个方面的内容,为理解和优化Pintos操作系统提供了全面的指导。