实验 先来先服务FCFS进程调度模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验先来先服务FCFS进程调度模拟
一、实验目的
二、
模拟单处理器系统的进程调度,采用先来先服务的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.
二、实验内容
启动VC6,新建一个win32 console application 工程,工程名称:操作系统FCFS实验,如图所示:
确定后选新建一个空工程
再新建一个C++ Source File文件:文件名:FCFS算法模拟
下面程序就是一个FCFS进程调度的模拟,请仔细研究,体会,消化。
运行时请按教材P90 表4-2 所示,输入5个进程的进程名,到达时间,完成时间,观察结果情况。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 5
struct PCB
{
char name[8];
int arrive_time;
int run_time;
int finish_time;
int zhouzhuan_time;
};
int total=0;
struct PCB pcb[N],temp;
void output()
{
printf("----------------------------------------------------------------------------------------------\n");
printf("进程名到达时间运行时间完成时间周转时间 \n");
printf("----------------------------------------------------------------------------------------------\n");
for(int i=0;i<N;i++)
{
printf(" %s %d %d %d %d \n",pcb[i].name,pcb[i].arrive_time,pcb[i].run_time,pcb[i].finish_time,pcb[i].zhouzhuan_time);
}
printf("----------------------------------------------------------------------------------------------\n");
}
void main()
{
int i,j;
for ( i=0;i<N;i++)
{
printf("请输入进程名\n" );
scanf("%s",pcb[i].name);
printf("请输入到达时间:");
scanf("%d",&pcb[i].arrive_time);
printf("请输入要运行时间");
scanf("%d",&pcb[i].run_time);
}
for( i=0;i<N;i++)
{ printf("%s ",pcb[i].name);
printf("%d ",pcb[i].arrive_time);
printf("%d \n",pcb[i].run_time);
}
pcb[0].finish_time=pcb[0].arrive_time+pcb[0].run_time;
pcb[0].zhouzhuan_time=pcb[0].finish_time-pcb[0].arrive_time;
for(i=1;i<N;i++)
{
pcb[i].finish_time=pcb[i-1].finish_time+pcb[i].run_time;
pcb[i].zhouzhuan_time=pcb[i].finish_time-pcb[i].arrive_time;
}
output();
}
要求:(下面的要求一个一个实现)
1.上面程序没有求每个进程的带权周转时间、平均周转时间,平均带权周转时间,能否加上,结果输出的格式按类似P90表4-2 输出。
2.上面程序默认认为上一个进程结束前,下一个进程就已经到达,如果要增加一种情况,即上一个进程结束前,下一个进程还没有到达,程序计算周转时间仍然正确,如何修改程序?
3上面的程序在输入进程信息时进程到达时间要按从小到大输入,否则结果可能不对,请改写程序,使得进程到达时间不按从小到大输入,结果也正确。
(提示:先去回忆并掌握数组排序方法(如冒泡法排序),进程结构体数组数据信息输入完成后,将结构体数组按到达时间从小到大排序),。