博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实时模拟_FCFS调度算法
阅读量:7123 次
发布时间:2019-06-28

本文共 3765 字,大约阅读时间需要 12 分钟。

1 #include
2 #include
3 typedef struct course{
/*进程结构体*/ 4 char courseName;/*进程名称*/ 5 int startTime/*到达时间*/,serviceTime/*服务时间*/; 6 int survivalTime/*生存时间*/,WhetherIn/*是否就绪*/; 7 int destructionTime/*销毁时间*/,readyTime/*就绪时间*/; 8 struct course*next; 9 }course; 10 void typeIn(course*courseData,int n);/*录入进程数据*/ 11 void myQSort(course*courseData,int left,int right);/*按到达时间排序进程数据*/ 12 void output(course*courseData,int n);/*按到达时间升序进程数据后输出*/ 13 void FCFSreal_timeSimulation(course*courseData,int n);/*实时模拟FCFS进程调度算法*/ 14 void summarize(course*courseData,int n);/*实验总结*/ 15 int main(){ 16 int n; 17 course courseData[100]; 18 while(1){ 19 system("cls"); 20 printf("模拟实验的进程数量:"); 21 scanf("%d",&n); 22 system("cls"); 23 typeIn(courseData,n);/*录入进程数据*/ 24 myQSort(courseData,0,n-1);/*按到达时间排序进程数据*/ 25 system("cls"); 26 //output(courseData,n);/*按到达时间升序进程数据后输出*/ 27 FCFSreal_timeSimulation(courseData,n);/*实时模拟FCFS进程调度算法*/ 28 summarize(courseData,n);/*实验总结*/ 29 system("pause"); 30 } 31 return 0; 32 } 33 void typeIn(course*courseData,int n){ 34 int i; 35 for(i=0;i
key.startTime) 54 j--; 55 if(i
WhetherIn){ 91 queueF->WhetherIn=1; 92 queueF->readyTime=i-1; 93 }/* 94 printf("本次执行进程:\n"); 95 printf("进程名称 :%c\n",queueF->courseName); 96 printf("到达时间 :%d\n",queueF->startTime); 97 printf("服务时间 :%d\n",queueF->serviceTime); 98 printf("服务开始时间 :%d\n",queueF->readyTime); 99 printf("已服务时间 :%d\n",queueF->serviceTime-queueF->survivalTime);100 printf("剩余服务时间 :%d\n\n",queueF->survivalTime);*/101 queueF->survivalTime--;102 }103 printf("\n");104 for(j=0;courseData[j].WhetherIn&&j
courseName=courseData[j].courseName;113 m->survivalTime=m->serviceTime=courseData[j].serviceTime;114 m->startTime=courseData[j].startTime;115 courseData[j].WhetherIn=1;116 m->WhetherIn=0;117 if(queueF)118 queueT->next=m;119 else120 queueF=m;121 queueT=m;122 }123 if(queueT)124 queueT->next=NULL;125 if(queueF&&!queueF->survivalTime){
/*本次销毁进程*/126 queueF->destructionTime=courseData[k].destructionTime=i;127 courseData[k].readyTime=queueF->readyTime;128 /*printf("本次销毁进程:\n");129 printf("进程名称 :%c\n",queueF->courseName);130 printf("到达时间 :%d\n",queueF->startTime);131 printf("服务时间 :%d\n",queueF->serviceTime);132 printf("服务开始时间 :%d\n",queueF->readyTime);133 printf("服务结束时刻 :%d\n",i);134 printf("服务周转时间 :%d\n",queueF->destructionTime-queueF->startTime);135 printf("加权周转时间 :%.2f\n\n",1.0*(queueF->destructionTime-queueF->startTime)/queueF->serviceTime);*/136 if(queueF==queueT){137 free(queueF);138 queueF=queueT=NULL;139 }140 else{141 p=queueF;142 queueF=p->next;143 free(p);144 }145 k++;146 }147 if(k==n)148 return;149 i++;150 //system("pause");151 }152 }153 void summarize(course*courseData,int n){154 int i;155 system("cls");156 printf("实时模拟FCFS进程调度算法结果如下:\n");157 for(i=0;i

转载于:https://www.cnblogs.com/KurokoTetsuya/p/3612132.html

你可能感兴趣的文章
js实现限制输入框只能输入数字
查看>>
CentOS下杀毒工具ClamAV安装
查看>>
编译参数查看
查看>>
httpd学习:http基础
查看>>
LINUX用户管理
查看>>
Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
查看>>
oracle笔记
查看>>
组合条件测试
查看>>
硬盘结构与工作原理
查看>>
hadoop安装配置
查看>>
改动过.gitignore文件之后设置生效
查看>>
LAMP编译安装1
查看>>
思科无线控制器的发现
查看>>
Does GATHER_STATS_JOB gather all objects' stats every time?
查看>>
Oracle绑定变量窥探
查看>>
BPDU guard和bpdufilter的一些介绍
查看>>
批量删除文件
查看>>
DNS服务器的学习和搭建
查看>>
Keepalived+Nginx反向代理检测集群节点状态企业实战
查看>>
JS组件系列——Bootstrap文件上传组件:bootstrap fileinput
查看>>