采用响应比高者优先调度算法进行调度时,必须计算系统中的所有满足必要条件作业的 响应比,从中选择响应比最高的一个作业装入主存储器分配资源。由于是实验,所以就 将作业控制块出队,并输出作业名代替装入主存储器,同时修改系统的资源数量。用同 样方法选择第二个第三个??直到不再有满足必要条件的作业。 模拟程序中,首先要假设系统的资源情况,假设系统资源只有64MB主存、4台磁带机和2台打印机。然后手工输入某个时刻系统的各个作业情况。最后进行作业调度,并将结果输出。
1.3 编码实现
/***************高响应比优先算法************************/ #include\#include\#include\
#define n 10 //假定系统中可容纳的作业数量为n typedef struct jcb {
char name[4]; //作业名
int length; //作业长度,所需内存大小 int printer; //作业执行所需打印机的数量 int tape; //作业执行所需磁带机的数量 int runtime; //作业估计执行时间 int waittime; //作业在系统中的等待时间 int next; //指向下一个作业控制块的指针 }JCB; //作业控制块类型定义 int head; //作业队列头指针定义
第 6 页
int tape,printer; long memory;
JCB jobtable[n]; //作业表
int jobcount=0; //系统内现有作业数量 void shedule() //作业调度函数 { float xk,k; int p,q,s,t; do { p=head; q=s=-1; k=0; while(p!=-1) {
if(jobtable[p].length<=memory&&jobtable[p].tape<=tape&&jobtable[p].printer<=printer)
{ //系统可用资源是否满足作业要求
xk=(float)(jobtable[p].waittime)/jobtable[p].runtime; if(q==0||xk>k)
//满足条件的第一个作业或者作业q的响应比小于作业p的响应比
第 7 页
{ k=xk; //记录响应比 q=p; t=s; }//if }//if s=p;
p=jobtable[p].next; //指针p后移 }//while if(q!=-1) {
if(t==-1) //是作业队列的第一个 head=jobtable[head].next; else
jobtable[t].next=jobtable[q].next;
//为作业q分配资源:分配内存空间;分配磁带机;分配打印机
memory=memory-jobtable[q].length; tape=tape-jobtable[q].tape; printer=jobtable[q].printer;
cout<<\选中作业的作业名:\ }
}while(q!=-1);
第 8 页
} //作业调度函数结束
void main() {
char name[4];
int size,tcount,pcount,wtime,rtime; int p;
//系统数据初始化 memory=65536; tape=4; printer=2; head=-1;
cout<<\请输入作业相关数据(以作业大小为负数停止输入):\
//输入数据,建立作业队列
cout<<\作业名-作业大小-磁带机数-打印机数-等待时间-估计执行时间\
cin>>name>>size>>tcount>>pcount>>wtime>>rtime; float m = (float)wtime/rtime;
cout<<\作业\的响应比为:\ while(size!=-1) { //创建JCB
第 9 页
if(jobcount cout<<\无法再创建作业\ break; } jobcount++; //填写该作业相关内容 strcpy(jobtable[p].name,name); jobtable[p].length=size; jobtable[p].printer=pcount; jobtable[p].tape=tcount; jobtable[p].runtime=rtime; jobtable[p].waittime=wtime; //挂入作业队列队首 jobtable[p].next=head; head=p; //输入一个作业数据 cout<<\作业名-作业大小-磁带机数-打印机数-等待时间-估计执行时间\ cin>>name>>size>>tcount>>pcount>>wtime>>rtime; m = (float)wtime/rtime; cout<<\作业\的响应比为:\ 10 页 第 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统结课实验报告(2)在线全文阅读。
相关推荐: