- 60
- 0
- 约1.06千字
- 约 6页
- 2017-02-05 发布于北京
- 举报
西电计算机操作系统课程设计pintospro
西安电子科技大学
实
验
报
告
:Priority-Scheduling--Task 2
班级:姓名:学号:
一、实验内容
解决优先级反转的问题,在高优先级和低优先级之间竞争锁的问题。
二、分析及设计
使用多重优先级捐赠,解决优先级反转的问题。
1、一个线程获得锁,如果获得这个锁的线程比自己低就提高它的优先级,如果这个锁也是被锁着,那就递归捐赠优先级,在线程释放掉锁之后,恢复未捐赠的优先级。
2、在释放掉锁的时候,若优先级改变可以发生抢占。
3、将信号量的等待队列实现为优先队列。
4、将condition的等待队列实现为优先队列。
5、一个线程被多个线程捐赠,保持当前优先级为捐赠优先级中最大值。
6、在对一个线程设置优先级时,如果处于被捐赠状态,对original_priority进行设置,如果设置的优先级大于当前的优先级,改变当前的优先级,否则在捐赠完成时恢复original_priority。
7、在释放锁对一个锁优先级有改变的时候应考虑其余被捐赠优先级和当前优先级。
三、详细实现
1、修改thread数据结构(thread.h)
2、在lock结构体中添加成员(synch.h)
3、修改lock_acquire函数(synch.c)
4、thread_hold_the_lock()函数的实现
5、thread_donate_priorit
原创力文档

文档评论(0)