请求分页存储管理(虚拟存储)
- 格式:docx
- 大小:88.26 KB
- 文档页数:12
任务四、请求分页存储管理(虚拟存储)一、实验目的
通过请求分页存储管理的设计,让学生了解虚拟存储器的概念和实现方法。进行运行时不需要将所有的页面都调入内存,只需将部分调入内存,即可运行,在运行的过程中若要访问的页面不在内存时,则需求有请求调入的功能将其调入。假如此时若内存没有空白物理块,则通过页面置换的功能将一个老的不用的页面淘汰出来,其中淘汰的算法有多种。
二、实验内容
模拟仿真请求分页调度算法,其中淘汰的算法可选下列其一
1、先进先出算法
2、最近最久算法
3、CLOCK算法
三、实验代码
#include
#include
using namespace std;
int n;
typedef struct Queue{
int time;
int data;
struct Queue *next;
}Queue,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//fifo=======================================
void InitQueue(LinkQueue &Q);
void FiFoEnQueueRear(LinkQueue &Q,int e,vector
void FiFoDeQueueFront(LinkQueue &Q);
inline void PrintQueue(LinkQueue &Q);
void FiFoFiFoDoQueueEarly(LinkQueue &Q,int a,vector
void FiFoDoQueue(LinkQueue &Q,int a,vector
inline int PanDuan(LinkQueue &Q,int a);
inline int YeMianCount(LinkQueue &Q);
void fifo();
//lru=============================================
void InitQueue(LinkQueue &Q);
void EnQueueMid(LinkQueue &Q,int e,QueuePtr p,vector
void EnQueueTheFist(LinkQueue &Q,int e);
void PrintQueue(LinkQueue &Q);
//void ZhiZhenInit(int n);
void DoQueueEarly(LinkQueue &Q,int e,vector
void EnQueueRear(LinkQueue &Q,int e,QueuePtr p,vector
//void DeQueueFront(LinkQueue &Q);
QueuePtr ZhiZhen(LinkQueue &Q,int e);
void EnQueue(LinkQueue &Q,int e,vector
//void DeQueue(LinkQueue &Q,QueuePtr p);
int PanDuan(LinkQueue &Q,int a);
int YeMianCount(LinkQueue &Q);
void lru();
QueuePtr OptimalZhiZhen(LinkQueue &Q,int e);//求出需要置换的页面的上一个页面的位置
void EnQueue(LinkQueue &Q,int e,vector
inline int YeMianCount(LinkQueue &Q);//使用内敛函数,提高性能
inline int Destance(vector
inline void SubbDestance(LinkQueue &Q);
//=================================================
int main(){
int k;
for(;;)
{
cout<<"请选择!"< cout<<"1——FiFo算法"< cout<<"2——LRU算法"< cout<<"0——退出"< cin>>k; if(k==0) break; else{ switch(k) { case 1:fifo();break; case 2:lru();break; default:cout<<" 请从以上的选择中选择一个选项!!"< } } } } //fifo======================================== void InitQueue(LinkQueue &Q){ Q.front=Q.rear=(QueuePtr)malloc(sizeof(Queue)); if(!Q.front) cout<<"initqueue worng!"<