西电计算机操作系统课程设计pintos-pro2.doc_第1页
西电计算机操作系统课程设计pintos-pro2.doc_第2页
西电计算机操作系统课程设计pintos-pro2.doc_第3页
西电计算机操作系统课程设计pintos-pro2.doc_第4页
西电计算机操作系统课程设计pintos-pro2.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论