实验四 虚拟存储器管理实验

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

实验四虚拟存储器管理实验

◆实验名称:存储器管理实验

◆仪器、设备:计算机

◆参考资料:操作系统实验指导书

◆实验目的:

设计一个请求页式存储管理方案,并编写模拟程序实现。

◆实验内容:

编写程序用来模拟虚拟页式存储管理中的页面置换

要求:

1.快表页面固定为4块

2.从键盘输入N个页面号

3.输出每次物理块中的页面号和缺页次数,缺页率

◆实验原理、数据(程序)记录:

#define PAGES 4 /* 物理块数*/

#define N 16 /*最多输入的页面号*/

int pages[PAGES][2]; /*page[i][0]保存页面号,page[i][1]保存页面存留时间*/

int queue[N]; /*页面号数组*/

void initialise(void) /*------------初始化:快表和页面号数组++++++++++++++*/ {

int i;

for(i=0;i

queue[i]=-1;

for(i=0;i

{

pages[i][0]=-1;

pages[i][1]=0;

}

}

int is_page_exist(int page) /*若还有空页,返回空页序号的相反数-1若存在,返回该页的序

号若不存在,返回需要替换页面序号的相反数-1*/

{

int max;

int replace;

int i=0;

max=pages[0][1];

replace=0;

for(;i

pages[i][1]++;

i=0;

while(i

{

if(max

{

max=pages[i][1];

replace=i;

}

i++;

}

if(i==PAGES)

return (0-replace-1);

else if(pages[i][0]==page)

return i;

else

return (0-i-1);

}

int input_pages(void) /**************输入页面号*****************/ {

int i=0;

int num;

printf("请输入1~16个页面:【输入0 结束】\n");

scanf("%d",&num);

while(num&&i

{

if(num>0&&num<=N)

{

queue[i]=num;

i++;

scanf("%d",&num);

}

else

printf("输入错误数据~!\n");

}

return i;

}

void display_pages(void) /* 输出物理块中的页面号*/

{

int i=0;

for(;i

if (pages[i][0]!= -1) printf("%5d ",pages[i][0]);

printf("\n");

}

void LRU(int * lack_page) /* 核心算法,LRU算法*/

{

int i=0;

int temp;

* lack_page=0;

while(queue[i]!=-1)

{

temp=is_page_exist(queue[i]);

if(temp>-1) /*若已经存在,修改相应序号的属性值*/

pages[temp][1]=1;

else /*若不存在,修改返回序号的内容,并修改属性值*/ {

(* lack_page)++;

pages[0-temp-1][0]=queue[i];

pages[0-temp-1][1]=1;

}

printf("第%2d个页面访问时物理块中的页面号:",i+1);

display_pages();

i++;

}

}

int main(void)

{

int lack=0;

float totle_page=0;

initialise();

totle_page=(float)input_pages();

LRU(&lack);

printf("缺页数为:%d\n",lack);

printf("缺页率为:%0.3f\n",lack/totle_page);

}

◆实验结果及分析

输入数据:1 2 4 3 1 4 5 6

输出结果:

第1个页面访问时物理块中的页面号:1

第2个页面访问时物理块中的页面号:1 2

第3个页面访问时物理块中的页面号:1 2 4

第4个页面访问时物理块中的页面号:1 2 4 3

第5个页面访问时物理块中的页面号:1 2 4 3

第6个页面访问时物理块中的页面号:1 2 4 3

第7个页面访问时物理块中的页面号:1 5 4 3

第8个页面访问时物理块中的页面号:1 5 4 6

缺页次数:6

缺页率:0.750

通过实验,实现了利用LRU算法进行虚拟存储管理的模拟。

相关文档
最新文档