当前位置:   article > 正文

先进先出算法(c语言)——大三操作系统实验_先进先出算法流程图

先进先出算法流程图

目录

1.算法原理

2.实验要求

3.算法流程图

4.代码分析

 1.sort函数的构建

2.IN函数的构建

3.print函数的构建

4.主函数的构建

5.总代码

5.测试结果及其分析


1.算法原理

基本思想是淘汰最先进入内存的页面,即选择在内存驻留时间最长的页面予以淘汰。实现简单。按页面调入内存的先后链结为队列,设置一个替换指针,总是指向最先进入内存的页面。缺点在与进程实际运行规律不符,性能不好。

2.实验要求

在某请求分页管理系统中,作业执行时依次访问如下页面:1,4,3,1,2,5,1,4,2,1,4,5,分配给该作业的主存块数为3

3.算法流程图

4.代码分析

 1.sort函数的构建

  1. void sort(int a[3],int temp){//顶替内存的第一个页面,并排序
  2. a[0]=a[1];
  3. a[1]=a[2];
  4. a[2]=temp;
  5. }

输入为在内存中的三个页面以及即将要进入内存的页面,但这个页面和我们在main函数直接输入的页面不一样,因为这个页面是一定与内存中页面不相同的

索引值也相当于时间先后顺序,0为最先进入内存的

排序后a[1],a[2]都会前移,新来的temp放在最后

2.IN函数的构建

  1. int IN(int a[3],int temp){//找出即将进来的进程是否在内存的三个页面中
  2. int flag=0;
  3. for(int i=0;i<3;i++){
  4. if(a[i]==temp){
  5. flag=1;
  6. break;
  7. }
  8. }
  9. return flag;
  10. }

IN函数输入为内存的三个页面以及即将进入内存的页面,是为了判断内存页面中是否和它重复

如果重复,则flag置为1,否则不变,还是0,最后返回flag

3.print函数的构建

  1. void print(int a[3],int temp){
  2. if(IN(a,temp)==0){//如果即将进来的进程不在内存的三个页面中
  3. sort(a,temp);
  4. }
  5. cout<<"现在系统内的三个页面为:"<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
  6. }

print函数是总流程,输入为内存的三个页面以及即将进入内存的页面

调用了IN函数后,如果返回的为0,则说明没有重复的,那么temp就要进入内存的三个页面中,即执行sort函数,然后再输出

返回为1,就默认直接输出,因为并不改变内存里的三个页面。

4.主函数的构建

  1. int main(){
  2. int a[3],b[100],n;
  3. for(int i=0;i<3;i++){
  4. cout<<"请输入第"<<i<<"个页面:";
  5. cin>>a[i];
  6. }
  7. cout<<"现在系统内的三个页面为:"<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
  8. cout<<"请按时间先后顺序输入即将进入系统的页面数目:";
  9. cin>>n;
  10. for(int i=0;i<n;i++){
  11. cout<<"请输入要访问的页面:";
  12. cin>>b[i];
  13. print(a,b[i]);
  14. }
  15. }

数组a是内存中的三个页面,b是即将进入内存的页面,n是即将进入内存页面的数量

5.总代码

  1. #include<iostream>
  2. using namespace std;
  3. void sort(int a[3],int temp){//顶替内存的第一个页面,并排序
  4. a[0]=a[1];
  5. a[1]=a[2];
  6. a[2]=temp;
  7. }
  8. int IN(int a[3],int temp){//找出即将进来的进程是否在内存的三个页面中
  9. int flag=0;
  10. for(int i=0;i<3;i++){
  11. if(a[i]==temp){
  12. flag=1;
  13. break;
  14. }
  15. }
  16. return flag;
  17. }
  18. void print(int a[3],int temp){
  19. if(IN(a,temp)==0){//如果即将进来的进程不在内存的三个页面中
  20. sort(a,temp);
  21. }
  22. cout<<"现在系统内的三个页面为:"<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
  23. }
  24. int main(){
  25. int a[3],b[100],n;
  26. for(int i=0;i<3;i++){
  27. cout<<"请输入第"<<i<<"个页面:";
  28. cin>>a[i];
  29. }
  30. cout<<"现在系统内的三个页面为:"<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
  31. cout<<"请按时间先后顺序输入即将进入系统的页面数目:";
  32. cin>>n;
  33. for(int i=0;i<n;i++){
  34. cout<<"请输入要访问的页面:";
  35. cin>>b[i];
  36. print(a,b[i]);
  37. }
  38. }

5.测试结果及其分析

测试数据就用实验要求给出的

 测试结果分析

起始输入125142145
a[0]1143251114
a[1]4432514442
a[2]3325142225

最佳置换算法(C语言)——大三操作系统实验_西瓜妹妹的唯一男朋友的博客-CSDN博客

最近最久未使用页面置换算法(C语言)——大三操作系统实验_西瓜妹妹的唯一男朋友的博客-CSDN博客

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号