页面置换算法

  • f8_184219
    了解作者
  • 487.5KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-26 11:44
    上传日期
这是模拟页面置换算法的程序,包括最佳算法、最近最少使用、先来先置换三重算法。
页面置换算法.zip
  • 页面置换算法
  • FIFO
  • Debug
  • vc60.pdb
    76KB
  • fifo.obj
    9.2KB
  • fifo.exe
    152.1KB
  • vc60.idb
    57KB
  • fifo.ilk
    158KB
  • fifo.pch
    1.6MB
  • fifo.pdb
    313KB
  • fifo.ncb
    33KB
  • fifo.cpp
    1.6KB
  • fifo.dsw
    531B
  • fifo.plg
    742B
  • fifo.dsp
    3.3KB
  • fifo.opt
    47.5KB
  • LRU
  • lru.cpp
    1.5KB
  • OPTIMAL
  • optimal.cpp
    1.8KB
内容介绍
#include <stdio.h> #include <vector> #include <algorithm rel='nofollow' onclick='return false;'> #define N 20 //页面数量 #define M 3 //内存缓冲区大小 #define MAX 99 //表示无穷大 int Input[N] = {7,0,1,2,0,3,0,4,2,3, 0,3,2,1,2,0,1,7,0,1}; int cnt = 0; //mem中页面数量 int flag = 0; //发生缺页中断 struct Page { int num; int next; }page[N], mem[M]; void Initpage() { for (int i = 0; i < 20; i++) { page[i].num = Input[i]; page[i].next = MAX; } for (i = 0; i < 20; i++) { for(int j = i+1; j < 20; ++j) { if (page[i].num == page[j].num) { page[i].next = j+1; break; } } } for (i = 0; i < M; i++) { mem[i].num = -1; mem[i].next = -1; } for (i = 0; i < 20; i++) { printf( "%3d ", page[i].num ); } printf("\n"); for (i = 0; i < 20; i++) { printf("%3d ", page[i].next); } printf("\n"); } int Inmem(int val) { for (int i = 0; i < cnt; i++) { if (mem[i].num == val) { return i; } } return -1; } int Replace() { for (int i = 0, j = 0; j < M; j++) { if ( mem[i].next < mem[j].next ) i = j; } return i; } void Print() { for(int i = 0; i < M; i++) { printf("%4d ", mem[i].num); } if (flag) { flag = 0; printf("*"); } printf("\n"); } ////////////////////////////////////////////// void Optimal() { Initpage(); int k = 0; for(int i = 0; i < N; i++) { if ((k=Inmem(page[i].num)) != -1) { //continue; mem[k] = page[i]; //i++; } else//不在mem中 { if (cnt < M) { mem[cnt] = page[i]; cnt++; } else //处理缺页中断 { int p = Replace(); mem[p] = page[i]; flag = 1; } } Print(); } } ////////////////////////////////////////////// int main(void) { Optimal(); return 0; }
评论