- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
相识DOS下的内存管理机制
了解DOS下的内存管理机制
DOS操作系统最早设计时,PC机的硬件系统只支持1M字节的寻址空间,所以DOS只能管理最多1M字节的连续内存空间。在这1M内存中,又只有640K被留给应用程序使用,它们被称为常规内存或基本内存,其它384K被称为高端内存,是留给视频显示和BIOS等使用的。在1982年,640K内存对微型计算机来说显得绰绰有余,人们甚至认为,640K的内存可以用来干任何事。现在看起来有些可笑,但在当时,情况确实如此。
现在的情况是,即使你的电脑装有几兆或几十兆内存,但如果你使用DOS操作系统,那么你也只有640K的内存可以直接使用,1M以上的内存要通过一些内存管理工具才能使用。值得庆幸的是,Windows 95已经不存在常规内存的限制了,你所有的内存,不管是8M还是128M,都可以被直接使用。
在DOS下,系统中存在以下四种内存: 常规内存(Conventional Memory); 高端内存(Upper Memory); 扩充内存(Expanded Memory); 扩展内存(Extended Memory)。
常规内存指的是0-640K的内存区。在DOS下,一般的应用程序只能使用系统的常规内存,因而都要受到640KB内存的限制。而且由于DOS本身和config.sys文件中的安装的设备驱动程序和autoexec.bat文件中执行的内存驻留程序都要占用一些常规内存,所以应用程序能使用的常规内存是不到640K的。有很多时候,我们都要想方设法地整理内存,好为一些“胃口”比较大的应用程序留出足够的常规内存,这一点想必是许多DOS时代的电脑爱好者最熟悉不过的了。
高端内存是指位于常规内存之上的384K内存。程序一般不能使用这个内存区域,但是EMM386.exe可以激活高端内存的一部分,并且它允许用户将某些设备驱动程序和用户程序用Devicehigh或LH(即loadhigh)装入高端内存。dos=high,umb也是把DOS的一部分装到高端内存里。这里的umb是高端内存块(Upper Memory Block)的缩写。
扩充内存是一种早期的增加内存的标准,最多可扩充到32M。使用扩充内存必须在计算机中安装专门的扩充内存板,而且还要安装管理扩充内存板的管理程序。由于扩充内存是在扩展内存之前推出的,所以大多数程序都被设计成能使用扩充内存,而不能使用扩展内存。由于扩充内存使用起来比较麻烦,所以在扩展内存出现后不久就被淘汰了。
扩展内存只能用在80286或更高档次的机器上,目前几乎所有使用DOS的机器上超过1M的内存都是扩展内存。扩展内存同样不能被DOS直接使用,DOS5.0以后提供了Himem.sys这个扩展内存管理程序,我们可以通过它来管理扩展内存。emm386.exe可以把扩展内存(XMS)仿真成扩充内存(EMS),以满足一些要求使用扩充内存的程序。
最后再强调一下,不管扩充内存或扩展内存有多大,DOS的应用程序只能在常规内存下运行。有的程序可以通过DOS扩展器(比如DOS4GW.exe等程序)使CPU进入保护模式,从而直接访问扩展内存;但是要注意,进入保护模式以后,计算机就脱离了DOS状态。
dos获得更多常规内存
DOS环境下的大部分程序都是在常规内存中运行,如果某个程序由于内存不够而运行失败,最常见的问题就是常规内存不足。下面介绍几种常用的释放常规内存的方法:
一、当系统配置有扩展内存时,可以将DOS的大部分代码和C的暂驻内存部分安装在高内存区(HMA)。 这要求在config.sys中包含有下述命令: device=Himem.sys dos=high
虽然Himem.sys本身也要占用少量的常规内存,但可以使用HMA将为我们节省出更多的常规内存。
二、精简config.sys和autoexec.bat文件的内容,不启动那些不必要的内存驻留程序,这些内存驻留程序往往占用很多常规内存。
如果config.sys文件中含有安装smartdrv.exe或ramdrive.sys的device命令,可以取消它们以节省常规内存。特别是smartdrv.exe要使用大量的常规内存。如果一定要使用ramdrive.sys,应保证RAM盘建在扩展内存中,而不是在常规内存中。
如果config.sys文件含有buffers命令,应减少buffers指定的磁盘缓冲区数目,每一个缓冲区会占用532个字节的常规内存。但是过多地减少盘缓冲区的个数会造成一些程序不能正常运行,一般buffers不宜小于15。
如果config.sys文件中包含lastdriver命令,取消该命令或将lastdriver设成J
文档评论(0)