内存管理-请求调页
FIFO
利用vector存储用户输入的页面号
利用queue存储内存中的页面号
1 /********************************************************************** 2 * 3 * File : memoryManageFIFO.cpp 4 * Author : 阿Q 5 * Time : 2016.13.6 6 * 7 **********************************************************************/ 8 #include<stdio.h> 9 #include<vector>//存储用户输入的页面号 10 #include<queue>//记录内存块FIFO 11 using namespace std; 12 13 queue<int> memoryBlock; //内存块队列 14 int memorySize=0; //内存块的大小 15 16 //扫描该页是否在内存块中 17 int scanMemoryBlock(const int a) { 18 int i=0; 19 queue<int> temQue=memoryBlock; 20 for(; i<memoryBlock.size(); i++) { 21 if(a==temQue.front()) { 22 return 0; 23 } 24 temQue.pop(); 25 } 26 return 1; 27 } 28 29 //显示内存块中的页面号 30 void displayMemoryBlock() { 31 int i=0; 32 queue<int> temQue=memoryBlock; 33 int tem=memoryBlock.size()<=memorySize?memoryBlock.size():memorySize; 34 printf("内存中的页:"); 35 for(; i<tem; i++) { 36 printf("%d ",temQue.front()); 37 temQue.pop(); 38 } 39 printf("\n\n"); 40 } 41 42 int main() { 43 vector<int> vec; 44 int cut,i=0,tem; 45 printf("请输入要请求的页数目:"); 46 scanf("%d",&cut); 47 printf("\n请输入内存块的个数:"); 48 scanf("%d",&memorySize); 49 printf("\n请依次输入请求的页号(以空格隔开):"); 50 for(i=0; i<cut; i++) { 51 scanf("%d",&tem); 52 vec.push_back(tem); 53 } 54 55 for(i=0; i<cut; i++) { 56 if(scanMemoryBlock(vec[i])) { //内存块中是否有该页 57 printf(" 请求调页:%d\n",vec[i]); 58 if(memoryBlock.size()<memorySize) { //是否有空余的内存空间 59 memoryBlock.push(vec[i]); 60 } else { 61 memoryBlock.pop(); 62 memoryBlock.push(vec[i]); 63 } 64 } else { 65 printf(" 该页存在:%d\n",vec[i]); 66 } 67 displayMemoryBlock(); 68 } 69 return 0; 70 }
LUR留坑,看到室友从网上找的代码,写的真烂。。。明天考试,祝我顺利,晚安~16.12.12 22:52