时间片轮转算法

上传人:ni****g 文档编号:562468293 上传时间:2022-12-08 格式:DOCX 页数:14 大小:204.33KB
返回 下载 相关 举报
时间片轮转算法_第1页
第1页 / 共14页
时间片轮转算法_第2页
第2页 / 共14页
时间片轮转算法_第3页
第3页 / 共14页
时间片轮转算法_第4页
第4页 / 共14页
时间片轮转算法_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《时间片轮转算法》由会员分享,可在线阅读,更多相关《时间片轮转算法(14页珍藏版)》请在金锄头文库上搜索。

1、时间片轮转算法1. 课程设计的目的通过操作系统课程设计,通过对作业调度算法的设计,深入理解作业调度的 原理,从原理分析、物理设计,到功能分析和应用程序的最终实现,让我亲自动 手参与一个操作系统的模拟设计,真正理解和掌握操作系统的有关内容,加深对 操作系统,软件工程,程序设计语言的理论知识的理解和应用水平;在理论和实 验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高;学会将知识 应用于实际的方法,提高分析和解决问题的能力,增强对手能力;并更好的理解 和消化课本所学的知识,为毕业设计和以后工作打下必要基础。2. 课程设计的开发语言在本次课程设计中,我们选择了C+语言作为我们所使用的开发语

2、言,开发 工具则选用了 Microsoft Visual C+ 6.0。MFC借助C+的优势为Windows开发 开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每 次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理 时那种混乱和冗长的代码段。更重要的是利用C+的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C+中的对象,这样一来使开发更接近 开发语言而远离系统。正因为MFC是建立在C+的基础上,所以我强调C/C+语 言基础对开发的重要性。利用C+的封装性开发者可以更容易理解和操作各种窗 口对象;利用C+的派生性

3、开发者可以减少开发自定义窗口的时间和创造出可重 用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C+本身所具 备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。3. 功能描述时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的 时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出 来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块, 定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、 已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进 程,判断当前的进程是否是就绪状态“r”,如果是,则

4、为该进程分配一个时间 片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进 程的所需要运行的时间减少至0时,贝U将该进程的状态设置为“e”。然后,将 指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。4. 方案论证4.1概要设计4.1.1各模块功能1) int InitQueue(LinkQueue &Q):输入进程时,初始化输入的链表。2) int DestroyQueue(LinkQueue &Q): 运行完后, 销毁链表。3) int EnQueue(LinkQueue &Q,QElemType e):将进程插入循环队列中。4) int DeQueue

5、(LinkQueue &Q,QElemType e):当进程完成后,输出链表中元 素。5) in t QueueEmp ty(LinkQueue &Q):判断链表是否为空。6) void chioce(struet PCB pcb,int n):对于输入链表中数的按关键字 一到达时间用选择法从小到大进行进行排序。7) void caidan ():主菜单,包含:进程的创建和结果和结束。8) void crea te():进程的创建。9) void main():实现函数调用的总控制。4.1.2相关数据类型1) typedef int QElemType:自定义类型,定义 QElemTyp为 i

6、nt 型。2) typedef struct QNode QElemType data;struct QNode *next;QNode, *QueuePtr;采用结构体变量,存队列的相关信息:QElemType data、 st ruct QNode * nex t。同时定义结构体指针* QueueP tr,便于之后书写开辟空 间级表示。系统调用时,每次分配一个QNode那么大的空间进行存储。3) typedef struct PCB char name10;/进程名st ruct PCB * nex t; /循环链指针int need _t ime;/要求运行时间int worked_ti

7、me; /已运行时间,初始为0char condi ti on;/进程状态,只有“就绪”和“结束”两种状态int flag;/进程结束标志,用于输出PCB; PCB *fron t,* rear;/循环链队列的头指针和尾指针int N; /N为进程数定义循环链表的头指针和尾指针。QueuePtr front,QueuePtr rear。4) s truct PCB int ArrivalTime;int ServiceTime;har number; mMaxNum;采用结构体数组,创建一个进程,包含进程相关信息:进程名称、进程到达 时间、进程服务时间。4.2.3总体设计程序总体设计:首先选择

8、1创建进程,输入进程总数,进程的名称,各进程 到达的时间各进程服务的时间,以及时间片q的值,运行出结果。选择2将结 束运行,如图1所示。时间片觀鎖法1违翟为创珪及活貝2图1系统总体设计NYNY输入时间片YNNY是否完成NY是否所有进程 都完成是否有新进程 到达时间片是否用宀 完进程是否输入宀完结束开始4.2.4主程序的流程图主程序流程如图2所示。输入进程数输入进程将为完成的插入队尾分配给执行队列队首时间片将新到进程插入队尾图2主程序的流程图时间片-1时间片+1严退 出服务时间-1X4.1.5程序说明处理器调度总是选择指针指示的进程运行。由于本实验是模拟处理器调度的 功能,所以,对被选中的进程并

9、不实际的启动运行,而是执行:已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。4.2详细设计首先每一个进程用一个进程控制块PCB来代表。进程控制块的格式如表3 所示。表3 PCB控制块指针一一进程按顺序排成循环链队列,用指针指出下一个进程的进程控制块 的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。已运行时间一一假设进程已经运行的单位时间数,初始值为“ 0”。状态一一有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R” 表示。当一个进程运行结束后,它的状态为“结束”,用“E”表示。每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行

10、时间”。把五个进程按顺序排成循环链队列,用指针指出队列连接情况。用指针表示 轮到运行的进程,如表4描述述所示。表4进程队列KQKQKQKQKQ1122334455KKKKK234512431200000RRRRRPCB1PCB2PCB3PCB4PCB54.3程序详细设计步骤首先建立PCB的数据结构,为了便于正确输出,加上了进程结束标志flag。 输入进程信息(包括进程名和要求运行的时间),并为每个进程创建一个PCB 并初始化形成一个循环链队列,用函数creatPCB()来实现。建立函数judge()用来判断进程全部运行结束标志,即当所有进程的状态变 为e(即完成状态)后,循环结束,表示所有进程

11、都已运行成功。建立时间片轮转算法creatProcess ()对进程进行轮转运行,首先指针s 指向第一个进程PCB,即s=front,判断该进程的状态是否为r(就绪状态), 即if(s-condition = r),若是则表示此进程尚未执行结束,则执行 sworked_time+且 sneed_time, if(s-need_time二二0),贝U表示此进程已 运行结束,将其状态置为结束,即s-condition=e,并根据状态位输出完成 信息,且以后不会再运行此进程。将指针指向下个进程,s=s-next,并判断所 有进程是否已全部运行结束,没有则重复上面算法。当所有进程的状态位都变成 e表示

12、所有进程运行完成,则循环结束。建立主函数main(),输入进程数N,调用初始化循环链队列函数creatPCB() 和时间片轮转算法creatProcess(N),每次选中进程的进程名以及运行一次后进 程队列的变化,实现处理器的调度。5. 程序的运行及结果1) 主菜单:输入选项1:进程创建及结果2:结束,如图5所示。图5主菜单2)运行过程:选择1,创建进程。输入进程总数,进程的名称a 、b,各进 程到达的时间各进程服务的时间,以及时间片q的值。当输入进程为2时各进 程到达时间为3,2,各进程服务时间为2,3,以及时间片q=2时的情况,输入 情况如图6所示。图6创建进程3)输入成功后,按回车键,进

13、程在程序中的具体实现情况即:时间轮转情 况。进程在调度算法中,计算出的具体的完成时间,周转时间,带权时间,平均周 转时间,平均带权周转时间,如图7所示。d行讨叫如I-: Prog:TaA FiLesXHicrosof t Visual StudioXMyPr oj eci sddXDebiig:dd.井也井迸井疔心讦:fl行 在在在在在 正正正正正 0 0 1 1 J1 -_1 - -_1 - 2 3 4 5b別一第IRI:障考 -呂#目同 一程必禹装 一込魏亓问苗图7进程运行结果3)选择2:退出界面,如图8。卜一一“.进程创矗及结畢8“ W MICWW IfWK 加11 MW吉情迭择C1打=

14、图8退出界面6心得体会首先,我认为这次课程设计是对学习操作系统的一次综合考察,锻炼我综合 分析问题、解决问题的能力。初次找到课程设计的题目时,为程序本身的简单而 窃喜过;实验过程中也出现了一些难题需要解决,为此去苦苦探索过。课程设计 期间,曾多次登录网站浏览网页,为了弥补一些知识上的纰漏,一次次实践。当 我的想法得到实现,又学会了新的知识的时候,心中满是欣喜,或许这是实践出 真知的真实验证,有付出就有回报的真实写照吧。其次,我们感受了真诚的友谊。在实验中,遇到的问题是多方面的,而且有 那么一部分是以前学过的问题,但是已经忘却或是以前没有真正的理解过。但是 你会发现就在你的身边,会有那么一批人在背后热心的帮助你,这好像是人生的 一种历程,团队的协作和彼此心的交流让我们彼此丰厚起来,这也是我们成长中 必不可失的重要部分。最后,我认识到了自己的不足。平心而论,以前真的没有认真的学习过,即 使是在听课,可是后来却没有对学习中出现的问题而仔细分析过。得过且过,迷 失了我前进的方向,而现在却又重新敞开了。不论是以后的学习还是工作,我想 这都是很重要的,我需要不断进步的动力。7.参考文献1 陈莉君等.Linux操作系统原理与应用M.北京:清华大学出版社.2012.12 李龙来,吴杰,吕智慧,杨明.基于Web服务的分布式文件系统管理与优化方 案J.计算机工程与设计,2012.3 庞丽萍,阳富

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号