当前位置:   article > 正文

西电Pintos操作系统课程设计 实验四_西电操作系统课程设计

西电操作系统课程设计

实验四:Priority Scheduling—Donation for Locks

一、实验目的
解决由lock造成的优先级反转问题。

二、实验方案
使用优先级捐赠(Priority Donation)来解决由lock造成的优先级反转问题。
优先级捐赠是指高优先级的线程将自身优先级捐给与其竞争资源的低优先级线程,以促使其尽快释放资源,进而保证自身能尽快得到运行所需资源的策略。
优先级捐赠主要分以下几种情况:
1.简单捐赠,这是最为平常和简单的一种捐赠情况。lock、优先级流动及线程执行时间顺序如下图所示:
在这里插入图片描述
2.递归捐赠,这是一种较为复杂的情况。lock、优先级流动及线程执行时间顺序如下图所示:
在这里插入图片描述
3.多重捐赠,这种情况也较为复杂。lock、优先级流动及线程执行时间顺序如下图所示:在这里插入图片描述
三、详细实现

  1. 修改数据结构
    (1) 修改thread结构体,新增三个量,一个base_priority记录线程的初始优先级,一个locks记录线程当前拥有的锁(多个),一个lock_waiting用来记录线程等待被释放的锁。在这里插入图片描述
    (2) 修改lock结构体,新增两个量,一个elem记录优先级捐赠的列表元素,一个max_priority记录请求锁的所有线程的最大优先级。在这里插入图片描述
  2. 修改函数
    (1) 修改init_thread()函数,实现对thread结构体中新增变量base_priority和lock_waiting的初始化。在这里插入图片描述
    (2) 修改lock_acquire()函数,在获取锁之前循环更新所有参与嵌套的线程的优先级,即在P操作之前解决递归捐赠的情况。然后在线程被唤醒之后让该线程持有该锁。在这里插入图片描述
    (3) 定义函数thread_hold_the_lock实现将一个锁资源赋给线程。在这里插入图片描述
    (4) 定义函数thread_donate_priority实现较高优先级线程将优先级捐赠给某一持有锁的较低优先级的线程。这里的优先级捐赠是通过修改锁的最高优先级, 然后调用thread_update_priority ()更新被捐赠线程的当前优先级实现的。在这里插入图片描述
    (5) 定义函数thread_update_priority ()实现线程优先级的更新。该函数一方面被thread_donate_priority()函数调用以实现优先级捐赠操作,另一方面考虑到当某线程释放锁之后,该线程的优先级可能发生变化,可用thread_update_priority()函数来处理这个逻辑。在这里插入图片描述
    (6) 定义函数lock_cmp_priority()实现锁队列的排序。在这里插入图片描述
    (7) 定义函数thread_remove_lock()实现线程释放锁时进行的操作,该函数将被synch.c中的lock_release()函数调用。在这里插入图片描述
    (8) 在lock_release()函数中添加相应的语句调用(6)中的thread_remove_lock()函数。在这里插入图片描述
    (9) 在lock_release()函数中添加相应的语句调用(6)中的thread_remove_lock()函数。在这里插入图片描述
    (10) 修改thread_set_priority()函数。如果没有锁,那么优先级捐赠的情况不用考虑,直接更新;如果更新的优先级大于当前线程的优先级,则更新当前线程优先级。总之,base_priority一定要在该函数中得到更新。在这里插入图片描述
    (11) 修改sema_up()和seme_down()函数,将信号量的wait_list实现为优先级队列,即将wait_list中的线程按优先级降序排列,该过程在实验三中已经完成过一遍。在这里插入图片描述
    (12) 定义cond_sema_cmp_priority()函数实现条件变量wait_list中线程的优先级比较,便于(12)中使用该函数作为list_sort()排序函数的参数。在这里插入图片描述
    (13) 修改 cond_signal()函数,将条件变量的wait_list也改成优先级队列,其中list_sort()排序函数使用(11)中的定义的比较函数作为参数。在这里插入图片描述
    四、实验结果
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/687631
推荐阅读
相关标签
  

闽ICP备14008679号