虚拟存储器管理实验
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://qq164587043.blog.51cto.com/261469/54323 |
晚上的时候,一哥们拿一个网上down的程序虚拟存储实验的程序,给我看。好简单的程序,只是没有什么注释,懒看。我这才明白,原来程序不加注释可以打击盗版啊
话又说过来了,我的程序(包含FIFO LRU 改进型的CLOCK)加起来就有300行,硬是压缩也有个200+行,学习啊。。。
我是用纯数组写的,之间一个指针没有用到,或许这就是原因所在吧。
反正也不知道源代码的出处何在,好了,保存到我的仓库吧。嘿嘿
=================================================================
#include <stdio.h>
#include <stdlib.h> #include <time.h> #define ap 12 #define pp 3 int page[ap] = {0}; //{2,3,2,1,5,2,4,5,3,2,5,2}; int pagecon[pp]; void total() { int i; time_t t; * srand((unsigned) time(&t)); for(i=0;i<ap;i++) { page[i]=(int)(8.0*rand()/(RAND_MAX+1.0) + 1); printf("%d ",page[i]); } printf("\n"); } void FIFO()
{ int count = 0; int bb[pp],*p=bb,array[ap][pp]; int i,j,k,t; k=0,t=0; for(i=0;i<pp;i++) bb[i]=pagecon[i]; for(i=0;i<ap;i++) { for(j=0;j<pp;j++) if(*(p+j)==page[i]) { break;} if(j==pp) {k=k%pp; *(p+k)=page[i]; count++; k++; for(j=0;j<pp;j++)array[t][j]=*(p+j); t++; } } for(i=0;i<pp;i++) { for(j=0;j<t;j++) printf("%d ",array[j][i]); printf("\n"); } printf("页面置换次数为:%d\n",count-pp); } void LRU() { int bb[pp],*p=bb,array[ap][pp]; int i,j,k,t,num,m; int count = 0; k=0,m=0; for(i=0;i<pp;i++) bb[i]=pagecon[i]; for(i=0;i<ap;i++) { num=i; for(j=0;j<pp;j++) if(*(p+j)==page[i])break; if(j==pp) { for(j=0;j<pp;j++) {for(k=i;k>=0;k--) if(*(p+j)==page[k]){if(num>k){num=k;t=j;} break; } if(k==-1){num=k;t=j;break;} } *(p+t)=page[i]; count++; for(j=0;j<pp;j++)array[m][j]=*(p+j);m++; } } for(i=0;i<pp;i++) { for(j=0;j<m;j++)printf("%d ",array[j][i]); printf("\n"); } printf("页面置换次数为:%d\n",count-pp); } int main() { printf("产生随机序列如下:\n"); // total(); printf("先进先出(FIFO)页面置换算法 \n"); FIFO(); printf("最近最久lru\n"); LRU(); system("PAUSE"); return 0; } 本文出自 “国产0与1” 博客,请务必保留此出处http://qq164587043.blog.51cto.com/261469/54323 本文出自 51CTO.COM技术博客 |


hello_world
博客统计信息
热门文章
最新评论
友情链接
