西安电科大张帅豪:优化OS31:优先级调度与捐赠机制研究

需积分: 0 0 下载量 137 浏览量 更新于2024-08-04 收藏 1.12MB DOCX 举报
本次报告是西安电子科技大学操作系统课程设计的一部分,由学生张帅豪(学号18030100101)在2020年度完成。实验主题为"Priority-schedulingTask2",主要目标是解决由锁(lock)引起的优先级反转问题,并在此基础上引入优先级捐赠机制来预防这一问题。 实验的核心内容包括以下几个部分: 1. 优先级结构设计:设计了一个包含原优先级和被捐赠所需的锁信息的结构体pri_stack,采用栈结构来处理可能的多重捐赠。这涉及到thread结构体的扩展,新增了block_sema(用于记录被信号量阻塞)和block_lock(用于记录等待的锁)两个成员。 2. 初始化和优先级管理:在init_thread()函数中,除了常规初始化外,还需要初始化新添加的优先级结构。在thread_set_priority()函数中,增加了对线程是否被捐赠的判断,确保捐赠后的优先级更新正确。 3. PV操作与锁操作:在P操作中,若信号量为0,线程会被阻塞并记录阻塞信号量;V操作时,解锁后清空阻塞信息。在acquire锁操作中,检查信号量状态并执行优先级捐赠,而在release锁时根据捐赠状态进行不同处理,如优先级还原、移除记录等。 4. 优先级捐赠函数实现:这个函数涉及复杂逻辑,首先检查被捐赠者是否在ready_list或block_list中。如果是ready_list中的线程,需要调整其位置。如果被捐赠者还在信号量等待队列中且被锁阻塞,需要相应地调整其位置并触发递归捐赠过程。 通过这个实验,学生不仅熟悉了优先级捐赠算法,还锻炼了修改内核代码的能力,深入理解了操作系统中线程调度和资源管理的关键环节。在解决优先级反转问题的同时,也展示了对操作系统内核设计和并发控制原理的深刻理解和实践应用。