首页 > 代码库 > 如果程序太大而不能在DOS下运行,怎样才能使它在DOS下运行呢?

如果程序太大而不能在DOS下运行,怎样才能使它在DOS下运行呢?

如果你的程序因太大(超过640KB)而无法在DOS下运行,有两种办法可为该程序提供更多的内存。一种办法是使用覆盖管理程序(overlay manager)。覆盖管理程序用来管理程序的模块,并根据需要把它们从磁盘中读入内存或从内存中删去。这样,即使你的程序有几兆字节那么大,仍然可以在 只有640KB可用内存的计算机上运行。一些高级的覆盖管理程序允许你对需要同时读入和删除的模块进行“编组”,这有助于你通过精心调整程序来改善它的性 能。其它一些稍差的覆盖管理程序不具备这种功能,因此使用它们时你无法通过编组方式去精心调整覆盖模块。

另一种获得更多的可用内存的办法是使用DOS扩展程序(DOS extender),DOS扩展程序是一种特殊的应用程序,它通过使用386,486或更新机型的保护模式,按一个平面地址空间的方式来存取多达数兆字节的内存。当你的程序和DOS扩展程序连接时,DOS扩展程序的代码将成为该程序的启动代码的一部分。当你的程序被执行时,DOS扩展程序将被装入,并且将掌握程序的控制权。所有的内存分配调用都要通过DOS扩展程序来进行,这样就跳过了DOS,而由DOS扩展程序来分配超过640KB的内存。

遗憾的是,DOS扩展程序也有一些明显的缺点,其中之一就是,在你发行你的程序时,大多数DOS扩展程序要求你交纳运行版税。这可能非常昂贵,特别是在你有很多用户时。也有少数编译程序带有免收版税的DOS扩展程序,但这只不过是一种例外。使用DOS扩展程序的另一个缺点是它通常要求你通过修改源代码而不是通过DOS调用来使用其应用编程接口(API)。

覆盖管理程序一般不要求运行费用,因此它具有较高的性能价格比,并且比DOS扩展程序更便宜。此外,在使用覆盖管理程序时,一般不需要修改源代码,在大多数情况下,使用覆盖管理程序对程序来说是透明的。