ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:195.30KB ,
资源ID:7986782      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7986782.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计.docx

1、操作系统课程设计课 程 设 计 报 告课程名称 操作系统 课题名称 时间片轮转算法 专 业 信息管理与信息系统 班 级 信管 1001 学 号 姓 名 指导教师 李峰、张益星、吴德建 2012 年 7 月 9 日湖南工程学院课 程 设 计 任 务 书课程名称 操作系统 课 题 时间片轮转算法 专业班级 信管1001 学生姓名 学 号 指导老师 李峰、张益星、吴德建 审 批 任务书下达日期 2012 年 6 月21 日任务完成日期 2012 年 7 月 9 日一、设计内容与设计要求1.课程设计目的全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述

2、的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和JAVAC#语言编程等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目时间片轮转算法:从键盘输入若干个进程;选择时间片,能算出平均周转时间和带权周转时间。 3.设计要求:主要模块:1、输入进程模块 具有功能:1、输入进程2、输入进程报错3、友好提示 4、输入到达时

3、间5、输入服务时间6、退出本系统2、时间片选择模块具有功能:1、友好提示2、时间片选择3、时间片输入报错4、退出本系统3、周转时间计算模块具有功能:各个模块周转时间的计算4、完成时间计算模块具有功能:各个模块完成时间的计算5、带权周转时间计算模块具有功能:各个模块带权周转时间的计算6、模块完成顺序输出具有功能:模块完成顺序的输出要求:1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。二、进度安排第19周 星期二 晚上

4、18:00-22:00星期四 晚上 18:00-22:00星期五 上午 8:00-12:00 下午 13:00-17:00第20周 星期一 上午 8:00-12:00 星期二 下午 14:00-18:00目 录1.系统需求分析 11.1问题描述 11.2功能要求 12.总体设计 12.1总体设计图 12.2各模块功能 22.3相关数据结构设计 33.详细设计 33.1采用C+语言定义的相关数据类型 33.2调度算法的主要实现 44.运行结果 64.1系统调试 64.2功能实现界面 75.使用说明 116.心得体会 117.附录 127.1 源代码 127.2 参考文献 208.评分表 221.

5、系统需求分析1.1问题描述设计程序模拟进程的时间片轮转RR调度过程。假设有n个进程分别在T1, ,Tn时刻到达系统,它们需要的服务时间分别为S1, ,Sn。分别利用不同的时间片大小q,采用时间片轮转RR进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。1.2功能要求1)进程个数n;每个进程的到达时间T1, ,Tn和服务时间S1, ,Sn;输入时间片大小q。2)要求时间片轮转法RR调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的

6、进程运行状态,如“时刻3:进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。5)输入进程报错:当输入不正确时,进行适当的报错,要求重新输入。2.总体设计2.1总体设计图系统总体设计如图2.1所示。图2.1 系统总体设计 2.2各模块功能1)int InitQueue(LinkQueue &Q):输入进程时,初始化输入的链表。2)int DestroyQueue(LinkQueue &Q):运行完后,销毁链表。3)int EnQueue(LinkQueue &Q,QElemType e):将进程插入循环队列中。4)int

7、 DeQueue(LinkQueue &Q,QElemType e):当进程完成后,输出链表中元素。5)int QueueEmpty(LinkQueue &Q):判断链表是否为空。6)void chioce(struct PCB pcb,int n):对于输入链表中数的按关键字到达时间用选择法从小到大进行进行排序。7)void caidan():主菜单,包含:进程的创建和结果和结束。8)void create():进程的创建。9)void main():实现函数调用的总控制。2.3相关数据结构设计(1)用结构体,定义循环队列的的数据域和指针:QElemType data,struct QNod

8、e *next。(2)定义循环队列的头指针和尾指针。QueuePtr front,QueuePtr rear。(3)定义创建进程的相关内容。包含:到达时间:int ArrivalTime,服务时间:int ServiceTime,进程名称:char number。3.详细设计3.1采用C+语言定义的相关数据类型1)typedef int QElemType:自定义类型,定义QElemType为int型。2)typedef struct QNode QElemType data; struct QNode *next;QNode,*QueuePtr;采用结构体变量,存队列的相关信息:QElemT

9、ype data、struct QNode *next。同时定义结构体指针*QueuePtr,便于之后书写开辟空间级表示。系统调用时,每次分配一个QNode那么大的空间进行存储。3)typedef struct QueuePtr front; QueuePtr rear;LinkQueue;定义循环链表的头指针和尾指针。QueuePtr front,QueuePtr rear。4)struct PCB int ArrivalTime; int ServiceTime; char number;mMaxNum;采用结构体数组,创建一个进程,包含进程相关信息:进程名称、进程到达时间、进程服务时间。

10、3.2调度算法的主要实现输入进程个数n;每个进程的到达时间T1, ,Tn调用选择排序法将输入的到达时间安先后顺序排列好,形成一个进程等待队列再输入服务时间S1, ,Sn;输入时间片大小q。接着调用时间片轮转法RR调度进程运行,计算每个进程的完成时间,周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;最后输出要求输出计算出来的每个进程的名称、到达时间、服务时间、完成时间、周转时间和带权周转时间。以及所有进程的平均周转时间,带权平均周转时间。在进程开始输入不正确时进行报错要求重新输入。 。4.运行结果4.1系统调试 (1)在程序设计初期。自己还是免不了会犯一些粗心的错误:如

11、在语句for()循环中的分号格式不正确,赋值语句后没有加分号等。(2)在程序运行初期,一直测试的是2个进程,一直都可以。输出的结果含所要求计算的结果。但测试3个进程时,所想输出的结果就不能够给输出出来。因为没有设置控制进程是否到达的开关及有关的判断。后增设一个pushed数组标志进程是否入队列。(3)开始设计程序时,未想到当到达时间不一致有前有后时的情况。后来检查时发现这样计算时间会变长,在段服务时间在后的话。因为队列是按输入的先后顺序排列,不是按到达时间排列的,所以进程依旧按先后顺序下来调度,导致算法错误。后加入排序程序void chioce(struct PCB pcb,int n),按关

12、键字-到达时间的先后进行排序,这样程序得到了改善。4.2功能实现界面(1)主菜单:输入选项1:进程创建及结果2:结束。如图4.1所示。图4.1主菜单(2)进程的创建及结果。1)选择1,创建进程。输入进程总数,进程的名称a 、b,各进程到达的时间,各进程服务的时间,以及时间片q的值。当输入进程为2时,各进程到达时间为3,2,各进程服务时间为2,3,以及时间片q=2时的情况。输入情况如图4-2所示。图4.2创建进程2)输入成功后,按回车键,进程在程序中的具体实现情况即:时间轮转情况。如图4.3所示。图4.3进程运行过程3)进程在调度算法中,计算出的具体的完成时间,周转时间,带权时间,平均周转时间,

13、平均带权周转时间。如图4.4所示。图4.4进程运行结果(3)选择2:退出界面。如图4.5。图4.5退出界面5.使用说明1)进入主菜单,按提示进行输入。输入1:进程的创建及创建后的运行结果。输入2:退出系统。2)进程创建,根据有关提示,输入进程,进行进程的有关创建,最后输入完后,按回车,显示出整个进程的运行结果。3)按提示输入正确的数值,否则会出现错。6.心得体会 7.附录7.1 源代码#include#include#includetypedef int QElemType;static const int MaxNum=100;typedef struct QNode QElemType d

14、ata; struct QNode *next;QNode,*QueuePtr;typedef struct QueuePtr front; QueuePtr rear;LinkQueue;struct PCB int ArrivalTime; int ServiceTime; char number;mMaxNum;int InitQueue(LinkQueue &Q);int DestroyQueue(LinkQueue &Q);int EnQueue(LinkQueue &Q,QElemType e);int DeQueue(LinkQueue &Q,QElemType e);i Que

15、ueEmpty(LinkQueue &Q);void chioce(struct PCB pcb,int n);void caidan();void create(); int n,q,FinishedTimeMaxNum,WholeTimeMaxNum; double WeightWholeTimeMaxNum,Average_WT=0,Average_WWT=0; LinkQueue Q;void RR(int*ArrivalTime,int*ServiceTime,int n,int q,LinkQueue &Q);void main() while(1) / system(cls);

16、coutendl; caidan(); int n; cout请选择(1-2) :n; if(n2) cout输入有误,请重新输入endl; switch(n) case 1:create();break; case 2:return ; /RR算法的具体实现void RR(int*ArrivalTime,int*ServiceTime,int n,int q,LinkQueue &Q) int countTime=0,e; chioce(m,n); if(ArrivalTime0=0) countTime=0; else countTime=m0.ArrivalTime; int STime

17、MaxNum,pushedMaxNum; for(int i=0;iq) STimee=STimee-q; countTime+=q; else countTime+=STimee;STimee=0;FinishedTimee=countTime; while(time0) cout时刻setw(2)time:进程e正在运行endl; time+; for(i=1;in;i+) if(STime!=0&i!=e&mi.ArrivalTime0)/判断进程e是否已执行完 EnQueue(Q,e); for(i=0;in;i+) /求周转时间和带权周转时间 WholeTimei=FinishedT

18、imei-mi.ArrivalTime; WeightWholeTimei=(double)(WholeTimei*1.000000/mi.ServiceTime); Average_WT+=WholeTimei; Average_WWT+=WeightWholeTimei; Average_WT/=n;/求平均周转时间Average_WWT/=n;/求平均带权周转时间/-输出-cout-endl;coutendl;coutendl;cout进程运行的结果是:endl;cout-endl;cout进程名称: ;for(i=0;in;i+)coutsetw(8)mi.number ;couten

19、dl;cout到达时间: ;for(i=0;in;i+)coutsetw(8)mi.ArrivalTime ;coutendl;cout服务时间: ;for(i=0;in;i+)coutsetw(8)mi.ServiceTime ;coutendl;cout完成时间: ;for(i=0;in;i+)coutsetw(8)FinishedTimei ;coutendl;cout周转时间: ;for(i=0;in;i+) coutsetw(8)WholeTimei ;coutendl;cout带权周转: ;for(i=0;in;i+) coutsetw(8)setiosflags(ios:fixe

20、d)setprecision(2)WeightWholeTimei ;coutendl;cout-endl;cout平均周转时间为:Average_WTendl;cout平均带权周转时间为:Average_WWTnext=NULL; return 1;/销毁链队列Qint DestroyQueue(LinkQueue &Q) while(Q.front) Q.rear=Q.front-next; free(Q.front); Q.front=Q.rear; return 1;/入队int EnQueue(LinkQueue &Q,QElemType e) QueuePtr p=(QueuePt

21、r)malloc(sizeof(QNode); p-data=e;p-next=NULL; Q.rear-next=p; Q.rear=p; return 1;/出队,并用e返回出队节点的元素值int DeQueue(LinkQueue &Q,QElemType e) QueuePtr p; if(Q.front=Q.rear) return 0; p=Q.front-next; e=p-data; Q.front-next=p-next; if(Q.rear=p) Q.rear=Q.front; free(p); return e;/判断链队列Q是否为空int QueueEmpty(Link

22、Queue &Q) if(Q.front=Q.rear) return true; else return false;/选择排序,对结构体中的关键字到达时间,按从小到大的顺序排列。void chioce(struct PCB pcb,int n) int i,j; struct PCB t; for(j=0;jn-1;j+) for(i=0;ipcbi+1.ArrivalTime) t=pcbi; pcbi=pcbi+1; pcbi+1=t; void caidan() cout*主页*endl; cout*1.进程创建及结果*endl; cout*2. 结束 *endl;void crea

23、te() cout请输入进程总数n的值(0n=100):n; while(n100) cout你输入的n的值不正确,请重新输入!n; cout请依次输入各个进程的名称:endl; for(int i=0;imi.number ; cout=0):endl; for( i=0;imi.ArrivalTime; while(mi.ArrivalTime0) cout你输入的n的值不正确,请重新输入!mi.ArrivalTime; cout=0):endl; for( i=0;imi.ServiceTime ; while(mi.ServiceTime0) cout你输入的n的值不正确,请重新输入!

24、mi.ServiceTime; cout请输入时间片q的值(0q=200):q; while(q200) cout你输入的q值不正确,请重新输入!q; coutendl; cout运行过程如下:endl; cout-endl; RR(&m0.ArrivalTime,&m0.ServiceTime,n,q,Q);/调用RR算法7.2 参考文献1 汤小丹等编著.操作系统(第三版)M.西安:西安电子科技大学出版社,2007,5.2 郑莉、董渊等编著.C+语言程序设计(第四版)M.北京:清华大学出版社,2010,7.3 李春葆、喻丹丹等编著.数据结构教程(第三版)M.北京:清华大学出版社,2011,6.8.评分表计算机与通信学院课程设计评分表课程名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1