分享
 
 
 

浅谈DOS扩展器和DPMI

王朝other·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

浅谈DOS扩展器和DPMI

作者:TBsoft Software Studio(2005)

MS-DOS已经成为历史,但是DOS并没有消失。

没有MS-DOS,还可以使用FreeDOS等GNU DOS系统,现在许多计算机厂商在低档计算机中不预装昂贵的Windows,而预装FreeDOS,FreeDOS的网站是http://www.freedos.org

在某些特殊场合,例如工控,DOS的单任务特点使得DOS的实时性远高于Windows,又可以完全直接透明地使用硬件,DOS应用程序仍然有继续开发的必要。

提到开发DOS应用程序,新一代程序员可能很少知之了,老一代程序员的第一印象就是一大堆“限制”:16位应用程序,640K基本内存限制,64K段长限制……开发DOS应用程序不能使用32位编程,不能分配和使用大内存(即使你有1G内存,也只能使用640K基本内存,而且分配一块内存最大不能超过64K)几乎已成定论,很多硬件程序员不得不转向Windows。

DOS不能使用32位编程?不能使用4G内存?答案是否定的,很多老一代程序员异口同声地说:使用Watcom C/C++!使用DOS/4GW!可以开发32位的DOS应用程序,使用4G内存。当年大名鼎鼎的游戏DOOM II就使用了DOS/4GW,DOS/4GW是一种DOS扩展器(DOS Extender),开发DOS/4GW的公司就是今天让新一代程序员津津乐道的Rational公司。

DOS扩展器可以使DOS运行在32位的保护模式下,可以在DOS下运行32位保护模式应用程序,使用4G内存,相当于在使用DOS扩展器的情况下,DOS可以认为是32位的操作系统。实际上Windows 9x的底层,有一部分就相当于DOS扩展器。

DOS扩展器虽然能够使DOS运行在32位的保护模式下,但是DOS扩展器不可能完全取代DOS,当应用程序使用DOS功能调用(INT 21H)时,特别是访问文件时,必须回到实模式或者虚拟8086模式下调用DOS功能调用。还有,如何将实模式切换到保护模式?这些工作都可以交给DPMI(DOS Protected Mode Interface,DOS保护模式接口)完成,DPMI是保护模式的DOS扩展器和实模式的DOS之间的接口,DOS扩展器通过DPMI完成切换到保护模式,以及在保护模式下访问实模式的DOS功能。

DPMI是一种标准,Windows 9x支持DPMI 0.9,相当一部分Windows 9x中的Win32 API最终通过DPMI调用DOS功能调用(INT 21H),不过默认情况下Windows 9x的文件系统基本上不再调用DOS功能调用,所以Windows 9x基本上是完全的操作系统,但Windows 9x也是不可能不依靠DOS的,Windows 9x的相当一部分相当于DOS扩展器。

换而言之,DOS下32位应用程序调用DOS扩展器,DOS扩展器调用DPMI,DPMI为DOS扩展器提供服务,使得DOS扩展器可以和DOS协调工作,提供DPMI的应用程序称为DPMI服务器,例如Windows 9x就可以作为DPMI服务器。DOS/4GW是DOS扩展器,同时也是DPMI服务器,部分资料将DOS扩展器和DPMI混为一谈,实际上是很不准确的。DPMI是供DOS扩展器使用的接口,在DOS扩展器上运行的32位应用程序应该调用DOS扩展器的功能,不应该直接调用DPMI。

目前在DOS下开发32位应用程序可以使用GNU编译器——DJGPP,DJGPP的网站是http://www.delorie.com/djgpp/。DJGPP是GNU C/C++编译器——GCC在DOS扩展器GO32下的移植版本,GO32使用DPMI,需要DPMI服务器,DJGPP中自带的CWSDPMI是GNU DPMI服务器,GO32也可以使用其他DPMI服务器,例如在Windows 9x的MS-DOS方式下直接运行。新版DJGPP编译生成的的EXE文件中包含32位DOS应用程序部分、GO32部分和相应的STUB,运行后STUB直接加载运行DOS扩展器GO32部分,然后加载运行32位DOS应用程序部分,GO32必须DPMI支持,可以自动加载调用CWSDPMI。

所以,新版DJGPP编译生成的的EXE文件并不是使用CWSDPMI作为DOS扩展器,真正的DOS扩展器是包括在EXE文件中的GO32部分,CWSDPMI只是GO32使用的DPMI服务器。FreeDOS+DJGPP,为21世纪的DOS,开发21世纪的新一代DOS应用程序奠定了基础,是目前开发新一代DOS应用程序的优秀选择。

实际上,通过若干(不需要很多)程序员的合作,开发一个和Windows 9x兼容,可以运行部分、大部分乃至于几乎全部Win32应用程序的操作系统,并不是一件做不到的事情。国外早就有WDosX、SEAL、ReactOS等开源项目,使用Embedding Windows,Windows 98可以裁剪到8M,都足以证明这一点。我们不缺技术,缺的只是做实事的人!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有