电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Nachos实验9设计并实现具有优先级的线程调度策略VIP免费

Nachos实验9设计并实现具有优先级的线程调度策略_第1页
1/9
Nachos实验9设计并实现具有优先级的线程调度策略_第2页
2/9
Nachos实验9设计并实现具有优先级的线程调度策略_第3页
3/9
实验目的 Nachos 系统采用基本的先来先服务的线程调度策略,本次试验的目的: 熟悉Nachos 原有的线程调度策略 设计并实现具有优先级的线程调度策略 实验环境 linux 操作系统,Nachos 操作系统 实验分析 将原有的先来先服务的线程调度策略改为按优先级调度的策略,那么每个线程需添加属性priority,决定当前线程的优先级高低。定义优先级取值范围为1-7,其中 1 为最高,7 为最低。那么在当前线程被阻塞的时候,调度函数通过判断当前就绪队列中的线程中谁的优先级最高,就调度谁,使其运行。 更为优化的办法是,每次将一个线程插入的就绪队列中时,就按照线程的优先级顺序插入,让 List 中的等待时间片的线程依照优先级从高到低排好序,那么每次查询下一要执行的线程的时候,无需再遍历 List,直接从头指针上截取即可,如此插入和移除的平均时间将节省一半。 关键源代码及注释 threadtest.cc 改写原有的测试函数 //---------------------------------------------------------------------- // ThreadTest //@Lizhen 11/16/09 // Set up a few threads with priority keys, by forking a thread // to call original SimpleThread to see the thread choosed by priority. // Priority key must be choosen between 1 and 7. // The lowest is 7 and highest is 1. //---------------------------------------------------------------------- void ThreadTest() { DEBUG('t', "Entering SimpleTest"); 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。 .h public: Thread(char* debugName, int priority=7);//...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Nachos实验9设计并实现具有优先级的线程调度策略

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部