西电计算机操作系统课程设计(共5页).doc
《西电计算机操作系统课程设计(共5页).doc》由会员分享,可在线阅读,更多相关《西电计算机操作系统课程设计(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上西安电子科技大学操作系统课程设计(2016年度)实验报告实验名称: Priority Scheduling 班 级: 姓 名: 学 号: 一、实验内容为Pintos建立优先级调度机制,并确保任何时刻CPU上运行的都是最高优先级线程。二、分析及设计原始Pintos系统中对于线程的调度,没有考虑优先级问题,采用的是最为简单的FCFS策略。而默认的优先级顺序为31,那么就可以在起始时得到一个优先级,并在执行过程中通过thread_set_priority( )函数修改优先级。在新的线程创建后,可以加入一个比较函数,如果新的线程优先级高,则让出CPU,利用插入排序list_i
2、nsert_ordered()函数将当前线程按优先级顺序插入到等待的队列中,如果当前优先级被降低,则让出CPU;如果优先级提高,则继续运行。如果遇到因为信号量进程被阻塞时,则吧最高优先级的线程放入到队列中。如果拥有线程的锁不满足当前的条件,则要释放掉锁,当满足了条件后,优先级最高的线程应该优先获得锁。调用关系:三、详细实现1.在thread_create( )函数中添加比较函数2.修改init_thread()函数,将ready-list采用插入排序的方式处理。3.修改thread_yield ()函数,加入对ready队列的排序功能,实现插入排序。4.修改thread_unblock()函数
3、,如果唤醒的线程优先级顺序高,则当前程序放弃CPU。5.修改thread_set_priority( )函数,如果锁的占用为空闲,或者新的线程的优先级要大于原来的优先级,则新的优先级赋给当前的进程,正在运行的让出CPU。6.如果涉及多个线程等待信号量的问题,则当满足条件时,拥有最高优先级的线程应被优先唤醒进入ready-list。修改sema_down()函数,加入插入排序的功能。7.同6一样修改sema_up()函数,对等待队列进行排序。8.在cond_signal()函数中修改,改为优先级队列9.添加比较函数cond_sema_cmp_priority()四、实验结果通过实验,基本完成实验内容,结果如图:五、心得体会在实验中,能够通过亲自设计修改,让系统对线程进行不同的修改和占用CPU,通过设定优先级,使系统的处理效率更高,对pintos修改实现优先级调度机制,让系统总是让最高优先级的线程进行。专心-专注-专业
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统 课程设计
限制150内