您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 西电计算机操作系统课程设计pintos-pro2
西安电子科技大学操作系统课程设计(2016年度)实验报告实验名称:PriorityScheduling班级:姓名:学号:西安电子科技大学《操作系统课程设计》实验报告2016年度一、实验内容为Pintos建立优先级调度机制,并确保任何时刻CPU上运行的都是最高优先级线程。二、分析及设计原始Pintos系统中对于线程的调度,没有考虑优先级问题,采用的是最为简单的FCFS策略。而默认的优先级顺序为31,那么就可以在起始时得到一个优先级,并在执行过程中通过thread_set_priority()函数修改优先级。在新的线程创建后,可以加入一个比较函数,如果新的线程优先级高,则让出CPU,利用插入排序list_insert_ordered()函数将当前线程按优先级顺序插入到等待的队列中,如果当前优先级被降低,则让出CPU;如果优先级提高,则继续运行。如果遇到因为信号量进程被阻塞时,则吧最高优先级的线程放入到队列中。如果拥有线程的锁不满足当前的条件,则要释放掉锁,当满足了条件后,优先级最高的线程应该优先获得锁。调用关系:三、详细实现1.在thread_create()函数中添加比较函数西安电子科技大学《操作系统课程设计》实验报告2016年度2.修改init_thread()函数,将ready-list采用插入排序的方式处理。3.修改thread_yield()函数,加入对ready队列的排序功能,实现插入排序。4.修改thread_unblock()函数,如果唤醒的线程优先级顺序高,则当前程序放弃CPU。5.修改thread_set_priority()函数,如果锁的占用为空闲,或者新的线程的优先级要大于原来的优先级,则新的优先级赋给当前的进程,正在运行的让出CPU。6.如果涉及多个线程等待信号量的问题,则当满足条件时,拥有最高优先级的线程应被优先唤醒进入ready-list。修改sema_down()函数,加入插入排序的功能。西安电子科技大学《操作系统课程设计》实验报告2016年度7.同6一样修改sema_up()函数,对等待队列进行排序。8.在cond_signal()函数中修改,改为优先级队列9.添加比较函数cond_sema_cmp_priority()四、实验结果通过实验,基本完成实验内容,结果如图:西安电子科技大学《操作系统课程设计》实验报告2016年度五、心得体会在实验中,能够通过亲自设计修改,让系统对线程进行不同的修改和占用CPU,通过设定优先级,使系统的处理效率更高,对pintos修改实现优先级调度机制,让系统总是让最高优先级的线程进行。
本文标题:西电计算机操作系统课程设计pintos-pro2
链接地址:https://www.777doc.com/doc-7296641 .html