分页存储管理的模拟上机报告-Read.DOC

分页存储管理的模拟上机报告-Read.DOC

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分页存储管理的模拟上机报告-Read

PAGE 1 分页存储管理的模拟实验上机报告 页面管理的基本原理及方法: 各进程的虚拟空间被划分成若干个长度相等的页(page)。页长的划分和内存外存之间的数据传输速度以及内存大小等有关。页式管理还把内存空间也按也的大小划分为页面(page frame)。然后把页式虚拟地址与内存页面物理地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。 在作业或进程开始执行之前,把该作业或进程的程序段和数据全部装入内存的各个页面中,并通过页表(page mapping table)和硬件地址变换机构实现虚拟地址到内存物理地址的地址映射。 1. 内存页面分配 静态页面管理的第一步是为要求内存的作业或进程分配足够的页面。系统依靠存储页面表,请求表及页表来完成内存的分配工作。 a. 页表 页表由页号与页面号组成。如右图所示 页 号 页面号 页表的大小由进程或作业的长度决定。例如,对于一个每页长1k,大小 为20k的进程来说,如果一个内存单元存放一个页表项,则只要分配给 该页表20个存储单元即可。页式管理是每个进程至少拥有一个页表。 实验中对页表的定义如下(采用数组形式,数组下标表示页号,数组单元存放与数组下标(页号)相应的页面号):int pagetable[100] b.请求表(作业申请表) 请求表用来确定作业或进程的虚拟空间的各页在内存中的对应位置。为了完成这个认为,系统必须知道每个作业或进程的页表起始地址(本实验中假定为0)和长度,以进行内存分配和地址变换。另外请求表中还包括每个作业或进程所要求的页面数。请求表整个系统一张,如下图所示。 作业名 请求页面数 页表始址 页表长度 状态 实验中对请求表的定义如下(采用结构体数组形式,并将页表也作为其中一个成员 (即域)): # define u 5 struct application_table { char name[8];/*作业名*/ int size; /*作业大小――即将上表中的请求页面数改用字节表示*/ int paddress; /*页表起始地址*/ int length; /*页表长度――以页面数表示*/ int state; /*内存的分配状态,以分配的用1表示,未分配的用0表示*/ int pagetable[100];/*页表,放在这里是为了方便虚地址转换及作业撤销的操作*/ }application[u]; c. 存储页面表(本实验中采用位示图法) 位示图也是整个系统一张,它指出内存各页面是否已被分配出去,以及未分配页面的总数。在内存中划分一块固定区域,每个单元的每个比特代表一个页面,如果该页面已被分配,则对应比特位置为1,否则为0。本实验中采用二维数组(16*16)形式存储: int graphic[16][16]={{0,0,0,1,1},{0,1,1,0,0},{0,0,0,0,1}} d. 分配算法 输入作业名和作业大小首先,将位示图初始化,可任选几个单元,其状态设为已分配,也 输入作业名和作业大小 可全部初始化为0. 接着,键盘输入作业名(name)和作业大小(size),因为每个页面的 请求n个页面 请求n个页面 页面数(即页表长度),搜索空闲页面表看是否有n个页面 ,若没有则 空闲页面表中有n个空闲页面吗?返回”无法分配”,若有则开始设置页表,将作业名,作业大小, 起始地 空闲页面表中有n个空闲页面吗? 址页表长度,状态置入请求表,起始地址为页表的第0个单元的内容. 然后根据页表,搜索空闲页面表,采用最先分配法分配页面,将页面号 填入页表中. 无 void newwork() { char x[8]; int y,k,r,z,i,j,l,d,m,h,b; void newwork() { char x[8]; int y,k,r,z,i,j,l,d,m,h,b; l=0; for(m=0;mu;m++) if(ap

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档