1 / 12
文档名称:

多级队列调度算法.doc

格式:doc   大小:428KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

多级队列调度算法.doc

上传人: fkh4608 2022/4/23 文件大小:428 KB

下载得到文件列表

多级队列调度算法.doc

文档介绍

文档介绍:实用标准文案
操作系统原理




院系: 计算机学院
班1,2},{4,0,2},{3,0,5},{2,0,4},{3,1,4}}; int Need[a][b]={{3,4,7},{1,3,4},{0,0,3},{2,2,1},{1,1,0}};
int request[3]={0,0,0};
int finish[a]={0,0,0,0,0};
int num;
while(1)
{
cout<<" 请输入进程序列号 :";
cin>>num;
num--;
cout<<" 请输入需要请示的资源序列 :";
cin>>request[0]>>request[1]>>request[2];
for(int i=0;i<3;i++)
{
if(request[i]<=Need[num][i]&&request[i]<=Available[i])
精彩文档
实用标准文案
continue;
else break;
}
if(i<3)
{
cout<<" 该进程阻塞 !"<<endl;
continue;
}
else
{
for(int j=0;j<3;j++)
{
Available[j]=Available[j]-request[j];
Alloc[num][j]=Alloc[num][j]+request[j];
Need[num][j]=Need[num][j]-request[j];
}
}
if(!Distribution_of_test(Available,Need,Alloc))
{
for(int j=0;j<3;j++)
{
Available[j]=Available[j]+request[j];
Alloc[num][j]=Alloc[num][j]-request[j];
Need[num][j]=Need[num][j]+request[j];
}
cout<<" 新状态不稳定 , 资源回收 "<<endl;
}
else cout<<" 新状态稳定 , 资源实际分配 !"<<endl;
}
}
请求序列如下:
进程 P2 请求资源( 0,3,4)b. 进程 P4 请求资源( 1,0,1)
进程 P1请求资源( 2, 0, 1)
进程 P3请求资源( 0, 0, 2)预期实验结果如下:
请输入进程序号 :2
请输入需要请求的资源序列 :0 3 4 该进程阻塞 !
请输入进程序号 :4
请输入需要请求的资源序列 :1 0 1 新状态稳定 , 资源实际分配 !
精彩文档
实用标准文案
请输入进程序号 :1
请输入需要请求的资源序列 :2 0 1
该进程阻塞 !
请输入进程序号 :3
请输入需要请求的资源序列 :0 0 2
新状态稳定 , 资源实际分配 !
该运行结果与实验预期结果相符 , 即实现了银行家算法!!!!
二:多级队列调度算法
实验目的:
了解进程高度算法的原理及物理变换;
掌握简单轮转调度算法和短程优先调度算法,并对两种算法的效率进行
简单分析
实验步骤:
设置好各种队列,两种算法均以链表作为调度队列,因为两种算法均只需要一个队列就能满足调度。
第一种算法的思想是采用的轮转调试, 第二种采用的是短进程优先算法,确定好算法步骤,进行输入测试。
3 设 RQ分为 RQ1和 RQ2,RQ1采用轮转法,时间 q=7.
精彩文档
实用标准文案
RQ1>RQ2,RQ2采用短进程优先调度
4、采取的数据结构
typedef struct tag_pcb
{
char name[8];
int need;
int turn;
struct tag_pcb *