基本分页算法

上传人:鲁** 文档编号:508579092 上传时间:2023-10-15 格式:DOCX 页数:11 大小:118.87KB
返回 下载 相关 举报
基本分页算法_第1页
第1页 / 共11页
基本分页算法_第2页
第2页 / 共11页
基本分页算法_第3页
第3页 / 共11页
基本分页算法_第4页
第4页 / 共11页
基本分页算法_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基本分页算法》由会员分享,可在线阅读,更多相关《基本分页算法(11页珍藏版)》请在金锄头文库上搜索。

1、基本分页算法实验目的:了解基本分页技术,知道页表的具体构造。编程实现对基本分页 存储管理的模拟。实验要求:给定一个具体大小的内存空间,初始化其中的内存块,一部分 为已经分配,一部分没有分配。假定物理块为100块,10行 10列的 二维数组实现。同时定义页表结构,也用二维数组实现。实现对一个 进程按其所需的分配物理块,回收物理块和打印页表。系统能给用户 提供一个选项菜单。实验内容:(1)随即初始化内存物理块的分配情况(已分配用1 标记,未分配 用 0 标记)。(2)输入一个进程名和其所需的物理块数目。查看系统是否能够满 足它的需要,如果可以,废止分配物理块,并建立相应的页表。如果 不能,则给出提

2、示信息。(3)输入一个进程名,如果该进程已进入内存,可以施放为之分配 的物理内存块,如果该进程尚未进入内存给出提示信息。(4)输入一个进程名,如果该进程已进入内存,我们可以查看该内 存对应的分配情况页表。如果输入的进程名内存中不存在则给出 相应的错误提示信息。实验结果:1、初始化的内存中的物理块分配如下,其中分配表示此物理块已经分配,空闲表示此物理块尚未分配,为实现方便程序中用0 和1进行区分!C D:$装软件WC+6.0软件便装玄件MSDev98MyProjectsaaddDebugaadd.exe内存分配表0空闲0空闲02分配13分配14分配15 1空闲06分配1空闲08分配19分配110

3、分配1In空闲012分配113分配114分配1分配116分配117空闹018空闲01?分配120空闲021空闲022分配123分配124分配1空闲026空闲027分配128空闲029分配130空闲031分配132分配133分配134空闲0空闲036空闲037空闹038分配139空闲040空闲041分配142空闲043分配144空闲0分配146空闲047分配148分配149分配150分配151空闲052分配153空闲054分配1分配156分配15?分配158分配159空闲060分配161分配162分配163空闲064分配1空闲066空闲067空闲068空闲069分配1?0分配171分配172空闲

4、073分配174空闲0空闲0?6空闲07?分配178分配1晋分配180空闲081分配182分配183分配184分配1分配186空闲087分配188空闲089空闲090空闲091空闲092空闲0F分配194分配1空闲096分配197空闹098空闲099空闲0”青选择你要逬行的操作1:现实内存分配情况肌分配内存乘回收内存4:查看页表退出2、根据菜单提示,键入 2 选项,进行内存分配,也就是分页,输入 的进程号为 8,该进程需要 10 个页面,很显然,空闲的分区足以满 足要求,就显示分配成功。如下图请选择你要进行的操作1:现实内存分配情况2:分配内存鉄回收内存4:查看页表0:退出 2请输入进程号和贡

5、面数:8 10内存分配成功!请通择你要进行的操作1:现实内存分配情况朕分配内存鉄回收内存4:查看页表0:退出而如果我们输入进程需要的页面数大于系统能提供的空闲页面数,就显示没有足够的页面分配!请选择你要进行的操作1:现实内存分配情况2:分配内存朕回收内存4:查看贡表0:退出2请输入进程号和贡面数:1 1丽没有足够的贡面分配!请搖择徐要进行的操作1:现实内存分配情况2:分配内存朕回收内存4:查看贡表0:退出3、上面的 8 号进程分配完成之后我们再看一下内存的状态,发现在前面的几个物理块,有的原来空闲的现在状态已经变为了分配!4、为了更清楚的看出是进行了分配,我们输入 4 进行显示页表的操 作,输

6、入进程号 8,可以看出物理块 0、1、5、7、11、17、18、20、 21、25、26分配给了进程 8,与前面的初始化情况比较我们也可以看 出是这几个物理块的状态发生了变化!请选择你要进行的操作1:现实内存分配情況2:分配內存3:回收内有4:查看贡表0:退出4请出入你要显示页表的进程号:8进程8的贡表如下所示:贞表80818587811817818820821825826晴选择你要进行的操作1:现实内存分配情况2:分配内存3:回收内存4:查看页表0:退出同样是查看进程的页表,如果我们输入了一个没有的进程6,以为我们没有对其进行分配,会显示“你所输入的进程尚未进入内存!”的提示请选择你要进行的

7、操作1:现实内存分配情况2:分配内存3:回收内存4:查看贞表氐退出4请岀入你要显示页表的进程号:6你所输入的进程尚未进入内存!请选择你要进行的操作1:现实内存分配情况2:分配内存朕回收内存4:查看贡表0:退出5、下面进入回收的操作,我们先输入一个错误的进程号 5,可以见到“你输入的进程尚未进入内存!”的提示,因为我们只是为进程 8分配了相应的物理块!请选择你要进行的操作1:现实内存分配情況2:分配內存3:回收内存4:查看贞表阳退出 3请出入你要回收内存的进程号:5你所输入的进程尚未进入内存!请选择你要进行的操作1:现实内存分配情況2:分配內存3:回收内存4:查看页表阳退出如果我们输入进程 8,

8、则会提示“内存回收成功”,同时我们再一次查看内存分配表,可以看到以前分配给进程8 的物理块现在的状态又由“分配”变为“空闲”状态!基本功能演示完毕!请选择你要进行的操作1:现实內存分配情況2:分配內存3:回收内存4:查看贡表0:退出 3请岀入你要回收内存的进程号:8内存回收成功请选择你要进行的操作1:现实內存分配情况2:分配內有3:回收内有4:查看页表0:退出1内存分配表0空闲0rr空闲02分配1分配14分配15 1空闲06分配1空闲08分配19分配110分配1In空闲012分配1分配114分配1分配116分配11?空闲018空闲019分配120空闲021空闲022分配1分配124分配1空闲0

9、26空闲027分配128空闲029分配130空闲031分配132分配1分配134空闲0空闲036空闲037空闲038分配139空闲040空闲041分配142空闲0分配144空闲0分配146空闲04?分配148分配149分配150分配151空闲052分配1空闲054分配1分配156分配15?分配158分配159空闲060分配161分配162分配1空闲064分配1空闲066空闲0冊空闲068空闲0訂分配1?0分配171分配172空闲0分配174空闲0空闲0空闲077分配178分配1晋分配180空闲081分配182分配1分配184分配1分配186空闲08?分配188空闲089空闲090空闲091空闲

10、092空闲0F分配194分配1空闲096分配1F空闲098空闲099空闲0请选择你要进行的操作1:现实內存分配情況2:分配内存3:回收内存4:查看页表0:退出实验小结:本次实验的内容感觉比以前的实验实现起来相对简单,在认真 分析了题目要求,和同学一起讨论了具体实现方法之后,我独立编码 完成了本次实验。虽然实验实现的功能比较简单,但是我了解分页技 术的一系列问题。查看了书本上关于分页这一界的有关内容,也详细 的了解了其中比较重要的地址转换等问题。同时也与分段存储管理做了一定的比较。附:源代码#includestdio.h#includestring.h#includetime.h#include

11、stdlib.hint a1010;int b1002;Init()int i,j;srand( (unsigned)time( NULL ) ); for(i=0;i10;i+)for(j=0;j10;j+)aij=rand()%2; return(0);fenpei()分页函数int i,j,ha,ye;printf(n请输入进程号和页面数:);scanf(%d%d,&ha,&ye);int count=0;int count1=0; for(i=0;i10;i+)for(j=0;j10;j+)if(aij=0)count+;if(countye)printf(n没有足够的页面分配! ”)

12、; elsefor(i=0;i10;i+)for(j=0;j10;j+) if(aij=0&count1=ye) aij=1; b10*i+j0=ha;b10*i+j1=10*i+j; count1+;printf(n 内存分配成功!);return(0);huishou()int flag=0;int i,ha;printf(n 请出入你要回收内存的进程号:);scanf(%d,&ha);for(i=0;i100;i+)if(bi0=ha)flag=1;if(flag=1)for(i=0;i100;i+)if(bi0=ha)ai/10i%10=0;bi0=0;bi1=0;printf(n内存回收成功n);elseprintf(n你所输入的进程尚未进入内存! n);return(0);yebiao()int flag=0;int i,ha;print

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号