请求分页式存储管理的地址转换过程实现.docx
- 文档编号:11062233
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:20
- 大小:31.01KB
请求分页式存储管理的地址转换过程实现.docx
《请求分页式存储管理的地址转换过程实现.docx》由会员分享,可在线阅读,更多相关《请求分页式存储管理的地址转换过程实现.docx(20页珍藏版)》请在冰豆网上搜索。
请求分页式存储管理的地址转换过程实现
第2部分、请求分页式存储管理的地址转换过程实现:
●基本要求:
在第1部分实验基础上实现进程的分页式内存分配和地址转换过程,并进一步实现请求分页式存储分配和地址转换过程。
页面置换算法至少应实现先进先出(FIFO)、最近最久未使用(LRU)等算法。
●参考学时:
16学时
●实验提示:
1、建立一个位示图,用来模拟内存的分配情况,位示图的位数与设定的物理块个数相同。
程序启动时可利用一组随机0和1填充位示图,表示内存已被占用情况。
假设内存容量为64K,块大小为1K,则共有64个块,对应的位示图可能的值如下:
该位示图表示内存的2(0字节第2位)、3(0字节第3位)、6(0字节第6位)、8(1字节第0位)、9(1字节第1位)、12(1字节第4位)、15(1字节第7位)…等块没有被占用。
2、创建进程时输入进程大小,并根据程序中设定的物理块大小为进程分配物理块,同时建立页表。
例如,在上图基础上,若要建立一个大小为5000字节的进程,则:
●计算出该进程共有“向上取整(5000/1024)=5”个页,需要占用5个内存块;
●建立空的页表,即长度为5的一维整数数组;
●从位示图中找出前5个“0”位在整个位示图中的位置号(即i字节j位为0,则该位的位置为8*i+j),并将这些号依次填入页表中,同时把前5个“0”改为“1”,以示对应内存块已经分配。
3、输入当前执行进程所要访问的逻辑地址,并将其转换成相应的物理地址。
4、进程退出时,根据其页表内容向位示图反向回填“1”。
5、扩充页表,将其变成支持请求和置换功能的二维页表(增加存在位等)。
创建进程时可装入固定的前三页(或键盘输入初始装入页数,不同进程的装入个数可以不同),其余页装入到置换空间内(置换空间大小应为内存空间大小的1.5倍,对其还需建立独立的位示图)。
6、分别采用FIFO和LRU置换算法对地址转换过程中遇到的缺页现象进行页面置换,可将多次地址转换过程中所涉及到的页号视为进程的页面访问序列,从而计算置换次数和缺页率。
importjava.util.Vector;
importjava.io.*;
classProcess{
Page[]PageTable;
Vector
privateintsize;
privateintPagecount;
privateStringname;
doublevisit;
doublereplacement;
publicvoidsetPage(Page[]PageTable){
this.PageTable=newPage[PageTable.length];
for(inti=0;i this.PageTable[i]=PageTable[i]; } } publicintgetPageBlock(intPageNum){ returnPageTable[PageNum].getBlockNum(); } publicvoidsetSize(intsize){ this.size=size; } publicvoidsetPagecount(intPagecount){ this.Pagecount=Pagecount; } publicintgetPagecount(){ returnPagecount; } { visit=0; replacement=0; } publicProcess(){ } publicProcess(Stringname){ this.name=name; } publicStringtoString(){ returnname; } } classPage{ intflag; intblockNum; intwrited;//xiugaiwei intaccessfield;//fangwenziduan intswapsapce_blockno;//waicundizhi intt; { blockNum=0; writed=0; accessfield=0; t=0; } publicPage(){ flag=1; swapsapce_blockno=-1; } publicPage(intflag,intswapsapce_blockno){ this.flag=flag; this.swapsapce_blockno=swapsapce_blockno; } publicintgetBlockNum(){ returnblockNum; } publicintgetFlag(){ returnflag; } } classOS2{ publicstaticVector publicstaticProcessrunning; publicstaticBufferedReaderbr; staticint[][]a=newint[8][8]; staticint[][]d=newint[10][10];//置换空间 staticintcount=0; publicOS2(){ ready=newVector blocked=newVector br=newBufferedReader(newInputStreamReader(System.in));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 请求 分页 存储 管理 地址 转换 过程 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)