操作系统实验_lru
来源:互联网 发布:python twisted过时 编辑:程序博客网 时间:2024/06/14 22:34
#include<stdio.h>static int stack_0_Size,currentIndex;//内存分配大小stack_1_Size,输出序列的大小int stack_1_Size=5,currentSize=0;//定义输入序列stack_0和内存stack_1int stack_0[50],stack_1[5];void lru(int a[],int b);void init(){printf("请输入页表的个数:");scanf("%d",&stack_0_Size);printf("请输页号:");for(currentIndex=0;currentIndex<stack_0_Size;currentIndex++){scanf("%d",&stack_0[currentIndex]);}printf("您的页号为:");for(currentIndex=0;currentIndex<stack_0_Size;currentIndex++){printf("%d\t",stack_0[currentIndex]);}printf("\n");printf("分配结果为:");printf("\n");lru(stack_0,stack_1_Size);}void lru(int a[],int b){ int flag=0; int tem,i,j; printf("stack_0是:"); for(i=0;i<stack_0_Size;i++) { printf("%d\t",stack_0[i]); } printf("\n"); for(currentIndex=0;currentIndex<stack_0_Size;currentIndex++) { tem=stack_0[currentIndex]; //输出序列的长度逐渐增大 currentSize++; //printf("tem:%d,currentIndex:%d,stack_1_Size:%d",tem,currentIndex,stack_1_Size); for(i=0;i<stack_1_Size;i++) { if(tem==stack_1[i]) { for(j=i;j>0;j--) { stack_1[j]=stack_1[j-1]; } stack_1[0]=tem; flag=0; //每次命中后调换顺序,整个输出序列保持不变 currentSize--; printf("currentSize:%d\n",currentSize); for(i=0;i<currentSize;i++) { printf("%d\t",stack_1[i]); } printf("\n"); break; } else { flag=1; } } printf("currentSize:%d\n",currentSize); while(flag) { if(currentSize<stack_1_Size) { for(i=currentSize;i>0;i--) { stack_1[i]=stack_1[i-1]; } stack_1[0]=tem; for(i=0;i<currentSize;i++) { printf("%d\t",stack_1[i]); } printf("\n"); break; } else { //printf("5不小于5"); for(i=stack_1_Size-1;i>0;i--) { stack_1[i]=stack_1[i-1]; } stack_1[0]=tem; for(i=0;i<stack_1_Size;i++) { printf("%d\t",stack_1[i]); } printf("\n"); break; } } }}int main(){ int g;init();return 0;}