操作系统使用简单轮转法实现操作系统进程调度_第1页
操作系统使用简单轮转法实现操作系统进程调度_第2页
操作系统使用简单轮转法实现操作系统进程调度_第3页
操作系统使用简单轮转法实现操作系统进程调度_第4页
操作系统使用简单轮转法实现操作系统进程调度_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《操作系统原理》课程设计报告课题名称:使用简单轮转法实现操作系统进程调度姓名:班级:学号:指导老师:二〇一三年十二月二十日

目录第1章课题介绍 第1章课题介绍1.1课程设计的目的进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本次课程设计是要求学生独立地用高级语言编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先权调度算法和时间片轮转调度算法的具体实施办法。调度算法可任意选择或自行设计。任务一是采用简单轮转法。本课题可以加深对进程调度和各种调度算法的理解,并通过课程设计,让我们更好的掌握操作系统的原理以及实现方法,加深对操作系统基础理论和重要算法的理解,加强我们自身的动手能力。1.2课程设计的要求1)设计一个有n个进程并发的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块一般应该包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。2)调度程序应包含1~2种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。3)算法应能显示或打印各个进程的PID、状态(运行状态R、等待状态W等)和参数(已运行时间等)的变化情况,便于观察诸进程的调度过程

第2章总体设计2.1程序流程图轮转法进程调用先输入进程的格式及信息,然后对进程进行轮转法调度,按队列中进程的顺序依次运行程序,每运行完一次对其时间片相减,直到时间片用完,程序结束。轮转法进程调用程序流程图如图2-1所示:图2-1总程序流程图建立进程控制块函数input()的程序流程图如图2-2所示:图2-2input()函数的程序流程图2.2软件模块图要实现轮转法的进程调度,将其功能设计为四个界面模块,进程控制块模块、进程显示模块、进程查看模块、进程就绪模块。轮转法进程调度功能模块图如图2-3所示:图2-3轮转法进程调度功能模块图2.3设计原理系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几MS到几百MS。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后再把处理机分配给就绪队列中的新的队首进程,同时也让他执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。即,系统能在给定时间内相应所有用户的请求。2.4设计内容本实验主要是对时间片轮转法调度的模拟。由用户自己输入进程数和时间片,将所输入的进程按顺序排成循环队列,处理器按顺序选择进程来执行。每个进程都是处于运行R(run)、就绪W(wait)两种状态之一,并假设起始状态都是就绪状态W。正在运行的进程则是R状态,若某个进程没有结束则优先级设最低,放到队尾,下次循环再执行;若进程结束则退出队列,并显示此进程已完成。

下面介绍简单轮转法进程调度算法:

简单轮转法。进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。进程控制块结构如下:PCB进程ID进程状态轮转时间片数进程所需时间片数链指针进程控制块链结构如下:TAILTAILRUNR…HEADW…W…W…2.5主要功能本程序选用简单轮转法对n个进程进行调度。每个进程处于运行R(run)、就绪W(wait)两种状态之一,并假设起始状态都是就绪状态W,当进程结束则踢出队列。为了便于处理,程序进程的运行时间以时间片为单位计算。2.6实现环境本次课程设计结合算法的特点,采用Windows操作系统平台。开发工具为MicrosoftVisualC++6.0。第3章详细设计及思考题3.1详细设计3.1.1数据结构structpcb{/*定义进程控制块PCB*/charname[10];/*进程的名字*/charstate;/*进程的状态*/intntime;/*进程需要的运行时间*/intrtime;/*已执行的时间*/intltime;/*剩余需执行的时间*/structpcb*link;}/*下一个进程控制块的地址*/3.1.2函数声明main()主函数input()进程控制块函数insert()插入要构造的进程函数disp()显示当前进程函数 check()进程查看函数destroy()进程撤销函数running()进程就绪函数3.1.3函数input()input()/*建立进程控制块函数*/{inti,num;printf("\n请输入进程个数:");scanf("%d",&num);for(i=1;i<=num;i++){p=getpch(PCB);printf("\n输入第%d个进程名:",i);scanf("%s",p->name);printf("\n输入第%d个进程运行时间:",i);scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='w';p->link=NULL;insert();/*调用insert函数把输入的进程插入到队列后面*/}}3.2思考题(3) 如果增加进程的“等待”状态,即进程因请求输入输出等问题而挂起的状态,如何在程序中实现?答:阻塞→阻塞/挂起:OS通常将阻塞进程换出,以腾出内存空间阻塞/挂起→就绪/挂起:当阻塞/挂起进程等待的事件发生时,可以将其转换为就绪/挂起。就绪/挂起→就绪:OS需要调入一个进程执行。就绪→就绪/挂起:一般,OS挂起阻塞进程。但是有时也会挂起就绪进程,释放足够的内存空间。新进程→就绪/挂起(新进程→就绪):新进程创建后,可以插入到就绪队列或就绪,挂起队列,若无足够的内存分配给新进程,则需要新进程→就绪/挂起。图3-1进程的挂起和解除挂起的状态

第4章程序测试图4-1输入进程信息及时间片数图4-2进程运行图图4-3进程运行图图4-4进程完成图

第5章总结经过这次的课程设计,让我学到了很多。首先是编程,C语言是大一的课程,现在已经遗忘了很多,这次的课程设计让我又温习了一遍C语言的知识点。其次,在编程中遇到了很多问题,经过小组同学之间讨论,并查看相关资料后都一并解决了,对课本及规范又有了充分地了解,实践是检验真理的唯一标准。因为这次的课程设计只有1周,所以程序做的略有粗糙,相信如果再给我们一周时间,肯定能完善该程序。小组成员各自编的程序在执行时都有错误,经过大家相互查找错误,终于把完整的程序编写了出来,并顺利完成报告,让我明白了我们的工作是一个团队的工作,团队需要个人,个人也离不开团队。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用书本上的知识内容,而且考试内容有限,课程设计就给了我们一个很好的实践结合的机会。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。这次课程设计顺利完成了,期间,程序中有几个小组成员都没有注意到的bug,然后在老师的指导下,我们又修改了程序并反复测试,终于使程序完美了。同时,在老师的身上我学到了很多实用的知识,我们应该多方面考虑,不能局限在一个小空间里,要学会找出程序不足的地方并填补它。参考文献[1]汤小丹,梁红兵,哲风屏,汤子瀛.计算机操作系统.西安:西安电子科技大学出版社,2011[2]张尧学,史美林.计算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论