请求分页存储管理(虚拟存储)

  • 格式:docx
  • 大小:88.26 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任务四、请求分页存储管理(虚拟存储)一、实验目的

通过请求分页存储管理的设计,让学生了解虚拟存储器的概念和实现方法。进行运行时不需要将所有的页面都调入内存,只需将部分调入内存,即可运行,在运行的过程中若要访问的页面不在内存时,则需求有请求调入的功能将其调入。假如此时若内存没有空白物理块,则通过页面置换的功能将一个老的不用的页面淘汰出来,其中淘汰的算法有多种。

二、实验内容

模拟仿真请求分页调度算法,其中淘汰的算法可选下列其一

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 &v);

void FiFoDeQueueFront(LinkQueue &Q);

inline void PrintQueue(LinkQueue &Q);

void FiFoFiFoDoQueueEarly(LinkQueue &Q,int a,vector &v);

void FiFoDoQueue(LinkQueue &Q,int a,vector &v);

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 &v);

void EnQueueTheFist(LinkQueue &Q,int e);

void PrintQueue(LinkQueue &Q);

//void ZhiZhenInit(int n);

void DoQueueEarly(LinkQueue &Q,int e,vector &v);

void EnQueueRear(LinkQueue &Q,int e,QueuePtr p,vector &v);

//void DeQueueFront(LinkQueue &Q);

QueuePtr ZhiZhen(LinkQueue &Q,int e);

void EnQueue(LinkQueue &Q,int e,vector &v);

//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 &v,int i,vector &vc);

inline int YeMianCount(LinkQueue &Q);//使用内敛函数,提高性能

inline int Destance(vector &v,int i);

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!"<