资源描述:
《《操作系统》实验三内容要求.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《操作系统》实验二内容要求51112【实验题目】:高响应比优先调度和时间片轮转RR进程调度算法【实验学时】:4学时【实验目的】通过这次实验,加深对进程调度概念的理解,进一步掌握比FCFS和SJF更为复杂的进程调度算法的实现方法。【实验内容】问题描述:设计程序模拟进程的高响应比优先调度和时间片轮转RR调度过程。假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。如果选择RR算法,则需要指定时间片大小q,采用时间片轮转RR进程调度算法进行调度,如果选择高响应比优先调度算法,则可以直接调度,计算每个进程的完成时间,周转时间和带权周转时间,并
2、且统计n个进程的平均周转时间和平均带权周转时间。程序要求如下:1)进程个数n;每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn;如果选择时间片轮转法,则要输入时间片大小q。2)要求高响应比优先和时间片轮转法RR调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。实现提示:用C++或者java语言实现提示:1)程序中进程
3、调度时间变量描述如下:intArrivalTime[100];intServiceTime[100];intPServiceTime[100];intFinishTime[100];intWholeTime[100];doubleWeightWholeTime[100];doubleAverageWT,AverageWWT;boolFinished[100];2)进程调度的实现过程如下:Ø变量初始化;typedefcharstring[10];/*//定义string为含有10个字符元素的字符数组类型*/structtask{stringname;/*作业号*/inta
4、rrTime;/*作业到达时间*/intserTime;/*作业要求服务时间*/intwaiTime;/*等待时间*/intbegTime;/*开始运行时间*/intfinTime;/*结束运行时间*/intturTime;/*周转时间*/intwTuTime;/*带权周转时间*/intpriority;/*优先权*/intfinish;/*是否已经完成*/}JCB[10];intnum;structstud{intname;intarrive;intrun;intrest;char*state;structstud*next;};Ø接收用户输入n,T1,…,Tn,S1
5、,…,Sn;structstud*create(){inta,i;structstud*head,*rear,*p,*q,*t;head=rear=NULL;printf("请输入进程数量:");scanf("%d",&a);printf("请输入进程名称到达时间和服务时间:例如:121");for(i=0;iname,&p->arrive,&p->run);p->rest=p->run;p->state="ready
6、";if(rear==NULL){head=p;p->next=NULL;rear=p;}else{t=NULL;q=head;while(q&&q->arrivearrive){t=q;q=q->next;}if(q==head){p->next=head;head=p;}elseif(t==rear){rear->next=p;p->next=NULL;rear=p;}else{t->next=p;p->next=q;}}}returnhead;}Ø选择算法,如果选择时间片轮转法,则输入时间片大小q,如果选择高响应比优先调度算法,则直接调度;voidmain
7、(){intnumber;while(true){printf("请选择算法:");printf("1.高响应比优先调度算法");printf("2.时间片轮转RR进程调度算法");scanf("%d",&number);if(number==1){charagain;do{system("cls");/*清屏*/printf("pleaseinput4groupsofdatas:");input();check();printf("Continue...(Y/N):");do{again=getch();}while