虚存管理OS实验

上传人:go****e 文档编号:137285655 上传时间:2020-07-07 格式:DOC 页数:13 大小:163.50KB
返回 下载 相关 举报
虚存管理OS实验_第1页
第1页 / 共13页
虚存管理OS实验_第2页
第2页 / 共13页
虚存管理OS实验_第3页
第3页 / 共13页
虚存管理OS实验_第4页
第4页 / 共13页
虚存管理OS实验_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《虚存管理OS实验》由会员分享,可在线阅读,更多相关《虚存管理OS实验(13页珍藏版)》请在金锄头文库上搜索。

1、实验三 虚存管理一、实验目的1. 加深对存储管理概念的理解。2. 深入了解Windows内存管理机制。3. 理解内存分配原理,特别是以页面为单位的虚拟内存分配方法。4. 掌握页式虚拟存储技术。5. 掌握“最不频繁使用淘汰算法”,即LFU页面淘汰算法。二、理论基础1. 页式存储管理技术。2. 虚拟存储管理技术。三、实验要求1. 编写程序实现简单的虚存管理。2. 实验具体包括:(1) 设计并实现一个虚存管理程序,模拟一个单道程序的页式存储管理,用一个一维数组模拟实存空间,用一个文本文件模拟辅存空间;(2) 建立一张一级页表;(3) 编写函数随机产生访存请求,访存操作包括读取、写入、执行等三种类型;

2、(4) 编写函数响应访存请求,完成虚地址到实地址的定位及读/写/执行操作,同时判断并处理缺页中断;(5) 实现LFU页面淘汰算法。3. 实验结束提交书面实验报告。四、实验环境1. 运行Windows操作系统的PC机一台。2. PC机上安装Visual C+ 6.0开发工具软件。五、实验内容1. 建立“Win32 Console Application”工程“vmm”。2. 建立“C/C+ Header File”头文件“vmm.h”,文件内容参见“程序代码”。3. 建立“C+ Source File”源文件“vmm.cpp”,文件内容参见“程序代码”。4. 建立“Text File”文本文件“

3、vmm_auxMem.txt”,模拟辅存空间,文件内容可以输入任意字符(字符数多于512个)。5. 运行程序并认真观察和分析程序的运行结果。七、程序代码头文件“vmm.h”#ifndef VMM_H#define VMM_H/* 模拟辅存的文件路径 */#define AUXILIARY_MEMORY vmm_auxMem.txt/* 页面大小(字节)*/#define PAGE_SIZE 4/* 虚存空间大小(字节) */#define VIRTUAL_MEMORY_SIZE (64 * 4)/* 实存空间大小(字节) */ #define ACTUAL_MEMORY_SIZE (32 *

4、4)/* 总虚页数 */#define PAGE_SUM (VIRTUAL_MEMORY_SIZE / PAGE_SIZE)/* 总物理块数 */#define BLOCK_SUM (ACTUAL_MEMORY_SIZE / PAGE_SIZE)/* 可读标识位 */#define READABLE 0x01u/* 可写标识位 */#define WRITABLE 0x02u/* 可执行标识位 */#define EXECUTABLE 0x04u/* 页表项 */typedef structunsigned int blockNum; /物理块号BOOL filled; /页面装入特征位BYT

5、E proType; /页面保护类型BOOL edited; /页面修改标识unsigned long auxAddr; /外存地址unsigned long count; /页面使用计数器 PageTableItem, *Ptr_PageTableItem;/* 访存请求类型 */typedef enum REQUEST_READ, REQUEST_WRITE, REQUEST_EXECUTE MemoryAccessRequestType;/* 访存请求 */typedef structMemoryAccessRequestType reqType; /访存请求类型unsigned lon

6、g virAddr; /虚地址BYTE value; /写请求的值 MemoryAccessRequest, *Ptr_MemoryAccessRequest;/* 访存错误代码 */typedef enum ERROR_READ_DENY, /该页不可读ERROR_WRITE_DENY, /该页不可写ERROR_EXECUTE_DENY, /该页不可执行ERROR_INVALID_REQUEST, /非法请求类型ERROR_OVER_BOUNDARY, /地址越界ERROR_FILE_OPEN_FAILED, /文件打开失败ERROR_FILE_CLOSE_FAILED, /文件关闭失败ER

7、ROR_FILE_SEEK_FAILED, /文件指针定位失败ERROR_FILE_READ_FAILED, /文件读取失败ERROR_FILE_WRITE_FAILED /文件写入失败 ERROR_CODE;/* 产生访存请求 */void do_request();/* 响应访存请求 */void do_response();/* 处理缺页中断 */void do_page_fault(Ptr_PageTableItem);/* LFU页面替换 */void do_LFU(Ptr_PageTableItem);/* 装入页面 */void do_page_in(Ptr_PageTableI

8、tem, unsigned int);/* 写出页面 */void do_page_out(Ptr_PageTableItem);/* 错误处理 */void do_error(ERROR_CODE);/* 打印页表相关信息 */void do_print_info();/* 获取页面保护类型字符串 */char *get_proType_str(char *, BYTE);#endif源文件“vmm.cpp”#include #include #include #include #include vmm.h/* 页表 */PageTableItem pageTablePAGE_SUM;/*

9、实存空间 */BYTE actMemACTUAL_MEMORY_SIZE;/* 用文件模拟辅存空间 */FILE *ptr_auxMem;/* 物理块使用标识 */bool blockStatusBLOCK_SUM;/* 访存请求 */Ptr_MemoryAccessRequest ptr_memAccReq;/* 初始化环境 */void do_init()srand(unsigned int) time(NULL);for (int i = 0; i PAGE_SUM; i+)pageTablei.filled = false;pageTablei.edited = false;pageT

10、ablei.count = 0;/* 使用随机数设置该页的保护类型 */switch (rand() % 7)case 0:pageTablei.proType = READABLE;break;case 1:pageTablei.proType = WRITABLE;break;case 2:pageTablei.proType = EXECUTABLE;break;case 3:pageTablei.proType = READABLE | WRITABLE;break;case 4:pageTablei.proType = READABLE | EXECUTABLE;break;case

11、 5:pageTablei.proType = WRITABLE | EXECUTABLE;break;case 6:pageTablei.proType = READABLE | WRITABLE | EXECUTABLE;break;default:break;/* 设置该页对应的辅存地址,本程序为实现简单采用顺序设置的方式,可替换成其他设置方式,但须注意每个页表项对应的辅存地址均应为PAGE_SIZE的整数倍 */pageTablei.auxAddr = i * PAGE_SIZE * 2;for (int j = 0; j virAddr virAddr = VIRTUAL_MEMOR

12、Y_SIZE)do_error(ERROR_OVER_BOUNDARY);return;/* 计算页号和页内偏移值 */pageNum = ptr_memAccReq-virAddr / PAGE_SIZE;offAddr = ptr_memAccReq-virAddr % PAGE_SIZE;printf(页号为:%ut页内偏移为:%un, pageNum, offAddr);/* 获取对应页表项 */ptr_pageTabIt = &pageTablepageNum;/* 根据特征位决定是否产生缺页中断 */if (!ptr_pageTabIt-filled)do_page_fault(ptr_pageTabIt);actAddr = ptr_pageTabIt-blockNum * PAGE_SIZE + offAddr;printf(实地址为:%un, actAddr);/* 检查页面访问权限并处理访存请求 */switch (ptr_memAccReq-reqType)case REQUEST_READ: /读请求pt

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

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

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