免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2806 | 回复: 0
打印 上一主题 下一主题

回顾IBM PC机之内存分配——扩展内存和扩充内存(1) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-16 00:06 |只看该作者 |倒序浏览

                                               
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则只能保持数据,不能运行代码。
待续
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104230/showart_2071389.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP