实验六 Windows内存管理
一、实验目的
1、熟悉程序的运行时动态链接。
2、熟悉Windows中内存的分页管理方式。
3、了解虚拟内存的用法,熟悉Windows中相应的API函数。
二、实验理论基础及教材对应关系
1、应用程序的动态链接。
2、内存的分页管理、虚拟内存的技术。 3、本实验内容主要对应于教材第4章。
三、实验内容与步骤
1、运行“SystemInfo.exe”应用程序,出现如下界面:
从该界面上可以看到Windows2000/XP系统中的分页大小(Page Size)是:4,096,即4K字节,也可以看到本机所安装的处理器的个数是:1个。 打开工程文件,熟悉信息获取函数的使用:
SYSTEM_INFO sinf; GetSystemInfo(&sinf);
2、运行“VMSTATE.exe”应用程序,出现如下界面:
从界面上可以看到,本计算机中所安装的物理内存的大小“TotalPhys”,可用物理内存的大小“AvailPhys”。
打开源文件,熟悉或者信息函数的使用:
MEMORYSTATUS ms = { sizeof(ms) }; GlobalMemoryStatus(&ms);
3、运行“VMAlloc.exe”应用程序,掌握其用法和功能:
打开源文件,熟悉以下操作虚拟存储空间函数的使用:
VirtualAlloc( )、VirtualQuery( )、VirtualFree( )。
4、运行“VMMap.exe”应用程序,了解程序的功能,读懂其显示的每一行信息的含义:
从上面显示的信息中,谈谈自己对虚拟储存空间的认识(100字以内)。
四、实验材料的提交与成绩评定
1、本实验的实验报告一份(电子版或纸质版一份,具体形式由任课教师确定,格式参考学院统一实验报告)
2、实验源程序一份,请表明题号(电子版)
备注:做下一次实验之时提交上一次实验的材料,由各班学习委员以班为单位收集并上交任课教师。
3、实验成绩总分为10分,由指导老师根据学生实验表现和实验材料进行评定,本门课程结束后实验平均成绩(实验总成绩/实验次数)按照10%的比例记入期末考试总成绩。
实验七 分页内存管理算法模拟
一、实验目的
1、熟悉基本分页存储管理。
2、建立描述分页内存管理中的页目录表、页表结构。 3、实现进行虚拟内存到物理内存的映射算法。
二、实验理论基础及教材对应关系
1、操作系统中内存管理。
2、基本分页内存、分段内存管理。
3、页目录表、页表的作用,以及虚拟地址到物理地址的映射关系。
三、实验内容与步骤
题目:分页存储管理的设计与实现。
某系统采用了两级页表机制,可使页表所占用内存尽量少,分页地址变换机构如下图所示:
分页地址变换机构
页目录表共1024项,每个页表1024项,每页的大小是4K个字节。地址转换时,先由分段部件生成线性地址,再由上面所述的分页部件,根据线性地址中的页目录索引在页目录表中找相应的项,该项值为所需页表在内存的块号,找到该页表后,然后按第21-12位的页表索引找到所需页的物理内存起始地址,把它与12位偏移直接相加得到32位的物理地址。
设系统有如表1中所示的10个段,已知:1-8段从内存的200000H处开始由低地址到高地址连续存放,映射到3G+4M开始的线性地址空间;9段(缓冲区)放在400000H开始的内存,映射的线性地址同物理地址;显存从B8000H开始,映射到3G开始的线性地址空间。
表1
(1)、请设计并填写页目录表和页表(需说明每张表的内存地址)
(2)、线性地址为:C0401010H、C0404010H、C0414010H,则物理地址是多少,所在段的段名是什么?(需写出计算的详细步骤)
实验步骤:
1、定义页目录表、页表的数据结构,以及必要的数据。
#define Page_Size 4096 // 页面大小 #define Pages 26 // 本题定义的总的页面个数
#define FirstLinearAddr 0xC0000000+0x400000// 线性地址3G + 4M #define SecondLinearAddr 0x400000 // 线性地址0x400000 #define ThirdLinearAddr 0xC0000000// 线性地址3G
#define IDT 0 #define TSS 1 #define GDT 2