📄 5-3.htm
字号:
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_s1609" type="#_x0000_t75" style='position:absolute;
left:0;text-align:left;margin-left:0;margin-top:0;width:546.85pt;height:34.15pt;
z-index:-1;mso-wrap-edited:f;mso-position-horizontal:left;
mso-position-vertical:top;mso-position-vertical-relative:line' wrapcoords="-26 0 -26 21176 21600 21176 21600 0 -26 0"
o:allowoverlap="f">
<v:imagedata src="./5-3.files/image001.jpg" o:title="image_bk"/>
<w:wrap type="square" anchorx="page"/>
</v:shape><![endif]--><![if !vml]><img width=729 height=46
src="./5-3.files/image002.jpg" align=left hspace=12 v:shapes="_x0000_s1609"><![endif]><b><span
style='font-size:24.0pt;mso-bidi-font-size:12.0pt;font-family:黑体;mso-ascii-font-family:
"Times New Roman";color:navy'>存储管理</span></b><b><span lang=EN-US
style='font-size:16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:黑体;
color:navy'><span style="mso-spacerun: yes"> </span></span></b></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<h2><a name="_Toc45715743"></a><a name="_Toc16587483"><span style='mso-bookmark:
_Toc45715743'><span lang=EN-US style='mso-bidi-font-family:宋体'>5.3<span
style="mso-spacerun: yes"> </span>Windows 2000虚拟内存</span></span></a><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h2>
<p class=MsoNormal align=center style='text-align:center'><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US>(</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>实验估计时间:</span><span
lang=EN-US>120</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>分钟</span><span lang=EN-US>)</span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US> </span></span></p>
<p class=MsoNormal style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:l0 level1 lfo2;
tab-stops:list 21.0pt'><span style='mso-bookmark:_Toc16587483'><![if !supportLists]><span
lang=EN-US style='font-family:Wingdings;mso-bidi-font-weight:bold'>Ø<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]></span><a href="#_背景知识"><span style='mso-bookmark:_Toc16587483'><b><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>背景知识</span></b></span><span style='mso-bookmark:_Toc16587483'></span></a><span
style='mso-bookmark:_Toc16587483'><b><span lang=EN-US><o:p></o:p></span></b></span></p>
<p class=MsoNormal style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:l0 level1 lfo2;
tab-stops:list 21.0pt'><span style='mso-bookmark:_Toc16587483'><![if !supportLists]><span
lang=EN-US style='font-family:Wingdings;mso-bidi-font-weight:bold'>Ø<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]></span><a href="#_实验目的"><span style='mso-bookmark:_Toc16587483'><b><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>实验目的</span></b></span><span style='mso-bookmark:_Toc16587483'></span></a><span
style='mso-bookmark:_Toc16587483'><b><span lang=EN-US><o:p></o:p></span></b></span></p>
<p class=MsoNormal style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:l0 level1 lfo2;
tab-stops:list 21.0pt'><span style='mso-bookmark:_Toc16587483'><![if !supportLists]><span
lang=EN-US style='font-family:Wingdings;mso-bidi-font-weight:bold'>Ø<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]></span><a href="#_工具/准备工作"><span style='mso-bookmark:
_Toc16587483'><b><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>工具</span><span lang=EN-US>/</span></b></span><span
style='mso-bookmark:_Toc16587483'><b><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>准备工作</span></b></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'><b><span
lang=EN-US><o:p></o:p></span></b></span></p>
<p class=MsoNormal style='margin-left:21.0pt;text-indent:-21.0pt;mso-list:l0 level1 lfo2;
tab-stops:list 21.0pt'><span style='mso-bookmark:_Toc16587483'><![if !supportLists]><span
lang=EN-US style='font-family:Wingdings;mso-bidi-font-weight:bold'>Ø<span
style='font:7.0pt "Times New Roman"'>
</span></span><![endif]></span><a href="#_实验内容与步骤"><span style='mso-bookmark:
_Toc16587483'><b><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>实验内容与步骤</span></b></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'><b><span
lang=EN-US><o:p></o:p></span></b></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US> </span></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><a name="_Toc45715744"></a><a
name="_背景知识"></a><span style='mso-bookmark:_Toc45715744'><span
style='mso-bidi-font-family:宋体'>背景知识</span></span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>在</span><span lang=EN-US>Windows 2000</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>环境下,</span><span
lang=EN-US>4GB</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的虚拟地址空间被划分成两个部分:低端</span><span lang=EN-US>2GB</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>提供给进程使用,高端</span><span
lang=EN-US>2GB</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>提供给系统使用。这意味着用户的应用程序代码,包括</span><span lang=EN-US>DLL</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>以及进程使用的各种数据等,都装在用户进程地址空间内</span><span
lang=EN-US> (</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>低端</span><span lang=EN-US>2GB) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。用户过程的虚拟地址空间也被分成三部分:</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>1) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>虚拟内存的已调配区</span><span lang=EN-US> (committed) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>2) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>虚拟内存的保留区</span><span lang=EN-US> (reserved) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:没有备用的物理内存,但有一定的访问权限。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>3) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>虚拟内存的自由区</span><span lang=EN-US> (free) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>:不限定其用途,有相应的</span><span
lang=EN-US>PAGE_NOACCESS</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>权限。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>与虚拟内存区相关的访问权限告知系统进程可在内存中进行何种类型的操作。例如,用户不能在只有</span><span
lang=EN-US>PAGE_READONLY</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>权限的区域上进行写操作或执行程序;也不能在只有</span><span lang=EN-US>PAGE_EXECUTE</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>权限的区域里进行读、写操作。而具有</span><span
lang=EN-US>PAGE_ NOACCESS</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>权限的特殊区域,则意味着不允许进程对其地址进行任何操作。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>在进程装入之前,整个虚拟内存的地址空间都被设置为只有</span><span lang=EN-US>PAGE_NOACCESS</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>权限的自由区域。当系统装入进程代码和数据后,才将内存地址的空间标记为已调配区或保留区,并将诸如</span><span
lang=EN-US>EXECUTE</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>、</span><span lang=EN-US>READWRITE</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>和</span><span
lang=EN-US>READONLY</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的权限与这些区域相关联。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>清单</span><span lang=EN-US>5-2</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>还显示了如何理解</span><span
lang=EN-US>Virtual QueryEX() API</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>填充的</span><span lang=EN-US>MEMORY_BASIC_ INFORMATION</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>结构,如表</span><span
lang=EN-US>5-l</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>所示。此数据描述了进程虚拟内存空间中一组虚拟内存页面的当前状态。其中</span><span lang=EN-US>State</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>项表明这些区域是否为自由区、已调配区或保留区;</span><span
lang=EN-US>Protect</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>项则包含了</span><span lang=EN-US>Windows</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>系统为这些区域添加了何种访问保护;</span><span
lang=EN-US>Type</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>项则表明这些区域是可执行图像、内存映射文件还是简单的私有内存。</span><span lang=EN-US>VirtualQueryEX()
API</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>能让用户在指定的进程中,对虚拟内存地址的大小和属性进行检测。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>Windows</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>还提供了一整套能使用户精确控制应用程序的虚拟地址空间的虚拟内存</span><span lang=EN-US>API</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。一些用于虚拟内存操作及检测的</span><span
lang=EN-US>API</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>见表</span><span lang=EN-US>5-2</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>所示。</span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US> </span></span></p>
<p class=a><span style='mso-bookmark:_Toc16587483'>表<span lang=EN-US>5-4<span
style="mso-spacerun: yes"> </span>MEMORY_BASIC_INFORMATION结构的成员<o:p></o:p></span></span></p>
<div align=center>
<table border=1 cellspacing=0 cellpadding=0 style='margin-left:6.2pt;
border-collapse:collapse;border:none;mso-border-top-alt:solid windowtext 1.5pt;
mso-border-bottom-alt:solid windowtext 1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
<tr style='height:17.0pt;mso-yfti-irow:0'>
<td width=163 style='width:122.2pt;border-top:solid windowtext 1.5pt;
border-left:none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal align=center style='text-align:center'><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt;font-family:
黑体'>成员名称<span lang=EN-US><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
<td width=346 style='width:259.5pt;border-top:solid windowtext 1.5pt;
border-left:none;border-bottom:solid windowtext .5pt;border-right:none;
mso-border-left-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal align=center style='text-align:center'><span
style='mso-bookmark:_Toc16587483'><span style='font-size:9.0pt;font-family:
黑体'>目的<span lang=EN-US><o:p></o:p></span></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
</tr>
<tr style='height:17.0pt;mso-yfti-irow:1'>
<td width=163 style='width:122.2pt;border-top:none;border-left:none;
border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'>PVOID BaseAddress<o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -