欢迎来到天天文库
浏览记录
ID:8958307
大小:445.50 KB
页数:6页
时间:2018-04-13
《西电计算机操作系统课程设计pintos-pro3》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、西安电子科技大学操作系统课程设计(2016年度)实验报告实验名称:Priority-Scheduling--Task2班级:姓名:学号:一、实验内容解决优先级反转的问题,在高优先级和低优先级之间竞争锁的问题。二、分析及设计使用多重优先级捐赠,解决优先级反转的问题。1、一个线程获得锁,如果获得这个锁的线程比自己低就提高它的优先级,如果这个锁也是被锁着,那就递归捐赠优先级,在线程释放掉锁之后,恢复未捐赠的优先级。2、在释放掉锁的时候,若优先级改变可以发生抢占。3、将信号量的等待队列实现为优先队列。4、将condition的等待队列实现为优先队列。5、一个线程被多
2、个线程捐赠,保持当前优先级为捐赠优先级中最大值。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_
3、donate_priority()函数的实现6、锁队列排序函数lock_cmp_priority实现7、在lock_release函数加入以下语句8、thread_remove_lock实现9、thread_update_priority函数实现处理当前线程的优先级10、在init_thread中加入初始化11、修改thread_set_priority12、把condition的队列改成优先级队列,修改cond_signal函数13、比较函数的实现14、把信号量的等待队列实现为优先级队列,修改sema_up15、修改sema_down四、实验结果实现结果如
4、图,priority全部完成五、心得体会在设计优先级捐赠这个任务的过程中,查过很多资料,发现虽然实现过程比较复杂,但是如果理解了操作系统的处理调度的解决优先级捐赠的具体方法,那么就是关于代码的实现的问题,所以在修改过程中也碰到很多的问题,很多细节方面的确是感觉考虑的不是很全面,想法还是很简单,所以在查找资料对比后,才完成本次实验。
此文档下载收益归作者所有