操作系统实验一先来先服务FCFS和短作业优先SJF调度算法讲解.doc
文本预览下载声明
操作系统实验报告一
[实验题目]
先来先服务FCFS和短作业优先SJF调度算法
[实验目的]
通过本次实验,加深对进城概念的理解,进一步掌握对进城状态转变、进城调度策略及对系统性能的评价方法。
[实验内容]
编程实现如下:?1.先来先服务算法;?2.短进程优先算法;如下#includestdio.h
#includestdlib.h
/*
*@author
*@date 2015-6-1
*/
typedef struct process_FCFS
{
float arrivetime; //到达时间
float servetime; //服务时间
float finishtime; //完成时间
float roundtime; //周转时间
float daiquantime; //带权周转时间
struct process_FCFS *link; //结构体指针
}
FCFS;
FCFS *p,*q,*head=NULL;
struct process_FCFS a[100];
struct process_FCFS *sortarrivetime(struct process_FCFS a[],int n)
{
int i,j;
struct process_FCFS t;
int flag;
for(i=1;in;i++)
{
flag=0;
for(j=0;jn-i;j++)
{
if(a[j].arrivetimea[j+1].arrivetime)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
flag=1;
}
}
if(flag==0)//如果排序中没发生任何交换,则结束
break;
}
return a;
}
//先来先服务算法
void print(struct process_FCFS a[],int n)
{
int i;
for(i=0;in;i++)
{
printf(到达时间:%f,a[i].arrivetime);
printf(服务时间:%f,a[i].servetime);
printf(完成时间:%f,a[i].finishtime);
printf(周转时间:%f,a[i].roundtime);
printf(带权周转时间:%f,a[i].daiquantime);
printf(\n);
}
}
void Fcfs(struct process_FCFS a[],int n)
{
int i;
a[0].finishtime=a[0].arrivetime+a[0].servetime;
a[0].roundtime=a[0].finishtime+a[0].arrivetime;
a[0].daiquantime=a[0].roundtime/a[0].servetime;
for(i=0;in;i++)
{
if(a[i].arrivetimea[i-1].finishtime)
{
a[i].finishtime=a[i-1].finishtime+a[i].servetime;
a[i].roundtime=a[i].finishtime-a[i].arrivetime;
a[i].daiquantime=a[i].roundtime/a[i].servetime;
}
else
{
a[i].finishtime=a[i].arrivetime+a[i].servetime;
a[i].roundtime=a[i].finishtime-a[i].arrivetime;
a[i].daiquantime=a[i].roundtime/a[i].servetime;
}
}
printf(先来先服务\n);
print(a,n);
}
void main()
{
int n,i;
printf(请输入有几个进程\n);
scanf(%d,n);
for(i=0;in;i++)
{
printf(arrivetime);
scanf(%f,a[i].arrivetime);
printf(servetime);
scanf(%f,a[
显示全部