模拟进程调度算法的实现,模拟进程调度算法
模拟进程调度,至少实现三种调度算法。
调度算法:先到先服务,短作业优先,优先级时间片轮换。
输出流程调度顺序:所有流程调度完成后,输出平均等待时间和平均加权周转时间。
$ $平均周转时间weight=\frac{1}{作业数} \cdot \sum\frac{作业完成时间-作业到达时间}{服务时间} $ $在指定文件中编写代码(可以自己给文件添加函数等。):
在文件exp 8 _ process _ schedule/process _ schedule . h中定义PCB、工艺创建和调度;
在process_schedule.c文件中实现进程调度模拟操作;
测试文件test_data_5.csv和test_data_200.csv(实际测试时,可以使用进程较少的测试test_data_5.csv,保证结果与逻辑结果一致,然后用更多的进程进行测试),格式如下:
pid,到达时间,运行时间,优先级
1,5,7,3
2,3,7,1
3,3,6,3
4,4,3,1
5,2,9,2
int main() {
int n,t=1;
int proNum,选择;
PCB pro[MAXSIZE],temp _ pro[MAXSIZE];
printf( \ n \ n \ t \ t \ t \ t-进程初始化-—— \ n );
proNum=init_process(test_data1,pro);
for(int I=0;我proNum我)
{
char tmp[256]={ 0 };
printf(\n%s,%d,%d,%d\n ,pro[i].名字,pro[i]。arrivetime,pro[i]。running_time,pro[i]。优先);
}
printf(proNum %d\n ,proNum);
while (t) {
menu();
memcpy(temp_pro,pro,(sizeof(pro)/sizeof(pro[0])* sizeof(PCB));
scanf(%d ,
while(n=0 n ^ 5){
printf( \ t \ t \ t指令不正确,请重新输入指令:);
scanf(%d ,
}
开关(n) {
案例1: {
fifo(temp_pro,proNum);
打破;
}
案例2: {
sjf(temp_pro,proNum);
打破;
}
案例3: {
hpf(temp_pro,proNum);
打破;
}
案例4: {
rr(temp_pro,proNum);
打破;
}
案例5: {
t=0;
打破;
}
}
getchar();
printf( \ n \ t按任意键继续.);
getchar();
系统(“cls”);
}
系统(“cls”);
printf( \ n \ n \ t \ t \ t \ t您已成功注销系统q==610098308 \ n );
返回EXIT _ SUCCESS;
}代码排序;
来自,谢绝转载,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。