• 大小: 338KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签:

资源简介

随机给出一个进程调度实例,如: 进程 到达时间 服务时间 A 0 3 B 2 6 C 4 4 D 6 5 E 8 2 模拟进程调度,给出按照算法先来先服务FCFS、轮转RR(q=1)、最短进程优先SPN、最短剩余时间SRT、最高响应比优先HRRN进行调度各进程的完成时间、周转时间、响应比的值。 实验报告(含流程图及运行结果)&源码

资源截图

代码片段和文件信息

#include
#include
#include

typedef struct process_FCFS{
char name;//进程名
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];

FCFS inital(struct process_FCFS a[]int n);
void print(struct process_FCFS a[]int n);
void Fcfs(struct process_FCFS a[]int n);
struct process_FCFS *sortarrivetime(struct process_FCFS a[]int n);

struct process_FCFS *sortarrivetime(struct process_FCFS a[]int n)
{
int ij;
struct process_FCFS t;
int flag;
for(i=1;i {
flag=0;
for(j=0;j {
if(a[j].arrivetime>a[j+1].arrivetime)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
flag=1;//交换
}
}
if(flag==0)//如果一趟排序中没发生任何交换,则排序结束
break;
}
return a;
}

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=1;i {
if(a[i].arrivetime {
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(an);

}

void print(struct process_FCFS a[]int n)
{
int i;
for(i=0;i {
printf(“进程名:%c “a[i].name);
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“);
}
}

//主函数
int main()
{
int ni;
n=10;//进程数 
srand(time(0));
for(i=0;i {
a[i].name=65+i; 
a[i].arrivetime=((float)(rand()%100)/10);
a[i].servetime=((float)(rand()%100)/10+rand()%10);
}
*sortarrivetime(an);
Fcfs(an);
for(;;);
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        5815  2017-11-28 14:22  RR.cpp
     文件        2281  2017-11-28 14:21  FCFS .cpp
     文件        4705  2017-11-28 14:24  SPN.cpp
     文件        6353  2017-11-28 14:25  SRT.cpp
     文件        7113  2017-11-28 14:26  HRRN.cpp
     文件      348107  2017-11-28 14:24  实验4 报告.docx
     文件       53248  2017-12-30 11:05  实验4 处理器调度.doc

评论

共有 条评论