- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word格式精心整理版
范文范例 学习指导
实验目的Nachos系统采用基本的先来先服务的线程调度策略,本次试验的目的:熟悉Nachos原有的线程调度策略设计并实现具有优先级的线程调度策略
实验环境linux操作系统,Nachos操作系统
实验分析将原有的先来先服务的线程调度策略改为按优先级调度的策略,那么每个线程需添加属性priority,决定当前线程的优先级高低。定义优先级取值范围为1-7,其中1为最高,7为最低。那么在当前线程被阻塞的时候,调度函数通过判断当前就绪队列中的线程中谁的优先级最高,就调度谁,使其运行。更为优化的办法是,每次将一个线程插入的就绪队列中时,就按照线程的优先级顺序插入,让List中的等待时间片的线程依照优先级从高到低排好序,那么每次查询下一要执行的线程的时候,无需再遍历List,直接从头指针上截取即可,如此插入和移除的平均时间将节省一半。
关键源代码及注释threadtest.cc改写原有的测试函数//----------------------------------------------------------------------// ThreadTest//@Lizhen 11/16/09
??? Thread *t = new Thread(1,5);//线程1,优先级为5*Thread *t2 = new Thread(2,1);Thread *t3 = new Thread(3,3);??? t-Fork(SimpleThread, 1);t2-Fork(SimpleThread, 2);t3-Fork(SimpleThread, 3);}*优先级取值范围:1-7,1为最高,7为最低。
thread.h和thread.cc为了实现根据线程thread按照优先级进行调度,在Thread类中增加参数priority,优先级取值范围为1至7,1为最高,7为最低。因为整个系统中必然会有许多地方都使用了Thread,要将这所有的地方找出来并增加线程优先级似乎是不现实的,更改后系统的正确性和稳定性也是受质疑的,为了尽最大限度地不改动源代码,不删除原有的构造函数,改写为不给优先级赋值时默认优先级为7。.hpublic:??? Thread(char* debugName, int priority=7);// initialize a Thread??????//@LiZhen 11/11/09 ?????? //If do not initialize the priority,?????? //give the lowest priority to it. ?????? //Priority rage from 1 to 7.??? void Yield(); ??? // Relinquish the CPU if any ?????? // other thread is runnable??????//@LiZhen 11/11/09.c//----------------------------------------------------------------------// Thread::Thread// Initialize a thread control block, so that we can then call// Thread::Fork.//// threadName is an arbitrary string, useful for debugging.//// @LiZhen 11/11/09// modified by LiZhen at Nov 11, 2009//----------------------------------------------------------------------
Thread::Thread(char* threadName, int p){if(p1) priority = 1;else if(p7) priority = 7;else priority = p;??? name = threadName;??? stackTop = NULL;??? stack = NULL;??? status = JUST_CREATED;#ifdef USER_PROGRAM??? space = NULL;#endif}
//-----------------------------------------------------------------
您可能关注的文档
- 2016届河南省南阳市第一中学高三第三次模拟考试文综试题(word版).doc
- 2016届江苏省镇江市高三年级第一次模拟考试数学(解析版).doc
- 2016年广东省企业法律顾问考试-绩效考核管理考试题.doc
- 2016年贵州城市规划师考试规划原理-公共建筑空间考试题.doc
- 2016年上半年天津注册城市规划师-乡、村庄规划方案的评析考试试卷.doc
- 2016年上半年云南省城市规划师规划原理-历史环境的调查试题.doc
- 2016年试验员考试试题及其答案.doc
- 2016年司法考试刑法试题详细讲解含答案与详细解析.doc
- 2017超星尔雅《传统文化和现代经营管理》期末考试(20).doc
- 2017超星尔雅《计算机网络技术》期末考试.doc
最近下载
- 中级化学检验员技能鉴定考试题附答案.doc VIP
- SY∕T 6671-2017 石油设施电气设备场所ⅰ级0区、1区和2区的分类(2-2).pdf
- 2019年澳门四校联考试题及参考答案.pdf
- 五年级下册数学因数与倍数的知识点.docx VIP
- 会展管理综合技能考核(二)实践性考核工作报告.doc VIP
- 2025高二政治开学第一课《政好有你 再创佳绩》.pptx
- 2024年高考历史真题及答案解析(全国新课标卷).pdf VIP
- 创伤急救(151页)医学课件.ppt
- 公司(第一级)安全教育记录GDAQ20503.xls VIP
- 苏教版三年级上册寒假数学计算题每日一练及答案(共20天).pdf VIP
文档评论(0)