关于操作系统课程设计new

关于操作系统课程设计new

ID:14213206

大小:229.00 KB

页数:42页

时间:2018-07-26

关于操作系统课程设计new_第1页
关于操作系统课程设计new_第2页
关于操作系统课程设计new_第3页
关于操作系统课程设计new_第4页
关于操作系统课程设计new_第5页
资源描述:

《关于操作系统课程设计new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操作系统课程设计报告文件组织:实验1位于nachos-3.4.1项目实验2位于nachos-3.4.2项目实验3位于nachos-3.4.3项目实验4位于nachos-3.4.4项目以上代码位于code文件夹输出位于output文件夹。目录一、内核线程调度策略设计3设计目标:3设计背景:31.1为Nachos添加按动态优先数调度策略3设计算法说明:4设计内容和步骤:4新的设计的实验内容和步骤:7以上设计实验输出结果的分析:8二、Hoare条件变量的设计与实现8设计目标:8设计背景:81.1实现Hoare样式

2、的管程10设计算法说明:10设计内容和步骤:10新的设计的实验内容和步骤:18以上设计实验输出结果的分析:18三、实现系统调用与内存管理18设计目标:18设计背景:181.1实现fork,exec,exit与join系统调用19设计算法说明:19设计内容和步骤:201.2实现内存管理24设计算法说明:24设计内容和步骤:25以上设计实验输出结果的分析:38四、文件系统40设计目标:40设计背景:401.1实现二级索引40设计算法说明:40设计内容和步骤:40新的设计的实验内容和步骤:42以上设计实验输出结果

3、的分析:42本设计的创新点:43本设计存在的问题和没达到的功能:43设计的体会、收获和总结43一、内核线程调度策略设计设计目标:在Nachos系统中实现按优先数调度线程研究各种调度策略算法的实现,分析各种调度算法的性能。设计背景:从Nachos系统的基本内核./threads/scheduler.cc文件中可以看出Nachos系统的基本内核实现了先进先出的调度策略。调度类Scheduler管理着一个就绪队列list。它的成员函数ReadyToRun(currentThread)将当前线程挂入该队列的队尾:S

4、cheduler::ReadyToRun(Thread*thread){DEBUG('t',"Puttingthread%sonreadylist.",thread->getName());thread->setStatus(READY);readyList->Append((void*)thread);}它的另一成员函数FindNextToRun()则从list队首摘出一个就绪线程准备运行:Thread*Scheduler::FindNextToRun(){return(Thread*)readyLi

5、st->Remove();}这从基本内核执行的输出中可以得到验证:***thread0looped0times***thread1looped0times***thread0looped1times***thread1looped1times***thread0looped2times***thread1looped2times***thread0looped3times***thread1looped4times1.1为Nachos添加按动态优先数调度策略设计算法说明:采用静态优先数先给定一个线程的基本优

6、先级,该优先数可以在创建一个线程的时候指定,范围在0到100之间,数值越小优先级越低。动态优先数计算方法为:初始值=静态优先数执行线程每Tick+10就绪线程每Tick-1唤醒线程-5当执行线程动态优先数为0时重新计算就绪队列动态优先数:按降序调整就绪队列优先级,从就绪队列首选择新的执行线程。设计内容和步骤:1、将thread目录下的所有文件拷贝到lab2中,并修改其Makefile.local文件。INCPATH+=-I../lab2-I../machine2、在Thread类中增加一个变量用于记录优先级

7、并增加相应的构造函数与访问函数。voidsetPriority(intp){this->priority=p;}voidincrePriority(intin){if(this->priority+inpriority+in>Min){this->priority+=in;}else{if(in>0){this->priority=Max;}else{this->priority=Min;}}}intgetPriority(){returnpriority;}private:intp

8、riority;Thread::Thread(char*threadName,intp){name=threadName;stackTop=NULL;stack=NULL;status=JUST_CREATED;priority=0;priority=p;#ifdefUSER_PROGRAMspace=NULL;#endif}1、在Scheduler类中增加一个方法用于为整个就绪队列中的所有线程改变优先级void

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。