实验四:Priority Scheduling—Donation for Locks
一、实验目的
解决由lock造成的优先级反转问题。
二、实验方案
使用优先级捐赠(Priority Donation)来解决由lock造成的优先级反转问题。
优先级捐赠是指高优先级的线程将自身优先级捐给与其竞争资源的低优先级线程,以促使其尽快释放资源,进而保证自身能尽快得到运行所需资源的策略。
优先级捐赠主要分以下几种情况:
1.简单捐赠,这是最为平常和简单的一种捐赠情况。lock、优先级流动及线程执行时间顺序如下图所示:

2.递归捐赠,这是一种较为复杂的情况。lock、优先级流动及线程执行时间顺序如下图所示:

3.多重捐赠,这种情况也较为复杂。lock、优先级流动及线程执行时间顺序如下图所示:
三、详细实现
- 修改数据结构
(1) 修改thread结构体,新增三个量,一个base_priority记录线程的初始优先级,一个locks记录线程当前拥有的锁(多个),一个lock_waiting用来记录线程等待被释放的锁。

本文介绍了一种解决由锁导致的优先级反转问题的方法——优先级捐赠,并详细阐述了其实现步骤,包括数据结构的修改、关键函数的定义与调整。

3418

被折叠的 条评论
为什么被折叠?



