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

上传人:微*** 文档编号:82873461 上传时间:2022-04-30 格式:DOCX 页数:17 大小:163.74KB
收藏 版权申诉 举报 下载
操作系统进程调度算法模拟(c++)实验报告_第1页
第1页 / 共17页
操作系统进程调度算法模拟(c++)实验报告_第2页
第2页 / 共17页
操作系统进程调度算法模拟(c++)实验报告_第3页
第3页 / 共17页
资源描述:

《操作系统进程调度算法模拟(c++)实验报告》由会员分享,可在线阅读,更多相关《操作系统进程调度算法模拟(c++)实验报告(17页珍藏版)》请在装配图网上搜索。

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

2、先服务算法, 短作业优先算法, 时间片轮转算法, 优 先级调度算法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;/用于保存带权周转时间和float s;/用于保存

4、各程序带权周转时间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;/计算平均加权周转时间/*输出 */Tn;cout 先来先服务算法平均周转时间:cout 先来先服务算法平均带权周转时间:Wn;短作业优先算法计流程图void Short(float a,int c)短作业优先算法float t=0;/保存周转时间和float r=0;/ 保存

5、各进程周转时间float T;/用于保存平均周转时间float S=0;/ 用于保存带权周转时间和float s;/ 用于保存各程序带权周转时间float W;/用于保存平均带权周转时间int b100;int i,j;/计数for(i=1;i=c;i+)bi=ai;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

6、 短作业优先算法平均周转时间: 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;/用于保存平均带权周转时间int i;/ 计数int m=c;/用于判定循环结束标准float d100;for(i=1;i=c;i+)将待运行进程时间

7、存入新的数组当中,便于之后的运算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 cout/* 计算平均周转时间,平均加权周转时间 */计算结果输出 */时间片轮转算法平均周转时间: Tn;时间片轮转算法平均带权周转时间 :Wn;优先级调度算法源程序及流程图void Precedence(float a,float b,in

8、t 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)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;

9、S+=s;/*计算及结果输出*/T=(float)t/c;W=(float)S/c;cout优先级调度算法平均周转时间:Tn;cout优先级调度算法平均带权周转时间:Wn;主函数源程序int main() 主函数int i;/计数确定进程到来次序int n;/保存进程数量float Operation100,Priority100;/用于保存各个进程运行时间及优先级coutn;cout 请依次输入各个进程运行时间及优先级:;for(i=1;iOperationiPriorityi;system(cls);/ 清屏/* 按表格显示进程参数 */cout 输入进程运行时间及优先级如下: endl;

10、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;五、 程序运行结果截图pfiffM如川加 此山城 jh13job21L必随2aME)4J阪2如来几出豆海法卡均腐转时间 1工4 去*先IK界电状平均俯枇周移时间:工期城作俄先总法邛均周转时

11、的7 妞“让优先期让年均帝权同构时间:LMHJ U片轮转集他中期 剃J:小, 时间片雅科施法平均用松词笠时间:2. S4优潦细疆度嫌法平用冏转时间t 12.4 优丸孤诣啜江状甲骨杖周牯时加;a 24RHJ kej 巾仃 COfit IfiH i-六、收获以及心得体会经过这次程序编写过程,我比较深刻的了解到了进程调度算法的具体实现思想, 在编程过程中我发现,假使我在编写一个操作系统时,编写一段代码,绝对不能 仅仅以实现某个具体的实验目标作为编程的最终结果,而不考虑这一点很可能会造成后续程序的混乱,数据的流失与改变。这一次的课程设计任务,我仅仅是用 了模块化的程序设计,并没有使用类,很大程度上影响

12、了系统的安全性, 在进行 后续排序过程中,使用了并不稳定的排序方法,使得整个程序的输出结果出现了 不稳定性,这也是操作系统中所并不能允许的事情。七、 附录源程序(可运行调试)#includeusing 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+)/

13、先来先服务算法具体实现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;/保存周转时间和float r=0;/保存各进程周转时间float T;/ 用于保存平均周转时间float S=0;/ 用于保存带权周转时间和float s;/用于保

14、存各程序带权周转时间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;S+=s;/* 平均周转时间及平均加权周转时间计算*/T=(float)t/c;W=(float)S/c;/* 计算结果输出 */cout 短作业优先算法平均周转时间: Tn;cout 短

15、作业优先算法平均带权周转时间 :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;/用于保存平均带权周转时间int i;/ 计数int m=c;/ 用于判定循环结束标准float d100;for(i=1;i0)/ 时间片轮转,当所有进程执行完毕以后跳出for(i=1;i0)/ 进程完成与否的判断 r+=1;

16、di-=1;if(di=0)/ 进程若执行完毕,周转时间得出,加权周转时间得出,总时间得出m-;s=r/ai;S+=s;t+=r;coutendl;/* 计算平均周转时间,平均加权周转时间 */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

17、 s;/用于保存各程序带权周转时间float W;/用于保存平均带权周转时间int i,j;/计数for(i=1;i=c;i+)/ 根据优先级确定进程执行顺序(冒泡排序) 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

18、 main()/ 主函数int i;/计数确定进程到来次序int n;/保存进程数量用于保存各个进程运行时间及优float Operation100,Priority100;/ 先级coutn;cout 请依次输入各个进程运行时间及优先级:;for(i=1;iOperationiPriorityi;system(cls);/ 清屏/* 按表格显示进程参数*/cout 输入进程运行时间及优先级如下: endl;cout 进程号 t 执行时间 t 优先级 n;for(i=1;i=n;i+)coutjobitOperationittPriorityinJ/* 调用函数 */First(Operation,n);coutendl;Short(Operation,n);coutendl;Time(Operation,n);coutendl;Precedence(Priority,Operation,n); return 0;Welcome ToDownload !欢迎您的下载,资料仅供参考!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!