实验目的 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
//------------------------------------------------------