浅谈DOS扩展器和DPMI
浅谈DOS扩展器和DPMI
作者:TBsoft Software Studio(2005) 转载自:Changjiang的专栏
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,都足以证明这一点。我们不缺技术,缺的只是做实事的人!
浅谈DOS扩展器和DPMI相关推荐
- dos攻击mysql_浅谈DOS与DDOS攻击
DOS(Denial of Service)攻击,即拒绝服务攻击,其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带宽攻击和连通性攻击. DDOS(DDoS:Distribut ...
- 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/ 写在前面的话 自比特币 ...
- 浅谈几种区块链网络攻击以及防御方案之日蚀攻击
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/12/network_attack_of_blockchain_eclipse_attack/ 写在前面的话 自 ...
- 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...
- Java架构师成长之道之浅谈计算机系统架构
Java架构师成长之道之浅谈计算机系统架构 Java架构师成长之旅 1.1 信息技术发展趋势 目前信息技术主要经历了互联网.移动互联网以及以大数据.云计算.人工智能和区块链为代表的新兴技术三个阶段.而 ...
- [转]浅谈OCR之Tesseract
转载请注明出处:http://www.cnblogs.com/brooks-dotnet/archive/2010/10/05/1844203.html 浅谈OCR之Tesseract 光学字符识别( ...
- 浅谈Nginx负载均衡与F5(硬件)的区别
转自:浅谈Niginx负载均衡与F5的区别--IDEADATA.Inc 前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙&q ...
- 浅谈Nginx负载均衡与F5的区别
转载地址: http://www.ideadata.com.cn/wisdomAction/readWisdom.do?id=75 前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所 ...
- 浅谈 DDoS 攻击与防御
浅谈 DDoS 攻击与防御 原创: iMike 运维之美 什么是 DDoS DDoS 是英文 Distributed Denial of Service 的缩写,中文译作分布式拒绝服务.那什么又是拒 ...
最新文章
- HttpUnit学习笔记
- MongoDB--预备
- ALBERT第一作者亲自讲解:词向量、BERT、ALBERT、XLNet全面解析
- 04 列表的增删改查 常用方法 元祖 range
- Java IO: FileReader和FileWriter
- flash 异常修复:QQ 的 flash 图标显示异常?QQ 秀、表情加载异常?一招解决
- kettle使用_ETL工具(kettle)-《PentahoKettle解决方案-使用PDI构建开源ETL解决方案》
- 20 个百无一用的 Firefox 扩展
- python读取txt文件每一行_Python3基础 file for+list 读取txt文本 并 一行一行的输出(低效率)...
- 了解 object.defineProperty 的基本使用方法(数据双向绑定的底层原理)
- 「傻瓜」才能写出好代码!
- 【科普】有趣“小学”数学题,做出一道即可成名(持续补充)
- Cocos Creater 获取和设置世界坐标
- 微信小程序开发部署发布可以在10分钟内完成
- vue 接入天地图并且在地图上画基站扇形覆盖物
- 我的姥爷走了,今后再也没有这个严厉而又较真儿的人
- 【Win10电脑更新】Win10电脑更新后小娜Cortana不能登录、咨询和兴趣不能查看的问题怎么解决
- [前端]-- jquery学习1
- Git详解之特殊配置与钩子应用
- 嗯,比较准确~~~~~~星座这东西……
热门文章
- 拉格朗日乘子法——从单约束到多约束的直观翻译
- 亮眼财报业绩背后,难掩富途控股估值陷阱
- 按键精灵脚本笔记 鼠标按直线轨迹移动
- 迅雷链接转为普通链接(js实现)
- 2021程序员笔记本电脑推荐
- repo+manifests+git方式管理安卓代码
- 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (3/3)
- 【干货】电商知识图谱构建及搜索推荐场景下的应用.pdf(附下载链接)
- Photoshop钢笔工具抠图和图层填充
- Linux安装RabbitMQ详细教程