问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求先来先服务调度算法的源代码,C/C++版的都行,尽量短啊!!!能调试的

发布网友 发布时间:2022-05-04 15:07

我来回答

1个回答

热心网友 时间:2023-10-23 06:10

//FIFO
#include<iostream>
using namespace std;
int pagenum=0; ///内存的页面数
int total=0; ///要访问的叶面总数
int lacknumber=0; ///缺页的总数
void main()
{
int array[20]; //生成一个内存空间并进行分配,且初始化为空-1,不用0去初始化,是因为等待序列初始化是0
for(int x=0;x<20;x++)
{
array[x]=-1;
}
int seque[20]={0};//生成一个虚拟空间初始化为空,即等待队列
cout<<"请输入内存的页面数:";
cin>>pagenum;
cout<<"请输入页面的访问顺序(输入-1结束):";
//输入的页面访问序列,进入等待队列
for(int i=0;i<20;i++)
{
int num;
cin>>num;
if(num!=-1)
{
seque[i]=num;
total++;//计算总的进程数
}
else
{
seque[i]=num;
break;
}
}
cout<<"总的页面数为"<<total<<endl;//总的页面数
cout<<"---------进入FIFO页面调度----------------"<<endl;
int j=0;
for(i=0;i<pagenum;i++) //刚开始置换前pagenum个空页面
{
//刚开始,不存在内存中的,都算缺页
if(i<pagenum & array[i] != seque[i])
{
array[i]=seque[i];
cout<<"页面"<<seque[i]<<"进入内存"<<endl;
cout<<"缺页! 此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<"(-1代表没有内容)"<<endl;
}
cout<<endl;
}
//队列和进入页表内容比较
int kk=0;
for(i=pagenum;i<total;i++)//假如说分了三个内存页,从此开始三个内存页已被占满,就要考虑命中或替换了
{
int flag=0;//作为标志,如果=0说明不存在,则要进行替换,反之命中
for(int k=0;k<pagenum;k++)//此for循环实现的是把要进入内存的页和内存页中的数比较,看是否有
{ //若有则把flag置成1 。

if(array[k]==seque[i])
{
flag=1; //存在
break;
}
}
cout<<endl;
if(flag==1)//利用flag标志判断,若等于1则说明有,就不用替换了,
{
cout<<"页面"<<seque[i]<<"进入内存,命中!"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}

}
cout<<endl;
if(flag==0)//另一种就是内存没有的情况了,就要把最先进的弹出
{
int tem=array[kk];//kk初始值为0,说明是内存分配页的那个数组,把数组的第一个,也就是0要单元的那个数替换
array[kk]=seque[i];
cout<<"页面"<<seque[i]<<"进入内存"<<endl;
cout<<"缺页!页面"<<tem<<"被替换"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<endl;
kk++; //kk++意思是:假如分配内存三个页面,每次进行kk++说明有一个要进入内存页中,刚开始kk=0,指内存页的第一个
//内存页,也就是最先进来的那个页被替换了,+1说明要把原来在数组二号中的数替换,+1说明要替换第三个了,
//而内存页也就三页,当下次再替换的时候就要替换第四页除以3的余了,而余就是0,也就是下边kk==pagenum把
//kk置0了。
lacknumber++; //缺页数
if(kk==pagenum)
{
kk=0;
}
}
}
lacknumber=pagenum+lacknumber;

cout<<"缺页率="<<lacknumber<<"/"<<total<<"="<<float(lacknumber)/float(total)<<endl;
}

热心网友 时间:2023-10-23 06:10

//FIFO
#include<iostream>
using namespace std;
int pagenum=0; ///内存的页面数
int total=0; ///要访问的叶面总数
int lacknumber=0; ///缺页的总数
void main()
{
int array[20]; //生成一个内存空间并进行分配,且初始化为空-1,不用0去初始化,是因为等待序列初始化是0
for(int x=0;x<20;x++)
{
array[x]=-1;
}
int seque[20]={0};//生成一个虚拟空间初始化为空,即等待队列
cout<<"请输入内存的页面数:";
cin>>pagenum;
cout<<"请输入页面的访问顺序(输入-1结束):";
//输入的页面访问序列,进入等待队列
for(int i=0;i<20;i++)
{
int num;
cin>>num;
if(num!=-1)
{
seque[i]=num;
total++;//计算总的进程数
}
else
{
seque[i]=num;
break;
}
}
cout<<"总的页面数为"<<total<<endl;//总的页面数
cout<<"---------进入FIFO页面调度----------------"<<endl;
int j=0;
for(i=0;i<pagenum;i++) //刚开始置换前pagenum个空页面
{
//刚开始,不存在内存中的,都算缺页
if(i<pagenum & array[i] != seque[i])
{
array[i]=seque[i];
cout<<"页面"<<seque[i]<<"进入内存"<<endl;
cout<<"缺页! 此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<"(-1代表没有内容)"<<endl;
}
cout<<endl;
}
//队列和进入页表内容比较
int kk=0;
for(i=pagenum;i<total;i++)//假如说分了三个内存页,从此开始三个内存页已被占满,就要考虑命中或替换了
{
int flag=0;//作为标志,如果=0说明不存在,则要进行替换,反之命中
for(int k=0;k<pagenum;k++)//此for循环实现的是把要进入内存的页和内存页中的数比较,看是否有
{ //若有则把flag置成1 。

if(array[k]==seque[i])
{
flag=1; //存在
break;
}
}
cout<<endl;
if(flag==1)//利用flag标志判断,若等于1则说明有,就不用替换了,
{
cout<<"页面"<<seque[i]<<"进入内存,命中!"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}

}
cout<<endl;
if(flag==0)//另一种就是内存没有的情况了,就要把最先进的弹出
{
int tem=array[kk];//kk初始值为0,说明是内存分配页的那个数组,把数组的第一个,也就是0要单元的那个数替换
array[kk]=seque[i];
cout<<"页面"<<seque[i]<<"进入内存"<<endl;
cout<<"缺页!页面"<<tem<<"被替换"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<endl;
kk++; //kk++意思是:假如分配内存三个页面,每次进行kk++说明有一个要进入内存页中,刚开始kk=0,指内存页的第一个
//内存页,也就是最先进来的那个页被替换了,+1说明要把原来在数组二号中的数替换,+1说明要替换第三个了,
//而内存页也就三页,当下次再替换的时候就要替换第四页除以3的余了,而余就是0,也就是下边kk==pagenum把
//kk置0了。
lacknumber++; //缺页数
if(kk==pagenum)
{
kk=0;
}
}
}
lacknumber=pagenum+lacknumber;

cout<<"缺页率="<<lacknumber<<"/"<<total<<"="<<float(lacknumber)/float(total)<<endl;
}

热心网友 时间:2023-10-23 06:10

//FIFO
#include<iostream>
using namespace std;
int pagenum=0; ///内存的页面数
int total=0; ///要访问的叶面总数
int lacknumber=0; ///缺页的总数
void main()
{
int array[20]; //生成一个内存空间并进行分配,且初始化为空-1,不用0去初始化,是因为等待序列初始化是0
for(int x=0;x<20;x++)
{
array[x]=-1;
}
int seque[20]={0};//生成一个虚拟空间初始化为空,即等待队列
cout<<"请输入内存的页面数:";
cin>>pagenum;
cout<<"请输入页面的访问顺序(输入-1结束):";
//输入的页面访问序列,进入等待队列
for(int i=0;i<20;i++)
{
int num;
cin>>num;
if(num!=-1)
{
seque[i]=num;
total++;//计算总的进程数
}
else
{
seque[i]=num;
break;
}
}
cout<<"总的页面数为"<<total<<endl;//总的页面数
cout<<"---------进入FIFO页面调度----------------"<<endl;
int j=0;
for(i=0;i<pagenum;i++) //刚开始置换前pagenum个空页面
{
//刚开始,不存在内存中的,都算缺页
if(i<pagenum & array[i] != seque[i])
{
array[i]=seque[i];
cout<<"页面"<<seque[i]<<"进入内存"<<endl;
cout<<"缺页! 此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<"(-1代表没有内容)"<<endl;
}
cout<<endl;
}
//队列和进入页表内容比较
int kk=0;
for(i=pagenum;i<total;i++)//假如说分了三个内存页,从此开始三个内存页已被占满,就要考虑命中或替换了
{
int flag=0;//作为标志,如果=0说明不存在,则要进行替换,反之命中
for(int k=0;k<pagenum;k++)//此for循环实现的是把要进入内存的页和内存页中的数比较,看是否有
{ //若有则把flag置成1 。

if(array[k]==seque[i])
{
flag=1; //存在
break;
}
}
cout<<endl;
if(flag==1)//利用flag标志判断,若等于1则说明有,就不用替换了,
{
cout<<"页面"<<seque[i]<<"进入内存,命中!"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}

}
cout<<endl;
if(flag==0)//另一种就是内存没有的情况了,就要把最先进的弹出
{
int tem=array[kk];//kk初始值为0,说明是内存分配页的那个数组,把数组的第一个,也就是0要单元的那个数替换
array[kk]=seque[i];
cout<<"页面"<<seque[i]<<"进入内存"<<endl;
cout<<"缺页!页面"<<tem<<"被替换"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<endl;
kk++; //kk++意思是:假如分配内存三个页面,每次进行kk++说明有一个要进入内存页中,刚开始kk=0,指内存页的第一个
//内存页,也就是最先进来的那个页被替换了,+1说明要把原来在数组二号中的数替换,+1说明要替换第三个了,
//而内存页也就三页,当下次再替换的时候就要替换第四页除以3的余了,而余就是0,也就是下边kk==pagenum把
//kk置0了。
lacknumber++; //缺页数
if(kk==pagenum)
{
kk=0;
}
}
}
lacknumber=pagenum+lacknumber;

cout<<"缺页率="<<lacknumber<<"/"<<total<<"="<<float(lacknumber)/float(total)<<endl;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
福建武平绿茶荣获中国驰名商标称号 福建武平:采茶节打响“武平绿茶”采茶制茶DIY 武平绿茶荣获中国驰名商标称号 武平绿茶名茶 在电脑上怎么区分哪个是固态电脑上加装了固态硬盘 电脑下东西怎么分哪个是固态电脑里哪个盘是固态硬盘哪个是机械硬盘 怎么查电脑上硬盘是固态还是机械电脑简单查看固态硬盘和机械硬盘的方... 区分电脑是固态和机械硬盘买电脑时如何辨别是固态硬盘还是机械硬盘求 ... 电脑哪个硬盘是固态的电脑里哪个盘是固态硬盘哪个是机械硬盘 电脑固态硬盘和机械硬盘的区别怎么区别电脑上的固态硬盘和机械硬盘 这道c语言题错在哪里了 求编程模拟进程调度算法,c语言版,要求用先来先服务。 用c语言实现先到先处理和最短路径优先的cpu调度算法 先来先服务算法(C语言版) 电视剧《亲爱的热爱的》第一次播放是在什么时候? 电视剧《亲爱的热爱的》为何会爆火? 《亲爱的,热爱的》这部甜剧,它的优缺点各是什么呢? 《亲爱的热爱的》成年度热剧,剧情为何得到共鸣? 《亲爱的热爱的》开播,这部剧为何能刚开播就这么火爆? 电视剧《亲爱的、热爱的》和电影《亲爱的》有什么关系吗? 东方卫视和浙江卫视为争《热爱的》收视,都出什么招数? 亲爱的热爱的怎么投屏 抖音剪辑哪里学才靠谱? 想学抖音运营,哪个老师会靠谱些呢? 抖音培训哪家机构还不错? 学抖音编导哪家靠谱?星互教育培训可以吗? 抖音电商培训机构有哪些?哪家比较好? 东莞大朗抖音培训学校哪家好? 戴尔笔记本 开机密码忘记怎么办 微信为什么上不去?就是我的手机号,为什么登录失败 “银行家算法程序,先来先服务调度算法,存储管理的模拟实现” 哪位大神用先来先服务调度,求周转时间和平均周转时间来帮我编程 用c++实现先到先服务算法、时间片轮转法、优先数调度算法、多级队列调度算法 作业调度算法的先来先服务 先来先服务调度算法的思想是什么 急求一用C语言编写的(先来先服务)《进程调度算法》的可以运行的代码!! 用c\c++设计一个按先来先服务算法调度的模拟程序 unix系统中进程调度采用() A先来先服务 B时间片轮转法 C 短作业优先法 D多级反馈队列轮转法 手机关机时如果有来电怎样设置提醒? 手机关机时的来电信息不会显示,所以我开机后都不知道哪些人打过我的电话,这个怎么设置啊? 宏业计价软件导出,导出下面的东西要导哪些表 鞍山市自然人退休怎么办,医保最低交几年,社保 鞍山农村合作医疗每个人交多少保费2020年? 朗逸EPC和蓄电池灯亮, 打不着火 如何选择台式机电源 选购电脑电源的四个要点 光伏电站送电前需要检查哪些内容,以及如何送电 太阳能光伏电站进线的停送电顺序是什么 光伏发电的程序流程图 光伏发电系统中的集中式发电方式的概念 光伏电站在送电前应该注意哪些事项