网站大量收购独家精品文档,联系QQ:2885784924

DOS下XMS,EMS,DPMI,DOS4GW研究.pdf

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DOS下XMS,EMS,DPMI,DOS4GW研究

DOS DEBUG,XMS,EMS,DPMI,DOS4GW 研究 wxleasyland 20 11.2 本文引用了很多资料。 一、 概念 实模式和保护模式 在 386 以上档次的微机中,有两种存储器工作方式,一种称为实地址方式或实方式,另一 种称为保护方式。 在实方式下,物理地址仍使用20 位,所以最大寻址空间为1MB,以便与8086 兼容。 保护方式采用32 位物理地址,寻址范围可达4GB 。 DOS 系统在实方式下工作,它管理的内存空间仍为1MB,因此它不能直接使用扩展存储器。 EMS:扩充内存(Expanded Memory )。 1985 年初,Lotus 、Intel 和Microsoft 三家共同定义了LIM -EMS ,即扩充内存规范,通常 称EMS 为扩充内存。80386DX 已经是32 位微处理器,实际寻址能力达4GB,反观旧的内存管 理规范却处处碍手碍脚,于是扩充内存Expanded memory 规范横空出世,取代了INT 15H,使 程序能够访问32MB 的内存空间。EMS 通过一种页面映射分配技术的反复映射访问所有的EMS 内存,这样的效率并不高,所以只有少数老游戏使用了EMS 。EMS 的原理和XMS 不同,它采 用了页帧方式。页帧是在1MB 空间中指定一块64KB 空间 (通常在保留内存区内,但其物理存 储器来自扩展存储器),分为4 页,每页16KB 。EMS 存储器也按16KB 分页,每次可交换4 页 内容,以此方式可访问全部EMS 存储器。符合EMS 的驱动程序很多,常用的有EMM386.EXE 、 QEMM 、TurboEMS 、386MAX 等。DOS 和 Windows 中都提供了EMM386.EXE 。emm386.exe 可以把扩展内存(XMS)仿真成扩充内存(EMS),以满足一些要求使用扩充内存的程序。 XMS:扩展内存Extended memory。 由于EMS 并没有解决根本的问题,Microsoft 又制定了扩展内存Extended memory 管理规范 XMS ,通过在实模式与保护模式之间的快速切换,使程序在保护模式中能够直接使用系统所有 内存,从而快速访问XMS 。XMS 简单而实际,被众多DOS 游戏采用。很多游戏采用了一个signed integer 来存储XMS 的数 ,导致32767 以上的数值变成负数,这就要求我们降低内存数量到 32MB 了。Microsoft 的HIMEM.SYS 是一个符合XMS 规范的管理扩展内存的驱动程序。但在这 种方式下,扩展内存只能作为数据区使用,运行于实地址模式下的DOS 及其应用程序代码不能 存放其中。 注:物理内存都是一样的,EMS 和XMS 只是操作系统管理内存的方式不一样而已。EMS 方式更早出现,XMS 方式是更迟出现的!!但是XMS 更简单好用,所以Microsoft 就没有直接 支持EMS 了,而是直接支持XMS ,DOS 里加载HIMEM.SYS 就是XMS 了。如果要EMS,则 要再加载EMM386.EXE ,将XMS 仿真成EMS ! 保留内存:占据640KB~1024KB 地址空间。 分配给显示缓冲存储器、各适配卡上的ROM 和系统ROM BIOS ,剩余空间可作上位内存 UMB 。UMB 的物理存储器取自物理扩展存储器。此范围的物理RAM 可作为Shadow RAM 使 用。 (我注:我个人觉得是这样: 在640KB 以下时,地址是分给了内存,CPU 地址线在这范围内时,就是选通到内存去了。 640KB~1024KB 地址是分给了ROM 等,而不是给内存,所以CPU 地址线在这范围内时, 硬件自动选通的是去ROM、显卡内存等地方,而不是去内存。这样,由于硬件设计的原因,这 部分300 多KB 的物理内存容量就相当于废掉了! 保护模式下,CPU 地址线在 1MB 以上时,就又选通到去内存了。比如XMS 或EMS 管理 时。 也就是说: 如果只装了1MB 的物理内存条,只用到了640KB,其它300 多KB 的物理容量都废掉了, 这300 多KB 也不能用作XMS 或EMS ! 如果只装了2MB 的物理内存条,XMS 或EMS 也只能用到1MB 物理容量,即1MB-2MB 之间的物理内存空间,而640KB-1024KB 之间的物理空间也是用不到的! EMS 有映射软件地址的功能,即可以将地址

文档评论(0)

ayangjiayu4 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档