关于操作系统原理的问题3-4

3.假设有一组作业,它们的提交时间及运行时间如下表示所,在单道程序管理系统中,采用高响应比优先调度算法,请给出调度顺序,各作业的周转时间,并计算出平均周转时间和平均带权周转时间(按十进制计算)。
作业号 提交时间 运行时间
1 10 0.50
2 10.20 0.30
3 10.30 0.10
4 10.50 0.20

6. 有两类资源A和B,A类资源10个,B类资源14个,当前系统的资源分配情况如下表所示。根据分配表,回答下面的问题:
(1) 请填写系统的需求矩阵
(2) 根据银行家算法分析,当前状态是否是不安全状态?如果是安全的,请给出安全序列.
(3) 当这是P0请求资源,请求向量Request(0,2),是否分配资源给进程P0呢?说明理由.

进程 Allocation Max Need Available
A B A B A B A B

P0 2 0 2 4 2 7

P1 3 2 10 2

P2 1 4 5 4

P3 2 1 3 1

P4 0 0 4 2
那位老大帮帮忙,急用啊!
分不多,不过已经是我所有的分了。
谢谢哪!
第一个不用写了!!!!

呵呵.之前我做过.是第6的银行家算法

#include<iostream.h>
#include<string.h>
#include<stdio.h>
#define False 0
#define True 1
int Max[100][100]={0};//各进程所需各类资源的最大需求
int Avaliable[100]={0};//系统可用资源
char name[100]={0};//资源的名称
int Allocation[100][100]={0};//系统已分配资源
int Need[100][100]={0};//还需要资源
int Request[100]={0};//请求资源向量
int temp[100]={0};//存放安全序列
int Work[100]={0};//存放系统可提供资源
int M=100;//作业的最大数为100
int N=100;//资源的最大数为100
void showdata()//显示资源矩阵
{
int i,j;
cout<<"系统目前可用的资源[Avaliable]:"<<endl;
for(i=0;i<N;i++)
cout<<name[i]<<" ";
cout<<endl;
for (j=0;j<N;j++)
cout<<Avaliable[j]<<" ";//输出分配资源
cout<<endl;
cout<<" Max Allocation Need"<<endl;
cout<<"进程名 ";
for(j=0;j<3;j++){
for(i=0;i<N;i++)
cout<<name[i]<<" ";
cout<<" ";
}
cout<<endl;
for(i=0;i<M;i++){
cout<<" "<<i<<" ";
for(j=0;j<N;j++)
cout<<Max[i][j]<<" ";
cout<<" ";
for(j=0;j<N;j++)
cout<<Allocation[i][j]<<" ";
cout<<" ";
for(j=0;j<N;j++)
cout<<Need[i][j]<<" ";
cout<<endl;
}
}

int changdata(int i)//进行资源分配
{
int j;
for (j=0;j<M;j++) {
Avaliable[j]=Avaliable[j]-Request[j];
Allocation[i][j]=Allocation[i][j]+Request[j];
Need[i][j]=Need[i][j]-Request[j];
}
return 1;
}
int safe()//安全性算法
{
int i,k=0,m,apply,Finish[100]={0};
int j;
int flag=0;
Work[0]=Avaliable[0];
Work[1]=Avaliable[1];
Work[2]=Avaliable[2];
for(i=0;i<M;i++){
apply=0;
for(j=0;j<N;j++){
if (Finish[i]==False&&Need[i][j]<=Work[j]){
apply++;
if(apply==N){
for(m=0;m<N;m++)
Work[m]=Work[m]+Allocation[i][m];//变分配数
Finish[i]=True;
temp[k]=i;
i=-1;
k++;
flag++;
}
}
}
}
for(i=0;i<M;i++){
if(Finish[i]==False){
cout<<"系统不安全"<<endl;//不成功系统不安全
return -1;
}
}
cout<<"系统是安全的!"<<endl;//如果安全,输出成功
cout<<"分配的序列:";
for(i=0;i<M;i++){//输出运行进程数组
cout<<temp[i];
if(i<M-1) cout<<"->";
}
cout<<endl;
return 0;
}
void share()//利用银行家算法对申请资源对进行判定
{
char ch;
int i=0,j=0;
ch='y';
cout<<"请输入要求分配的资源进程号(0-"<<M-1<<"):";
cin>>i;//输入须申请的资源号
cout<<"请输入进程 "<<i<<" 申请的资源:"<<endl;
for(j=0;j<N;j++)
{
cout<<name[j]<<":";
cin>>Request[j];//输入需要申请的资源
}
for (j=0;j<N;j++){
if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错
{
cout<<"进程 "<<i<<"申请的资源大于它需要的资源";
cout<<" 分配不合理,不予分配!"<<endl;
ch='n';
break;
}
else {
if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则
{ //出错
cout<<"进程"<<i<<"申请的资源大于系统现在可利用的资源";
cout<<" 分配出错,不予分配!"<<endl;
ch='n';
break;
}
}
}
if(ch=='y') {
changdata(i);//根据进程需求量变换资源
showdata();//根据进程需求量显示变换后的资源
safe();//根据进程需求量进行银行家算法判断
}
}
void addresources(){//添加资源
int n,flag;
cout<<"请输入需要添加资源种类的数量:";
cin>>n;
flag=N;
N=N+n;
for(int i=0;i<n;i++){
cout<<"名称:";
cin>>name[flag];
cout<<"数量:";
cin>>Avaliable[flag++];
}
showdata();
safe();
}
void delresources(){//删除资源
char ming;
int i,flag=1;
cout<<"请输入需要删除的资源名称:";
do{
cin>>ming;
for(i=0;i<N;i++)
if(ming==name[i]){
flag=0;
break;
}
if(i==N)
cout<<"该资源名称不存在,请重新输入:";
}
while(flag);
for(int j=i;j<N-1;j++)
{
name[j]=name[j+1];
Avaliable[j]=Avaliable[j+1];

}
N=N-1;
showdata();
safe();
}
void changeresources(){//修改资源函数
cout<<"系统目前可用的资源[Avaliable]:"<<endl;
for(int i=0;i<N;i++)
cout<<name[i]<<":"<<Avaliable[i]<<endl;
cout<<"输入系统可用资源[Avaliable]:"<<endl;
cin>>Avaliable[0]>>Avaliable[1]>>Avaliable[2];
cout<<"经修改后的系统可用资源为"<<endl;
for (int k=0;k<N;k++)
cout<<name[k]<<":"<<Avaliable[k]<<endl;
showdata();
safe();
}
void addprocess(){//添加作业
int flag=M;
M=M+1;
cout<<"请输入该作业的最打需求量[Max]"<<endl;
for(int i=0;i<N;i++){
cout<<name[i]<<":";
cin>>Max[flag][i];
Need[flag][i]=Max[flag][i]-Allocation[flag][i];
}
showdata();
safe();
}
int main()//主函数
{

int i,j,number,choice,m,n,flag;
char ming;
cout<<"*****************资源管理系统的设计与实现*****************"<<endl;
cout<<"请首先输入系统可供资源种类的数量:";
cin>>n;
N=n;
for(i=0;i<n;i++)
{
cout<<"资源"<<i+1<<"的名称:";
cin>>ming;
name[i]=ming;
cout<<"资源的数量:";
cin>>number;
Avaliable[i]=number;
}
cout<<endl;
cout<<"请输入作业的数量:";
cin>>m;
M=m;
cout<<"请输入各进程的最大需求量("<<m<<"*"<<n<<"矩阵)[Max]:"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>Max[i][j];
do{
flag=0;
cout<<"请输入各进程已经申请的资源量("<<m<<"*"<<n<<"矩阵)[Allocation]:"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++){
cin>>Allocation[i][j];
if(Allocation[i][j]>Max[i][j])
flag=1;
Need[i][j]=Max[i][j]-Allocation[i][j];
}
if(flag)
cout<<"申请的资源大于最大需求量,请重新输入!\n";
}
while(flag);

showdata();//显示各种资源
safe();//用银行家算法判定系统是否安全
while(choice)
{
cout<<"**************银行家算法演示***************"<<endl;
cout<<" 1:增加资源 "<<endl;
cout<<" 2:删除资源 "<<endl;
cout<<" 3:修改资源 "<<endl;
cout<<" 4:分配资源 "<<endl;
cout<<" 5:增加作业 "<<endl;
cout<<" 0:离开 "<<endl;
cout<<"*******************************************"<<endl;
cout<<"请选择功能号:";
cin>>choice;
switch(choice)
{
case 1: addresources();break;
case 2: delresources();break;
case 3: changeresources();break;
case 4: share();break;
case 5: addprocess();break;
case 0: choice=0;break;
default: cout<<"请正确选择功能号(0-5)!"<<endl;break;
}
}
return 1;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-23
1212121

高手来,操作系统原理
1、设计实时系统首先要考虑的是如何提高系统的资源利用率。(×)2、操作系统的主要目的是管理系统资源和控制程序执行以及为用户提供方便的使用接口。(√)3、多道批处理系统是指那些系统中有多个CPU同时处理作业的系统。(×)4、Windows98具有很好的Internet网络应用功能,所以Windows98是网络操作系统。(...

操作系统原理与应用之 页面调度算法问题
1,2,3,6(缺页中断)2,3,6,4(缺页中断,1最久没用过,淘汰)3,6,4,7(缺页中断,2最久没用过,淘汰)3在主存中,不中断,3最近使用过,主存中顺序调整为6,4,7,3 4,7,3,2(缺页中断,6最久没用过,淘汰)7,3,2,1(缺页中断,4最久没用过,淘汰)3,2,1,4(缺页中断,...

怎样使用电驴
首先,线程一多,cpu的占用率就高,换页动作也就频繁,从而虚拟内存读写频繁,至于为什么,学过操作系统原理的应该都知道,我这里就不说了。ED呢?同时从几个人那里下载一个文件,还有几个人同时在下载你的文件,这和FG开多线程是类似的。所以硬盘灯猛闪。但是,现在的硬盘是有缓存的,数据不是马上就写到硬盘上,而是先存...

《操作系统原理》 设计现代OS的主要目标是什么? 方便性,有效性,可扩充...
三. 程序并发执行为何会失去封闭性和可再现性?程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。同时由于失去了封闭性,也将导致其再失去可再现性。程序在并发执行时,由于失去了封闭性,程序经过多次执行后,其计算机结果已与并发...

追加200 求计算机网络课程设计
设计4:利用双网卡主机实现路由功能 首先保证主机有两块网卡,一块连接你的“猫”,一块连接副机,然后进入到副机电脑的Windows XP的“网络邻居”中,点选“设置家庭或小型办公网络”,这时要确定主机电脑和副机已连接好,点两下“下一步”,会出现三个选项,选择第二项,继续点“下一步”,在“...

408操作系统考研大纲
3.能够运用所学的操作系统原理、方法与技术分析问题和解决问题,并能利 用 C 语言描述相关算法。一、操作系统概述 (一)操作系统的基本概念 (二)操作系统的发展 (三)程序运行环境 1. CPU 运行模式 内核模式,用户模式。 2.中断和异常的处理 3.系统调用 4.程序的链接与装入 5.程序运行时内存映像与...

2022年山东大学“849-软件工程专业基础综合”考哪些内容?
3.能够运用所学的操作系统原理、方法和技术对相关问题进行分析和解决。 二、考试的内容 1.导论 1)操作系统的概念 2)计算机系统的操作、存储结构、输入输出结构和计算机系统的体系结构。 3)操作系统的结构组成、操作系统的操作及各部分的功能、高速缓冲存储器CACHE 4)操作系统的分类和运行环境 2.操作系统结构 1)操...

国家公务员考试银监会的职位除了考行测和申论以外附加的一门科目叫...
2、操作系统原理3、网络基础知识4、数据通信协议5、数据结构6、数据库系统7、程序设计语言8、多媒体基础知识 2014年度考试录用中国证监会参照公务员法管理事业单位工作人员专业科目考试大纲(会计类) 一、考试目的考查考生是否具备证券期货监管工作所必需的会计专业知识和相关知识的应用能力。二、考试内容与试卷结构考试形式...

dcs操作工
DCS是化工厂的自动控制系统,根据采集现场仪表(温度、压力、流量、液位等)的信号,做出判断,输出信号对管道的阀门进行控制,可以人工给值进行阀门控制。一般化工厂的操作工分现场和DCS控制室两部分,现场的主要是巡检,打开手动阀门,查看状态等工作,控制室的人员就是设置工艺的参数,对整个装置进行监控,...

计算机数学基础知识
是计算机基础教育的入门课程。主要讲授计算机的基础知识及计算机的组成原理,计算机操作系统(Windows和Dos)的概念和操作,Office办公软件Word 、Excel、PowerPoint的使用,计算机网络的基础知识以及Internet的常用操作。3、C语言程序设计 计算机程序设计的基础知识、C语言的基本概念、顺序结构程序设计、分支结构程序...

相似回答