首页 计算机操作系统实验

计算机操作系统实验

举报
开通vip

计算机操作系统实验计算机操作系统实验-线程调度的优化与控制西北工业大学操作系统实验实验报告一、实验目的掌握GeekOS系统的线程调度算法以及线程同步与互斥方法,实现线程调度的优化与控制。二、实验要求按照实验讲义P146页中的设计要求,增加线程调度算法的选择策略,使系统可以在时间片轮转调度和四级反馈队列调度之间切换,并且实现四级反馈队列调度算法,给出关键函数的代码以及实验结果。在GeekOS中实现信号量,使用信号量保证用户程序运行时的线程同步,给出关键函数的代码以及实验结果。三、实验过程及结果答:1、进程间的调度实现:Get_Next...

计算机操作系统实验
计算机操作系统实验-线程调度的优化与控制西北工业大学操作系统实验实验报告一、实验目的掌握GeekOS系统的线程调度算法以及线程同步与互斥方法,实现线程调度的优化与控制。二、实验 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 按照实验讲义P146页中的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 要求,增加线程调度算法的选择策略,使系统可以在时间片轮转调度和四级反馈队列调度之间切换,并且实现四级反馈队列调度算法,给出关键函数的代码以及实验结果。在GeekOS中实现信号量,使用信号量保证用户程序运行时的线程同步,给出关键函数的代码以及实验结果。三、实验过程及结果答:1、进程间的调度实现:Get_Next_Runnable代码如下:structKernel_Thread*Get_Next_Runnable(void){structKernel_Thread*best=0;inti,best_index_queue=-1;if(g_schedulingPolicy==ROUND_ROBIN){structKernel_Thread*best_in_queue=NULL;for(i=0;ipriority>best->priority){best=best_in_queue;best_index_queue=i;}}}}elseif(g_schedulingPolicy==MULTILEVEL_FEEDBACK){if(g_currentThread->priority!=PRIORITY_IDLE){if(g_currentThread->blocked&&g_currentThread->currentReadyQueue>0)g_currentThread->currentReadyQueue--;}for(i=0;icurrentReadyQueuecurrentReadyQueue++;}KASSERT(best!=NULL);Remove_Thread(&s_runQueue[best_index_queue],best);returnbest;}结果如图:Iworkload,mlf100L箱开幵*tit*春开托开幵科LongPingFongLongPongFing『□匚essp□匚essrocesspocessrocessrocessStartLJorkloadGeneratorliasliasliasiscreatedcreatedcreatedIXbeenbeenbeendoneattime:doneattime:donetime:withwithwith1022开幵幵**«■釜开幵IB=Z0IB=Z1IB=ZZestsCompletedat1Zuorkloadmlf1:釜兴兴釜兴兴釜牡兴釜*兴StartUorkloadlGenerator***«*»****■gggggnnnnnoioooLFFLFbeencreated-1Fhashnsbeencreatedhnsbeencreatedisisisdoneattimedoneattimedone&ttimeuithwithwith1011ID=16ID二17ID二18Tewt首Cornuleted.at1Zuork1oadrr10QStartWorkloadhasbeencreatedhasbeencreatedhasbeencreatedisdoneattime:isdoneattime:isdoneattime:GeneratorwithIBwithIBwithID900=12=13=14Comuletedat11;uorkloadrr1StartUo^kloadGenerator***»«**»*'rocess'rocess'rocess'rocess'rocess'rocessLongLongPingPongPongFinghasteencreatedisdoneattime:hasbeencreatedhasbeencreatedisisdoneattime:deneattime:uith9uithwith01ID=aID=9ID=10estsCompletedat122、信号量操作P、V操作代码如下:intP(intsid){if(!validateSID(sid)){returnEINVALID;}boolatomic=Begin_Int_Atomic();if(g_Semaphores[sid].resources==0){Wait(&g_Semaphores[sid].waitingThreads);KASSERT(g_Semaphores[sid].resources==1);}KASSERT(0#includevprocess・h>#include#include#includeintmain(intargc,char**argv){intij;/*loopindex*/intscr_sem;/*idofscreensemaphore*/inttime;/*currentandstarttime*/intping,pong;/*idofsemaphorestosyncprocessesb&c*/time=Get_Time_Of_Day();scr_sem=Create_Semaphore("screen",1);/*registerforscreenuse*/ping=Create_Semaphore("ping",1);pong=Create_Semaphore("pong",0);for(i=0;i<5;i++){P(pong);for(j=0;j<35;j++);time=Get_Time_Of_Day()-time;P(src_sem);Print("ProcessPingisdoneattime:%d\n",time);V(src_sem);V(ping);}time=Get_Time_Of_Day()-time;P(scr_sem);Print("ProcessPingisdoneattime:%d\n",time);V(scr_sem);Destroy_Semaphore(pong);Destroy_Semaphore(ping);Destroy_Semaphore(scr_sem);return(0);}修改后的Pong・c代码如下:#include#includevprocess・h>#includevsched・h>#includevsema・h>#includevstring.h>intmain(intargc,char**argv){intij;/*loopindex*/intscr_sem;/*idofscreensemaphore*/inttime;/*currentandstarttime*/intping,pong;/*idofsemaphorestosyncprocessesb&c*/time=Get_Time_Of_Day();scr_sem=Create_Semaphore("screen",1);/*registerforscreenuse*/ping=Create_Semaphore("ping",1);pong=Create_Semaphore("pong",0);for(i=0;i<5;i++){P(ping);for(j=0;j<35;j++);attime=Get_Time_Of_Day()-time;P(src_sem);Print("ProcessPongisdonetime:%d\n",time);V(src_sem);V(pong);}time=Get_Time_Of_Day()-time;P(scr_sem);Print("ProcessPongisdoneattime:%d\ntime);V(scr_sem);return(0);}结果如图:rocessrocessrocessrocessrocessrocessrocessrocessrocessrocessrocessrocessrocessrocessroccs吞rocessrucessTO匚essrocessrocessrocessrocess4444445454548888888_u0U8H-K-5533553355345534553455四、实验 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 调度:MLF调度算法的主要思想是系统有多个就绪队列,每个队列对应相应优先级,第一队列的优先级最高,然后优先级逐渐降低。同时给高优先级的任务分配较短的时间片,给低优先级的任务分配较长的时间片。对于同一优先级的任务,采用FCFS调度算法。如果把优先级队列数量降低到一,则MLF算法退化为RoundRobin调度算法。MLF调度算法最大的问题是会导致饥饿问题,因为低优先级的任务有可能会长时间得不到执行,所以在实际的操作系统中,调度器会给长时间未执行的任务动态的提高优先级,避免饥饿现象。由实验分析可知,在短作业情况下,mlf调度相较于rr缩短了三分之一的执行时间,优越性明显。信号量信号量的目的是保障进程的同步或互斥,若信号量为1,则确保互斥。因为当争抢一个临界资源时,首先获取到信号量的进程会把信号量减少为0,其余进程请求该资源时候必须要等待该进程释放才能获取。如果信号量为0时,则是保障进程的同步。因为当某一个信号量执行到某一步时,该信号量为0,进程阻塞掉,必须要等待其他的进程增加该信号量才能继续执行,从而实现了进程间的同步。五、所遇问题及解决方法经过这次试验,我对操作系统中进程的调度算法和调度过程、尤其是对基于时间片轮转的进程多级反馈算法有了更深的理解,对使用P、V操作来进行进程间的同步与互斥过程也有了更深的体会。实验中,首先就是要求我们实现调度算法的选择策略,使系统可以在时间片轮转调度和四级反馈队列调度之间切换。由于大部分代码老师都已经给出,所以只需实现一个取得下一个运行线程的函数,实现高优先队列为空时继续在低优先级中查找就可以了。代码编写不是很难,只要能基本了解了思想和结构就可以编写。对于实现进程间的同步和互斥,只需要利用P、V操作实现对临界资源的保护即可。虽然在过程中遇到很多困难,但所幸在老师同学们的帮助下,以及自己查资料,还是完成了实验项目。其次,也是同过这几次操作系统实验让我对计算机操作系统学习有了一个新的认识,通过这次实验又一次让理论运用于实践,而实践是需要系统的知识,去分析设计一个完整的东西,因此不仅是某个具体的细节自己要知道,还要了解好全局,一个小问题都有可能使得实验失败。总之,这次实验让我学习了很多,通过这次实验设计,让我对整个系统有了更深的了解,虽然还有很多地方还没有完全明白,比如说,如何进行进程调度,如何处理中断,如何管理内存,因为后面几个Project都没有完全做出来,是个遗憾。但也是通过这次实验让我认识到自己还有很多不足的地方,在以后的学习中得以加强。对这次验的启示自己 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 以下觉得首先是做一件事情要百分百的投入,然后是做事要细心不要总是急噪,最后是要多与同学交流,一个问题自己想半天可能还是不能解决,这个时候同学可能已经知道了很快就能帮你解决,这会给你节省很多时间思考其他的问题。这里要感谢老师的指导,也感谢同学在我不知道怎么往下做的时候给我的鼓励与帮助。感谢学校老师提供这么一次软件课程设计,让我受益匪浅。
本文档为【计算机操作系统实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
zhaofengchun
暂无简介~
格式:doc
大小:66KB
软件:Word
页数:13
分类:建筑/施工
上传时间:2022-07-05
浏览量:1