• PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 81
    下载次数
  • 2009-11-26 10:38
    上传日期
操作系统先进先出页面置换算法,可计算缺页数和缺页率。
os.rar
  • os.c
    3.1KB
内容介绍
/*FIFO算法*/ #include<stdio.h> #include<conio.h> #define M 4 #define N 17 #define Myprintf printf("|---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|\n") /*表格控制*/ typedef struct page { int num; /*记录页面号*/ int time; /*记录调入内存时间*/ }Page; /* 页面逻辑结构,结构为方便算法实现设计*/ Page b[M]; /*内存单元数*/ int c[M][N]; /*暂保存内存当前的状态:缓冲区*/ int queue[100]; /*记录调入队列*/ int K; /*调入队列计数变量*/ /*初始化内存单元、缓冲区*/ void Init(Page *b,int c[M][N]) { int i,j; for(i=0;i<N;i++) { b[i].num=-1; b[i].time=N-i-1; } for(i=0;i<M;i++) for(j=0;j<N;j++) c[i][j]=-1; } /*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/ int GetMax(Page *b) { int i; int max=-1; int tag=0; for(i=0;i<M;i++) { if(b[i].time>max) { max=b[i].time; tag=i; } } return tag; } /*判断页面是否已在内存中*/ int Equation(int fold,Page *b) { int i; for(i=0;i<M;i++) { if (fold==b[i].num) return i; } return -1; } /*LRU核心部分*/ void Lru(int fold,Page *b) { int i; int val; val=Equation(fold,b); if (val>=0) { b[val].time++;/*b[val].time=0;*/ for(i=0;i<M;i++) if (i!=val) b[i].time++; } else { queue[++K]=fold;/*记录调入页面*/ val=GetMax(b); b[val].num=fold; b[val].time=0; for(i=0;i<M;i++) if (i!=val) b[i].time++; } } /*主程序*/ void main() { int a[N]={3,2,6,5,8,7,4,5,2,3,6,2,9,5}; int i,j; start: K=-1; Init(b, c); for(i=0;i<N;i++) { Lru(a[i],b); c[0][i]=a[i]; /*记录当前的内存单元中的页面*/ for(j=0;j<M;j++) c[j][i]=b[j].num; } /*结果输出*/ printf("内存状态为:\n"); Myprintf; for(j=0;j<N;j++) printf("|%2d ",a[j]); printf("|\n"); Myprintf; for(i=0;i<M;i++) { for(j=0;j<N;j++) { if(c[i][j]==-1) printf("|%2c ",32); else printf("|%2d ",c[i][j]); } printf("|\n"); } Myprintf; printf("\n调入队列为:"); for(i=0;i<K+1;i++) printf("%3d",queue[i]); printf("\n缺页次数为:%6d\n缺页率:%16.6f",K+1,(float)(K+1)/N); printf("\nAre you continuing!\ty?"); if(getche()=='y') goto start; }
评论
    相关推荐
    • 页面置换算法
      设计和实现最佳置换算法、随机置换算法、先进先出置换算法、最近最久未使用置换算法、简单Clock置换算法及改进型Clock置换算法;通过支持页面访问序列随机发生实现有关算法的测试及性能比较。 各算法见课本4.8节
    • 页面置换算法
      页面置换算饭,模拟计算机的页面置换过程,通过页面走向模拟真实的缺页中断的过程,实现缺页中断响应。
    • 页面置换算法
      《计算机与操作系统(第四版)》页面置换算法。先进先出(FIFO),最近最久未使用(LRU)算法
    • 页面置换算法
      页面置换算法:先进先出置换算法,最佳置换算法,最近最久未使用算法,最少使用算法。
    • 页面置换算法
      若干个页面置换算法,有先进先出置换算法,clock置换算法等。
    • 页面置换算法
      模拟页面置换算法,通过随机产生序列对其用FIFO LRU LFU OPT进行置换并输出置换结果
    • 页面置换算法
      操作系统页面置换算法的实现,包括最先适应算法、最佳适应算法、最差适应算法、循环适应算法,很适于操作系统实验。
    • 页面置换算法
      页面置换算法,,是可视化的,,模拟,,用的是c++语言。。
    • 页面置换算法
      使用简单的图形化界面展示了FIFO、LRU、SC、Clock四种页面置换算法的运行结果,可以接受任意长度的作业序列,并统计缺页中断次数以及缺页中断率。
    • 页面置换算法
      这是模拟页面置换算法的程序,包括最佳算法、最近最少使用、先来先置换三重算法。