实验 短作业优先进程调度算法模拟实验 短作业优先SJF进程调度算法模拟
一、实验目的
模拟单处理器系统的进程调度,采用短作业优先的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.
二、实验内容
#include
#include
#include
#include
#define N 5
struct PCB
{
char name[8]; //进程名称
int arrive_time; //到达时间
int run_time; //运行时间
...
实验 短作业优先SJF进程调度算法模拟
一、实验目的
模拟单处理器系统的进程调度,采用短作业优先的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.
二、实验内容
#include
#include
#include
#include
#define N 5
struct PCB
{
char name[8]; //进程名称
int arrive_time; //到达时间
int run_time; //运行时间
int finish_time; //完成时间
int zhouzhuan_time; //周转时间
float daiquan_time; //带权周转时间
bool finished; //是否运行完成
};
//进程初始化
struct PCB pcb[N]=
{{"AAA",0,4},{"BBB",1,3},{"CCC",2,5},{"DDD",3,2},{"EEE",4,4}};
//进程输出函数
void output()
{
printf("----------------------------------------------------------------------------------------------\n");
printf("进程名 到达时间 运行时间 完成时间 周转时间 带权周转时间\n");
printf("----------------------------------------------------------------------------------------------\n");
for(int i=0;ipcb[j].run_time&&pcb[j].finished==false)
{
min_time=pcb[j].run_time;
index=j;
}
}
//运行找到的最短进程 得到它的完成时间、周转时间等,并设置为已访问
pcb[index].finish_time=pcb[last_finishedPCB_index].finish_time+pcb[index].run_time;
pcb[index].zhouzhuan_time=pcb[index].finish_time-pcb[index].arrive_time;
pcb[index].finished =true;
last_finishedPCB_index=index;
}
output();
}
要求:
1. 认真阅读并理解上述程序,在实验中说明短作业优先调度算法中计算各进程的完成时间、周转时间思路。
2. 上面程序没有求每个进程的带权周转时间、平均周转时间,平均带权周转时间,能否加上,结果输出的格式按类似P904-2 输出。
3. 上面程序没有考虑某进程的运行时间最短,但它还没有到达的情况,请改写程序,将这种情况考虑进去,使程序正确。如进程信息如下:
struct PCB pcb[N]=
{{"AAA",0,4},{"BBB",1,3},{"CCC",2,5},{"DDD",15,2},{"EEE",4,4}};
进程名
到达时间
运行时间
完成时间
周转时间
A
0
4
4
4
B
1
3
7
6
C
2
5
16
14
D
20
2
22
3
E
4
4
11
7
4. 附加: 将该程序和先来先服务程序合成一个程序,并提供菜单选择执行短作业优先或先来先服务?(提示: 进程的初始化、进程的输出、进程的排序等只要定义一个,将FCFS 、SJF 的计算完成时间、周转时间、带权周转时间等的功能做成两个函数,函数名建议为FCFS、SJF。在主函数中建立菜单进行调用。
实验报告书写
1. 写出你对给出的程序的理解,可以包括学到了那些程序设计的语法或,以及算法的设计思想。
2. 写出实验指导中要求部分是如何实现的,
3. 上述部分不能只是抄写代码,要有说明。
附录: 先来先服务进程调度模拟程序
#include
#include
#include
#include
#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
本文档为【实验 短作业优先进程调度算法模拟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。