1 / 13
文档名称:

进程调度算法实验研究报告.doc

格式:doc   大小:220KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

进程调度算法实验研究报告.doc

上传人:一花一世 2019/3/9 文件大小:220 KB

下载得到文件列表

进程调度算法实验研究报告.doc

文档介绍

文档介绍:操作系统实验报告(二)实验题目:进程调度算法实验环境:C++实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。实验内容:编程实现如下算法:;;。设计分析:程序流程图:,输入进程信息开始各进程按先来先到的顺序进入就绪队列就绪队列?:先来先服务算法#include<>#definen20typedefstruct{ intid;         //进程名 intatime;        //进程到达时间 intruntime;      //进程运行时间}fcs;voidmain(){ intamount,i,j,diao,huan;   fcsf[n]; cout<<"请输入进程个数:"<<endl; cin>>amount; for(i=0;i<amount;i++) { cout<<"请输入进程名,进程到达时间,进程运行时间:"<<endl; cin>>f[i].id; cin>>f[i].atime; cin>>f[i].runtime;  } for(i=0;i<amount;i++)        //按进程到达时间的先后排序 {                              //如果两个进程同时到达,按在屏幕先输入的先运行 for(j=0;j<amount-i-1;j++) { if(f[j].atime>f[j+1].atime)  {diao=f[j].atime;   f[j].atime=f[j+1].atime;   f[j+1].atime=diao;   huan=f[j].id;   f[j].id=f[j+1].id;   f[j+1].id=huan;  } } } for(i=0;i<amount;i++) { cout<<"进程:"<<f[i].id<<"从"<<f[i].atime<<"开始"<<","<<"在"  <<f[i].atime+f[i].runtime<<"之前结束。"<<endl; f[i+1].atime=f[i].atime+f[i].runtime; }}短进程优先算法#include<>#definen5#definenum5#definemax65535typedefstructpro{intPRO_ID;intarrive_time; intsum_time; intflag;}Pro;//整数排序intbubble(inttemp[]){ inti,j,tem=0; for(i=1;i<num;i++) {intlastX=1; for(j=0;j<num-i;j++) {if(temp[j]>temp[j+1]) {tem=temp[j]; temp[j]=temp[j+1]; temp[j+1]=tem; lastX=0; } } if(lastX==1)break; } returntemp[0];}//进程排序Probubble(Prop[]){ inti,j; Protemp={0}; Pros[num]; for(i=0;i<num;i++){s[i]=p[i]; } for(i=1;i<num;i++) { intlastX=1; for(j=0;j<num-i;j++) { if(s[j].sum_time>s[j+1].sum_time) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; lastX=0; } } if(lastX==1)break; } returns[0];}voidSPF(intp){ if(n>0) { inti,j,k,l,tc=0; Proseq[n]; Protemp_seq[n]; printf("短进程优先调度算法SPF\n"); printf("请依次输入5个进程的进程号、到达时间和执行时间\n"); printf("成员变量用逗号隔开;进程间用回车隔开\n"); for(i=0;i<n;i++){ scanf("%d,%d,%d",&seq[i].PRO_ID,&seq[i].arrive_time,&seq[i].sum_time); } printf("调度顺序是:\n"); //初始化tc inttemp[num]; for(i=0;i<num;i++) { temp[i]=seq[i].arrive_time; } tc=bubble(temp);//