Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138903
  • 博文数量: 12
  • 博客积分: 2502
  • 博客等级: 少校
  • 技术积分: 163
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-20 23:32
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(11)

我的朋友

分类: 服务器与存储

2009-10-16 00:06:10

IBM PC的内存分配可谓复杂:常规内存(Conventional Memory)、上位内存(Upper Memory)、高位内存(High Memory)、扩展内存(Extended Memory)还有一个扩充内存(Expanded Memory)。对于前3个术语的概念大家Google一下可以很轻松地理解它们的具体定义,而对于后两个众说纷纭,翻开很多书本也是解释地不太一样。干脆我也把我自己对它们的具体了解说一下,在写之前我都是查阅了相关标准的,但鉴于英语水平(无奈很多有用的东西都是英文的)和理解水平有限,不能保证完全正确,如有错误请大家一定指出。

首先要说明一下,扩展内存和扩充内存的概念跟DOS操作系统是分不开的,因为扩展内存标准和扩充内存标准都是建立在DOS的基础之上的。

那么让我们进入正题吧。

☆语义之区别

上网查了一下,有人动真格的了,掏出《辞海》来证明“扩展”和“扩充”翻译的正确性,这种严谨的学术作风的确很值得赞扬,呵呵。

Extended Memory翻译为扩展内存,它是指1MB以上内存。那么就可以说,8086CPU是没有扩展内存的。为什么呢,因为8088CPU只有20根地址线,最大寻址空间就是1MB(这也正是把1MB作为一个界限的原因),谈何1MB以上呢。而在《微型计算机原理与接口技术(第三版)》(周荷琴,中国科学技术大学出版社)这本书的第234页中,把利用Shadowing技术获得的384KB的地址空间称为扩展内存,这种说法有待商榷。并且它的说法笼统,看的笔者如坠雾里。总之,各位看官,记住上面我说的就行了,千万不要被他们给忽悠了。

言归正传,要是更精确地定义的话,就要用到扩展内存标准中的原话了。

Extended Memory:Memory in 80286 and 80386 based machines which is located above the 1MB address boundary。

对于80286地址线24根可寻址16MB,扩展内存是?什么,15MB,哈哈,恭喜你都会抢答了!对于80386自己算去吧。

大家看出了没,扩展内存都是可以实际寻址的,这就是为什么现在的操作系统工作在保护模式下,甚至于连一些运行于DOS下游戏都要使用保护模式。但是为什么还会有一个扩充内存呢,请听我慢慢道来。

Expanded Memory翻译为扩充内存。它是为了克服8088和8086CPU的寻址空间小的缺陷而发展出来的。在DOS操作系统中一般程序和数据只能保存在常规内存的640KB中(当然这还得除去DOS内核等所占的内存空间,最终剩的内存空间也只有不到580KB),少得可怜。运行一个“大型”程序,这么点内存太无能为力了。虽说,1984年8月IBM推出基于80286的IBM PC/AT,但在当时普遍应用的还是16位地址的PC机。所以为了解决这个问题,Lotus,Intel和Microsoft联合起来推出了一个标准,它就是Expanded Memory Specification,扩充内存标准。

扩充内存标准英语缩略为EMS,同时采用这个标准的内存也称为EMS。

扩展内存标准英语缩略为XMS,同时采用这个标准的内存也称为XMS。

☆内涵

让我们更深入的挖掘一下吧。

扩展内存XMS中的第一个64KB区域被称为High Memory Area(HMA),就是本文开头提到的那个高位内存。为什么有单独定义出一个高位内存呢?这跟16位CPU的寻址方式是分不开的,学过微机原理的都知道8086CPU采用分段体制来寻址,正是这种机制导致了这块特殊区域的出现,能否在实模式下利用到这块区域又跟一个叫A20 Gate的东西分不开。如果严格的来说的话,该区域的大小为(64K-16)B。

在往上呢,那就是Extended Memory Blocks(EMB)。

具体看下图

|--------------------------------| Top of Memory
| |
| |
| |
| |
| EMB |
| |
| |
| |
|--------------------------------| 1088K
| |
| |
| HMA |
| |
| |
|--------------------------------| 1024K or 1MB

HMA与EMB的区别就在于:对于DOS来说HMA区域不仅可以保存数据也可以作为存放代码的地方,而EMB则只能保持数据,不能运行代码。

待续

阅读(2743) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~