欢迎来到天天文库
浏览记录
ID:34348296
大小:55.30 KB
页数:3页
时间:2019-03-05
《实验二 模拟进程调度算法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验二模拟进程调度算法一、实验目的1、为了更好的配合《操作系统》有关进程调度章节的教学。2、加深和巩固学生对于进程调度的了解和掌握。3、使学生通过本实验能够初步的了解和掌握进程调度的整个过程及常用算法。4、提高学生的上机和编程过程中处理具体问题的能力二、实验内容1、学习进程调度的基本方法。2、学习时间片轮转调度算法、先来先服务算法、最短作业优先算法。3、画出调度图。4、试用c语言编写先来先服务算法调度算法。三、实验要求实验课时2学时。要求画出进程调度图,并比较算法的性能。程序编写可选作。***编制先来先执行进程调度算法;注意:1、将算法中的相关的量定义在一个结构体中;2、使
2、用结构体数组存储参加调度的进程;3、编制算法是要确定终止进程的输入。#include/*定义一个进程*/structpcb{intid;intarr_time;/*到达时间*/intreq_time;/*进程执行时间*/intend_time;intcir_time;/*进程周转时间*/};structpcbp[10],temp_p;/*定义结构体数组和变量*/intq;intnum,sum_cir_time;/*定义进程周转时间*/main(){inti,j;for(i=0;i<10;i++){p[i].id=999;p[i].end_time=0;p[
3、i].cir_time=0;}printf("PleaseinputProcessinfo:id,arr_time,req_time");for(i=0;i<10;i++){scanf("%d,%d,%d",&p[i].id,&p[i].arr_time,&p[i].req_time);if(p[i].id==-999){p[i].id=999;break;}}for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(p[i].arr_time>p[j].arr_time){temp_p=p[i];p[i]=p[j];p[j]=temp_p;}
4、sum_cir_time=p[0].arr_time;num=0;for(i=0;i<10;i++)if(p[i].id<999){num++;/*如果ID<999,则总进程数+1*/sum_cir_time=p[i].req_time+sum_cir_time;p[i].end_time=sum_cir_time;p[i].cir_time=p[i].end_time-p[i].arr_time;}for(i=0;i<10;i++)printf("%5d%9d%9d%9d%9d",p[i].id,p[i].arr_time,p[i].req_time,p[i].end
5、_time,p[i].cir_time);sum_cir_time=sum_cir_time-p[0].arr_time;printf("ScheduleResult:");printf("idarr_timereq_timeend_timecir_time:");for(i=0;i<10;i++){if(p[i].id<999)printf("%5d%9d%9d%9d%9d",p[i].id,p[i].arr_time,p[i].req_time,p[i].end_time,p[i].cir_time);}printf("TotalCir_time:%d"
6、,sum_cir_time);printf("AverageCir_time:%d",sum_cir_time/num);}
此文档下载收益归作者所有