- 97
- 0
- 约1.53万字
- 约 11页
- 2016-05-19 发布于湖北
- 举报
实验九 存储管理
[1]Windows Xp内存结构
背景知识
Windows Xp是32位的操作系统,它使计算机CPU可以用32位地址对32位内存块进行操作。内存中的每一个字节都可以用一个32位的指针来寻址。这样,最大的存储空间就是232字节或4000兆字节 (4GB) 。这样,在Windows下运行的每一个应用程序都认为能独占可能的4GB大小的空间
而另一方面,实际上没有几台机器的RAM能达到4GB,更不必说让每个进程都独享4GB内存了。Windows在幕后将虚拟内存 (virtual memory,VM) 地址映射到了各进程的物理内存地址上。而所谓物理内存是指计算机的RAM和由Windows分配到用户驱动器根目录上的换页文件。物理内存完全由系统管理。
实验目的
通过实验了解windowsXp内存的使用,学习如何在应用程序中管理内存、体会Windows应用程序内存的简单性和自我防护能力。
了解windowsXp的内存结构和虚拟内存的管理,进而了解进程堆和windows为使用内存而提供的一些扩展功能。
工具/准备工作
您需要做以下准备:
一台运行Windows Xp Professional操作系统的计算机
计算机中需安装Visual C++ 6.0专业版或企业版
实验内容与步骤
Windows提供了一个API即GetSystemInfo() ,以便用户能检查系统中虚拟内存的一些特性。程序5-1显示了如何调用该函数以及显示系统中当前内存的参数。
步骤1:登录进入Windows Xp Professional。
步骤2:在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”–“Microsoft Visual C++ 6.0”命令,进入Visual C++窗口。
步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序5-1.cpp。
程序5-1:获取有关系统的内存设置的信息
// 工程vmeminfo
#include windows.h
#include iostream
#include shlwapi.h
#include iomanip
#pragma comment(lib, shlwapi.lib)
void main()
{
// 首先,让我们获得系统信息
SYSTEM_INFO si;
:: ZeroMemory(si, sizeof(si) ) ;
:: GetSystemInfo(si) ;
// 使用外壳辅助程序对一些尺寸进行格式化
TCHAR szPageSize[MAX_PATH];
::StrFormatByteSize(si.dwPageSize, szPageSize, MAX_PATH) ;
DWORD dwMemSize = (DWORD)si.lpMaximumApplicationAddress -
(DWORD) si.lpMinimumApplicationAddress;
TCHAR szMemSize [MAX_PATH] ;
:: StrFormatByteSize(dwMemSize, szMemSize, MAX_PATH) ;
// 将内存信息显示出来
std :: cout Virtual memory page size: szPageSize std :: endl;
std :: cout.fill (0) ;
std :: cout Minimum application address: 0x
std :: hex std :: setw(8)
(DWORD) si.lpMinimumApplicationAddress
std :: endl;
std :: cout Maximum application address: 0x
std :: hex std :: setw(8)
(DWORD) si.lpMaximumApplicationAddress
std :: endl;
std :: cout Total available virtual memory:
szMemSize std :: endl ;
}
步骤4:单击“Build”菜单中的“Compile 5-1.cpp”命令,并单击“是”按钮确认。系统对5-1.cpp进行编译。
步骤5:编译完
原创力文档

文档评论(0)