计算机操作系统实验报告实验三--存储管理.doc
计算机科学与技术系
实验报告
专业名称计算机科学与技术专业
课程名称计算机操作系统
项目名称存储管理
实验三存储管理
[1]WindowsXp内存结构
背景知识
WindowsXp是32位的操作系统,它使计算机CPU可以用32位地址对32位内存块进行操作。内存中的每一个字节都可以用一个32位的指针来寻址。这样,最大的存储空间就是232字节或4000兆字节(4GB)。这样,在Windows下运行的每一个应用程序都认为能独占可能的4GB大小的空间
而另一方面,实际上没有几台机器的RAM能达到4GB,更不必说让每个进程都独享4GB内存了。Windows在幕后将虚拟内存(virtualmemory,VM)地址映射到了各进程的物理内存地址上。而所谓物理内存是指计算机的RAM和由Windows分配到用户驱动器根目录上的换页文件。物理内存完全由系统管理。
一、实验目的
通过实验了解windowsXp内存的使用,学习如何在应用程序中管理内存、体会Windows应用程序内存的简单性和自我防护能力。
了解windowsXp的内存结构和虚拟内存的管理,进而了解进程堆和windows为使用内存而提供的一些扩展功能。
二、工具/准备工作
您需要做以下准备:
一台运行WindowsXpProfessional操作系统的计算机
计算机中需安装VisualC++6.0专业版或企业版
三、实验内容与步骤
Windows提供了一个API即GetSystemInfo(),以便用户能检查系统中虚拟内存的一些特性。程序5-1显示了如何调用该函数以及显示系统中当前内存的参数。
步骤1:登录进入WindowsXpProfessional。
步骤2:在“开始”菜单中单击“程序”-“MicrosoftVisualStudio6.0”–“MicrosoftVisualC++6.0”命令,进入VisualC++窗口。
步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序5-1.cpp。
程序5-1:获取有关系统的内存设置的信息
//工程vmeminfo
#includewindows.h
#includeiostream
#includeshlwapi.h
#includeiomanip
#pragmacomment(lib,shlwapi.lib)
voidmain()
{
//首先,让我们获得系统信息
SYSTEM_INFOsi;
::ZeroMemory(si,sizeof(si));
::GetSystemInfo(si);
//使用外壳辅助程序对一些尺寸进行格式化
TCHARszPageSize[MAX_PATH];
::StrFormatByteSize(si.dwPageSize,szPageSize,MAX_PATH);
DWORDdwMemSize=(DWORD)si.lpMaximumApplicationAddress-
(DWORD)si.lpMinimumApplicationAddress;
TCHARszMemSize[MAX_PATH];
::StrFormatByteSize(dwMemSize,szMemSize,MAX_PATH);
//将内存信息显示出来
std::coutVirtualmemorypagesize:szPageSizestd::endl;
std::cout.fill(0);
std::coutMinimumapplicationaddress:0x
std::hexstd::setw(8)
(DWORD)si.lpMinimumApplicationAddress
std::endl;
std::coutMaximumapplicationaddress:0x
std::hexstd::setw(8)
(DWORD)si.lpMaximumApplicationAddress
std::endl;
std::coutTotalavailablevirtualmemory: