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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

操作系统进程调度算法模拟c++实验报告.docx

1、操作系统进程调度算法模拟c+实验报告南通大学计算机科学与技术学院操 作 系 统 课程设计报 告 书设计题目 模拟实现进程调度中的先来先服务算法,短作业优先算法,时间片轮转算法,优先级调度算法专业班级 计xxx 学生姓名 xxxxx 学 号 161xxxxxxxx 日 期 2018.01.8-2018.01.12 课程设计题目:模拟实现进程调度中的先来先服务算法,短作业优先算法,时间片轮转算法,优先级调度算法一、主要目的模拟实现进程调度中的先来先服务算法,短作业优先算法,时间片轮转算法,优先级调度算法二、设备与环境 1. 硬件设备:PC机一台2. 软件环境:Windows操作系统,vc6.0三、

2、实验要求1.实验题目模拟实现进程调度中的先来先服务算法,短作业优先算法,时间片轮转算法,优先级调度算法2.数据结构及主要符号说明。用两个数组分别表示进程的运行时间和优先级,数组大小定义为100,用以适应多种进程算法计算在各个算法模块函数中,所有的符号都是采用了同一种浮点型变量符号(如下所示);float t=0;/保存周转时间和float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 特殊的:在所有算法里出现的“i”“j”均表示计数,在

3、功能函数编写过程中,参数均是以a,b,c代替的其中c表示固定输入的进程数量,用以作为函数中循环跳出的标志;在时间片轮转算法中,用time表示时间片的大小,用m表示尚未完成的进程数;在时间片轮转算法中,定义了新的数组d100,用来保存相应的进程运行时间在循环过程中用以操作,避免因操作过程中数值变化无法进行后续操作四、程序流程图和源程序先来先服务算法源程序及流程图void First(float a,int c)/先来先服务算法 float t=0;/保存周转时间和 float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 fl

4、oat s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int i;/计数 for(i=1;i=c;i+)/先来先服务算法具体实现 r+=ai;/每个进程周转时间 s=r/ai;/每个进程加权周转时间 t+=r;/总周转时间 S+=s;/总加权周转时间 T=(float)t/c;/计算平均周转时间 W=(float)S/c;/计算平均加权周转时间 /*输出*/ cout先来先服务算法平均周转时间:Tn; cout先来先服务算法平均带权周转时间:Wn;短作业优先算法计流程图void Short(float a,int c)/短作业优先算法 float t=0;/保存

5、周转时间和 float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int b100; int i,j;/计数 for(i=1;i=c;i+) bi=ai; for(i=1;ic;i+)/对进程按照作业运行时间进行排序(冒泡) for(j=1;j=bj+1) float m=bj; bj=bj+1; bj+1=m; for(i=1;i=c;i+)/根据排序顺序实行短作业优先算法 r+=bi; s=(float)r/bi; t+=r;

6、S+=s; /*平均周转时间及平均加权周转时间计算*/ T=(float)t/c; W=(float)S/c; /*计算结果输出*/ cout短作业优先算法平均周转时间:Tn; cout短作业优先算法平均带权周转时间:Wn;时间片轮转算法源程序及流程图void Time(float a,int c)/时间片轮转算法 float time=1;/规定时间片的大小 float t=0;/保存周转时间和 float T;/用于保存平均周转时间 float r=0;/保存各进程周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保

7、存平均带权周转时间 int i;/计数 int m=c;/用于判定循环结束标准 float d100; for(i=1;i=c;i+)/将待运行进程时间存入新的数组当中,便于之后的运算 di=ai; cout0)/时间片轮转,当所有进程执行完毕以后跳出 for(i=1;i0)/进程完成与否的判断 couti ; r+=1; di-=1; if(di=0)/进程若执行完毕,周转时间得出,加权周转时间得出,总时间得出 m-; s=r/ai; S+=s; t+=r; coutendl; /*计算平均周转时间,平均加权周转时间*/ T=t/c; W=S/c; /*计算结果输出*/ cout时间片轮转算

8、法平均周转时间:Tn; cout时间片轮转算法平均带权周转时间:Wn;优先级调度算法源程序及流程图void Precedence(float a,float b,int c)/优先级调度算法 float t=0;/保存周转时间和 float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int i,j;/计数 for(i=1;i=c;i+)/根据优先级确定进程执行顺序(冒泡排序) for(j=1;j=c-i;j+) if(ajaj+1)

9、 float m=aj; aj=aj+1; aj+1=m; float n=bj; bj=bj+1; bj+1=n; for(i=1;i=c;i+) r+=bi; s=(float)r/bi; t+=r; S+=s; /*计算及结果输出*/ T=(float)t/c; W=(float)S/c; cout优先级调度算法平均周转时间:Tn; cout优先级调度算法平均带权周转时间:Wn;主函数源程序int main()/主函数 int i;/计数 确定进程到来次序 int n;/保存进程数量 float Operation100,Priority100;/用于保存各个进程运行时间及优先级 cou

10、tn; cout请依次输入各个进程运行时间及优先级:; for(i=1;iOperationiPriorityi; system(cls);/清屏 /*按表格显示进程参数*/ cout输入进程运行时间及优先级如下:endl; cout进程号t执行时间t优先级n; for(i=1;i=n;i+) coutjobitOperationittPriorityin; /*调用函数*/ First(Operation,n); coutendl; Short(Operation,n); coutendl; Time(Operation,n); coutendl; Precedence(Priority,O

11、peration,n); return 0;五、程序运行结果截图六、收获以及心得体会经过这次程序编写过程,我比较深刻的了解到了进程调度算法的具体实现思想,在编程过程中我发现,假使我在编写一个操作系统时,编写一段代码,绝对不能仅仅以实现某个具体的实验目标作为编程的最终结果,而不考虑这一点很可能会造成后续程序的混乱,数据的流失与改变。这一次的课程设计任务,我仅仅是用了模块化的程序设计,并没有使用类,很大程度上影响了系统的安全性,在进行后续排序过程中,使用了并不稳定的排序方法,使得整个程序的输出结果出现了不稳定性,这也是操作系统中所并不能允许的事情。七、附录源程序(可运行调试)#includeusi

12、ng namespace std;void First(float a,int c)/先来先服务算法 float t=0;/保存周转时间和 float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int i;/计数 for(i=1;i=c;i+)/先来先服务算法具体实现 r+=ai;/每个进程周转时间 s=r/ai;/每个进程加权周转时间 t+=r;/总周转时间 S+=s;/总加权周转时间 T=(float)t/c;/计算平均周转时间

13、 W=(float)S/c;/计算平均加权周转时间 /*输出*/ cout先来先服务算法平均周转时间:Tn; cout先来先服务算法平均带权周转时间:Wn;void Short(float a,int c)/短作业优先算法 float t=0;/保存周转时间和 float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int b100; int i,j;/计数 for(i=1;i=c;i+) bi=ai; for(i=1;ic;i+)/

14、对进程按照作业运行时间进行排序(冒泡) for(j=1;j=bj+1) float m=bj; bj=bj+1; bj+1=m; for(i=1;i=c;i+)/根据排序顺序实行短作业优先算法 r+=bi; s=(float)r/bi; t+=r; S+=s; /*平均周转时间及平均加权周转时间计算*/ T=(float)t/c; W=(float)S/c; /*计算结果输出*/ cout短作业优先算法平均周转时间:Tn; cout短作业优先算法平均带权周转时间:Wn;void Time(float a,int c)/时间片轮转算法 float time=1;/规定时间片的大小 float t

15、=0;/保存周转时间和 float T;/用于保存平均周转时间 float r=0;/保存各进程周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int i;/计数 int m=c;/用于判定循环结束标准 float d100; for(i=1;i0)/时间片轮转,当所有进程执行完毕以后跳出 for(i=1;i0)/进程完成与否的判断 r+=1; di-=1; if(di=0)/进程若执行完毕,周转时间得出,加权周转时间得出,总时间得出 m-; s=r/ai; S+=s; t+=r; coutend

16、l; /*计算平均周转时间,平均加权周转时间*/ T=t/c; W=S/c; /*计算结果输出*/ cout时间片轮转算法平均周转时间:Tn; cout时间片轮转算法平均带权周转时间:Wn; void Precedence(float a,float b,int c)/优先级调度算法 float t=0;/保存周转时间和 float r=0;/保存各进程周转时间 float T;/用于保存平均周转时间 float S=0;/用于保存带权周转时间和 float s;/用于保存各程序带权周转时间 float W;/用于保存平均带权周转时间 int i,j;/计数 for(i=1;i=c;i+)/根

17、据优先级确定进程执行顺序(冒泡排序) for(j=1;j=c-i;j+) if(ajaj+1) float m=aj; aj=aj+1; aj+1=m; float n=bj; bj=bj+1; bj+1=n; for(i=1;i=c;i+) r+=bi; s=(float)r/bi; t+=r; S+=s; /*计算及结果输出*/ T=(float)t/c; W=(float)S/c; cout优先级调度算法平均周转时间:Tn; cout优先级调度算法平均带权周转时间:Wn; int main()/主函数 int i;/计数 确定进程到来次序 int n;/保存进程数量 float Oper

18、ation100,Priority100;/用于保存各个进程运行时间及优先级 coutn; cout请依次输入各个进程运行时间及优先级:; for(i=1;iOperationiPriorityi; system(cls);/清屏 /*按表格显示进程参数*/ cout输入进程运行时间及优先级如下:endl; cout进程号t执行时间t优先级n; for(i=1;i=n;i+) coutjobitOperationittPriorityin; /*调用函数*/ First(Operation,n); coutendl; Short(Operation,n); coutendl; Time(Operation,n); coutendl; Precedence(Priority,Operation,n); return 0;

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

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