下载此文档

模拟设计页式存储管理的分配与回收.doc


文档分类:论文 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
题 目: 模拟设计页式存储管理的分配与回收
1需求分析
页式管理是一种空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。基本原理是将各的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式与建立一一对应页表,并用相应的地址变换机构,来解决地址变换问题。页式管理采用请求调页或预调页技术实现了内外存的统一管理。

图1 页的划分
图2 基本页表示例
静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过
存储页面、请求表以及页表来完成内存的分配工作。页表指的是内存中的一块固定存储区。页式管理时每个进程至少有一个页表。请求表指的是用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置;另外整个系统有一个存储页面表,其描述了物理内存空间的分配使用状况。
图3 请求表的示例
存储页面表有两种构成方法:
1、位示图法
 2、空闲页面链表法
模拟设计页式存储管理的分配与回收要求能够满足如下的要求:
输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。
要求当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面)。
2 功能设计
算法分析
首先,请求表给出进程或作业要求的页面数。然后,由存储页面表检查是否有足够的空闲页面,如果没有,则本次无法分配。如果有则首先分配设置页表,并请求表中的相应表项后,按一定的查找
搜索出所要求的空闲页面,并将对应的页好填入页表中。
图4 分配页面的算法流程
数据结构
页式管理把内存空间按页的大小划分成片或者页面,再按照一定的规律建立起页表,.
//页表项结构
typedef struct _pagetableitem
{
pageid pagenum; //页号
blockid blocknum; //块号
}pgtabitem; //页表
typedef pgtabitem * pagetable;


//请求表结构
typedef struct _reqtable
{
unsigned pid; //进程号
unsigned reqpagenum; //请求页面数
pagetable pgtabadr; //页表始址
bool state; //状态
} reqtabitem;
请求表还引入了支持快速插入和删除的list顺序容器来进行相关操作.
list<reqtabitem> reqtable
因为模拟设计的关系,页面的起始地址均应该为随机的数值,所以程序在
设计过程中加入了随机数类的编写.
class RandomNumber
{
private:
unsigned long randseed;
public:
RandomNumber(unsigned long s=0);
unsigned short Random(unsigned long n);
double fRandom(void);
};
采用当前系统的时间值来生成伪随机数分配地址.
定义随机数产生器:RandomNumber random
定义内存页面数:int pagenum
定义页面大小:int pagesize
定义进程个数:int pnum
用整数数组模拟分配的内存页面数int * mempage=new int[pagenum]

主函数
主函数依次运行了程序中所实现的关键函数.
int main(){
InitSys(); //初始化系统
MainChoice();//输出系统菜单
Destroy(); //释放申请的动态内存
return 0;}
各个功能函数
初始化内存页面: void Init_Mempage(void)
获取内存使用情况: int Get_Mempagenum(void)
初始化默认的请求表: void Init_Reqtable(void)
为默认的进程分配内存: vo

模拟设计页式存储管理的分配与回收 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人350678539
  • 文件大小311 KB
  • 时间2021-01-26