📄 booting-static_memory_layout_1.htm
字号:
</FONT>
<LI><FONT face="Times New Roman TUR"><B>VGA Color Text Mode Video RAM:</B>
当显卡处于彩色文本模式时,会使用这32 KB RAM。这个RAM区域被系统保留,应用程序被禁止使用它。 </FONT>
<LI><FONT face="Times New Roman TUR"><B>VGA Video BIOS ROM:</B>
C0000~C7FFFh是Video BIOS ROM的内存位置。Video BIOS ROM中包含着被Video
Card使用的代码。注意这块ROM里存放的是BIOS INT 10H所使用的服务代码,而不是被Video
Card显示的数据,如果是显示数据,就应该被放置在RAM中。 </FONT>
<LI><FONT face="Times New Roman TUR"><B>IDE Hard Disk BIOS ROM:</B> C8000h
是存放控制IDE Hard Disk的BIOS的默认位置。在系统被启动的阶段,这块BIOS代码将会被调用。 </FONT>
<LI><FONT face="Times New Roman TUR"><B>Optional Adapter ROM BIOS or RAM
UMBs:</B> CC000h ~ DFFFFh 之间的内存块可以被PC厂商随意使用。这块内存可以被Hardware
Adapters用来存放ROM代码(例如,一些网卡,或者SCSI host adapters)。 也可以被用做进行Loading
Drivers的上位内存块RAM。这块内存通常是空的,除非你使用了那些刚才被提及的特殊硬件。 </FONT>
<LI><FONT face="Times New Roman TUR"><B>System BIOS Plug and Play Extended
Information:</B> E0000h ~ EFFFFh 之间的内存被Plug and Play BIOSes用来存放它的Extended
System Configuration Data (ESCD)。 </FONT>
<LI><FONT face="Times New Roman TUR"><B>System BIOS ROM:</B>
UMA的最后64K区域被用来存放system BIOS代码。 </FONT></LI></UL></SPAN>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l8 level1 lfo1"><SPAN
lang=EN-US><FONT face="Times New Roman TUR"></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
face="Times New Roman TUR">以下表格中列出了除Video RAM之外的UMA内存布局:</FONT></SPAN></P><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD><FONT
face="Times New Roman TUR"> <STRONG>Address</STRONG></FONT></TD>
<TD><STRONG><FONT
face="Times New Roman TUR"> Width</FONT></STRONG></TD>
<TD><STRONG><FONT face="Times New Roman TUR"> Content
Description</FONT></STRONG></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> C000:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> EGA/VGA BIOS ROM (thru
C7FF)</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> C400:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"><SPAN
style="mso-tab-count: 1"> </SPAN>Video adapter ROM space</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> C600:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> 256bytes</FONT></TD>
<TD><FONT face="Times New Roman TUR"> PGA communication
area</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> C800:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> 16K</FONT></TD>
<TD><FONT face="Times New Roman TUR"> Hard disk adapter BIOS
ROM</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> C800:5</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> XT Hard disk ROM format,
AH=Drive, AL=Interleave</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> D000:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> 32K</FONT></TD>
<TD><FONT face="Times New Roman TUR"> Cluster adapter BIOS
ROM</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> D800:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> PCjr conventional software
cartridge address</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> E000:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> 64K</FONT></TD>
<TD><FONT face="Times New Roman TUR"> Expansion ROM space (hardwired
on AT+)</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> 128K</FONT></TD>
<TD><FONT face="Times New Roman TUR"> PS/2 System ROM (thru
F000)</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> F000:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> System monitor ROM</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> PCjr: software cartridge
override address</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> F400:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> System expansion
ROMs</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> F600:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> IBM ROM BASIC (AT)</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> F800:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> PCjr software cartridge
override address</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> FC00:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> BIOS ROM</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> FF00:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> System ROM</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> FFA6:E</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> ROM graphics character
table</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> FFFF:0</FONT></TD>
<TD><FONT face="Times New Roman TUR"> -</FONT></TD>
<TD><FONT face="Times New Roman TUR"> ROM bootstrap code</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> FFFF:5</FONT></TD>
<TD><FONT face="Times New Roman TUR"> 8 bytes<SPAN
style="mso-tab-count: 1"> </SPAN></FONT></TD>
<TD><FONT face="Times New Roman TUR"> ROM date (not applicable for
all clones)</FONT></TD></TR>
<TR>
<TD><FONT face="Times New Roman TUR"> FFFF:E</FONT></TD>
<TD><FONT face="Times New Roman TUR"> byte</FONT></TD>
<TD><FONT face="Times New Roman TUR"> ROM machine
id</FONT></TD></TR></TBODY></TABLE></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT
face="Times New Roman TUR"></FONT> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT
face="Times New Roman TUR"></FONT> </P>
<P><FONT face="Times New Roman TUR">在绝大多数PC中,UMA中包含一个384
KB的RAM内存。如果UMA区域中的任何地址被ROM使用,那么这个地址后面的RAM就被系统隐藏了。然而,这并不意味着这些被隐藏的RAM被浪费了。</FONT></P>
<P><FONT face="Times New Roman TUR">对于这些被用做System ROM和Video
ROM的ROM来说,它的一个问题就是它比RAM的访问速度要慢。ROM的访问时间一般为120到200纳秒,而RAM的访问时间一般为50到70纳秒;更何况,系统RAM一次访问32-bit,而ROM是16-bit。结果就是,相对于访问系统内存,访问BIOS代码是非常慢的。</FONT></P>
<P><FONT
face="Times New Roman TUR">所以,我肯定你已经知道我要说什么了:既然在ROM的后面隐藏着RAM,我们可以将ROM中的内容影射到RAM中以提高性能。事实上,绝大多数系统也是这么做的,这被叫做ROM
Shadowing。你可以通过一组BIOS参数来控制哪些ROM区域被影射到RAM中。</FONT></P>
<P><FONT
face="Times New Roman TUR">当一个内存区域的shadowing被通过配置BIOS参数打开的话,如果PC机被加电,则在机器启动的过程中,BIOS会将ROM中的内容拷贝到相应的RAM中,然后将这段RAM设为写保护,然后禁止使用ROM。这个时候,这些RAM就看起来象ROM一样了。只不过性能要高于真正的ROM。</FONT></P></SPAN><SPAN
lang=EN-US><FONT face="Times New Roman"><SPAN style="mso-tab-count: 1">
<HR width="100%" noShade SIZE=2>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> </SPAN></FONT></SPAN><SPAN
lang=EN-US><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN></FONT></SPAN><SPAN lang=EN-US><FONT
face="Times New Roman"><SPAN style="mso-tab-count: 1"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT
face="Times New Roman TUR" size=5>1.1.4 High Memory
Area</FONT></STRONG></P>
<P><FONT face="Times New Roman TUR">高端内存区High Memory Area
(缩写为HMA),是扩展内存(Extended Memory)起始位置的65,520 bytes(64 KB - 16
bytes)。从技术上说,它是地址为100000h~10FFEFh的内存。它很特别,因为它是扩展内存中唯一可以在Real
Mode下可以被直接访问的一部分。在正常的情况下,CPU根本无法在Real
Mode下直接访问扩展内存,如果要访问,则必须进入保护模式,或者使用特殊的驱动程序。</FONT></P>
<P><FONT face="Times New Roman TUR">请不要把它和上位内存区(Upper Memory
Area)混肴,它们是完全不同的区域。</FONT></P>
<P><FONT
face="Times New Roman TUR">由于早年奇怪的设计决策,或者因为当时的不寻常的环境背景,造成了今天PC机上存在许多怪异的硬件和软件设计。HMA或许是所有这些怪异的设计之中最奇怪的设计之一。尽管前面我们一直在说HMA可以在Real
Mode下可以被直接访问,但事实上,它能够被访问与否取决于一个被称做A20 Gate的家伙是否被打开。如果A20
Gate是被禁止的,HMA则无法被访问;只有A20 Gate是被打开的,HMA才可以被访问。(关于A20 Gate请参考</FONT><A
href="javascript:if(confirm('http://pagoda-ooos.51.net/os_book/booting-a20_gate_1_4.htm%20%20\n\nThis%20file%20was%20not%20retrieved%20by%20Teleport%20Pro,%20because%20the%20server%20reports%20that%20this%20file%20cannot%20be%20found.%20%20\n\nDo%20you%20want%20to%20open%20it%20from%20the%20server?'))window.location='http://pagoda-ooos.51.net/os_book/booting-a20_gate_1_4.htm'"
tppabs="http://pagoda-ooos.51.net/os_book/booting-a20_gate_1_4.htm"><FONT
face="Times New Roman TUR" color=#000000>1.4 A20 Gate</FONT></A><FONT
face="Times New Roman TUR">)</FONT></P>
<P><FONT face="Times New Roman TUR">HMA的一个用途是,由于DOS是运行在Real Mode下的,所以当后来640
KB常规内存开始使用紧张的时候,DOS就通过一个特殊的驱动程序HIMEM.SYS将自己放在HMA中,以腾出更多的常规内存供应用程序使用。HIMEM.SYS所做的就是将A20
Gate打开。</FONT></P>
<P><FONT face="Times New Roman TUR">由于A20 Gate的打开与否,决定的HMA是否可以在Real
Mode下被访问,所以HMA的另外一个用途就是用来测试A20 Gate是否已经被打开。</FONT></P>
<P><FONT face="Times New Roman TUR">其实,从我们前面的介绍中就已经明白,其实HMA仅仅在Real
Mode下才有其特殊性,这也是其被单独拿出来被叫做HMA的意义,在Protected
Mode下,HMA和其它的扩展内存没有什么性质上的不同,所以在Protected Mode下谈论HMA是没有意义的。</FONT></P><SPAN
lang=EN-US><SPAN style="mso-tab-count: 1"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT
face="Times New Roman TUR">
<HR width="100%" noShade SIZE=2>
</FONT>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> </P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l5 level1 lfo3"><STRONG><FONT
face="Times New Roman TUR" size=5>1.1.5 Extended Memory</FONT></STRONG></P>
<P><FONT face="Times New Roman TUR">1 MB以上的所有物理内存都被称做Extended Memory
(扩展内存)。它们之所以被叫做扩展内存是因为这些内存是早期8086 1 MB内存限制的扩展。</FONT></P>
<P><FONT face="Times New Roman TUR">除了最初的65,520 bytes,在Real
Mode下,扩展内存是不能被直接访问的。如果要访问全部的扩展内存,必须进入Protected Mode。</FONT></P>
<P><FONT face="Times New Roman TUR">80286提供了24-bit的地址线,在PM下可以访问15
MB的扩展内存,80386极其后续系列提供了32-bit的地址线,在PM下可以访问高达4 GB-1
MB的扩展内存。这为以后的OS设计以及应用程序提供了足够的空间。</FONT></P>
<P><FONT face="Times New Roman TUR" size=2></FONT></P><FONT
face="Times New Roman TUR">
<HR width="100%" noShade SIZE=2>
</FONT>
<P></P>
<P><FONT size=2><FONT face="Times New Roman TUR"><STRONG>SIMM</STRONG>(Single
In-line Memory Module), a small circuit board that can hold a group of
memory chips. Typically, SIMMs hold up 8 (on Macintoshes) or 9 (on PCs) RAM
chips. On PCs, the ninth chip is often used for parity error checking. Unlike
memory chips, SIMMs are measured in bytes rather than bits. SIMMs are easier to
install than individual memory chips. The bus from a SIMM to the
actual memory chips is 32 bits wide. A newer technology, called <I>dual in-line
memory module (DIMM)</I>, provides a 64-bit bus. For modern Pentium
microprocessors that have a 64-bit bus, you must use either DIMMs or
<I>pairs</I> of
SIMMs.</FONT></FONT></P></SPAN></SPAN></SPAN></SPAN></SPAN></FONT></SPAN></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -