DOS扩展器
DOS扩展器是一个电脑软件程序,令须保护模式环境的软件能够在实模式运行,即使其所处的操作系统只能在实模式下运作。
DOS扩展器起初在1980年代诞生,目的是要通过Intel 80286晶片(稍后扩展到Intel 80386)的指令,以应付MS-DOS及其它同类型操作系统的内存限制。
DOS扩展器操作
实模式 640K |
DOS | DOS |
---|---|---|
保护模式 | 80286 DOS扩展器 16位访问 保护模式 |
80386 DOS扩展器 32位访问 保护模式 |
虚拟 8086模式 |
DOS扩展器,是“扩展的”DOS程序,保护模式程序可藉之透明地使用底层的MS-DOS应用接口。这很重要:因为许多由DOS所提供的函数接口 须为“16位的段:16位的偏移”形式来指向头640k内存中的某一块内存;然而,保护模式以《全局描述符号表》描述各段的特征,用段寄存器(现称“选择子”)指向《表》项,此举与实模式不兼容。晶片须切换回实模式(或虚拟86模式)以响应某个非保护模式的请求。
除了要“建起环境、加载程序来执行”之外,DOS扩展器还须提供(其它)转换层,这包括维护它自己在1MB实模式中的所申请的内存缓冲器,这些缓存用于在底层实模式操作系统与保护模式程序之间传输数据。因为在实模式/虚拟86模式与保护模式之间切换甚为耗时,所以扩展器会复制许多实模式操作功能函数到它自己的保护模式环境内,以此减少切换次数。例如DOS在操作系统与用户级别软件之间的广泛地以中断来通讯,DOS扩展器则因而拦截许多公用硬件(例如实时时钟、键盘)与软件(例如DOS自己、滑鼠应用接口)的中断。许多扩展器更处理公用中断函数,例如常规视频BIOS中断函数。
DOS扩展器在本质上就是小型操作系统,提供了许多操作系统自己的底层功能。
诞生历史
可考证得DOS扩展器是由Phar Lap所创建,但主推者却是Tenberry软件公司(以前的 Rational 系统)的386DOS/4GW扩展器,它带来了保护模式DOS程序。后来更有 Watcom_c在C、C++与Fortran在386晶片级别上的编译器,很快就无处不在地呈现在PC应用程式、游戏(例如id Software的成名软件毁灭战士)里了。
开始只是商务程序之类的内存老饕需要DOS扩展器,后来PC游戏则把DOS扩展器的需求公诸天下。结果DOS扩展器的开发就成功了,两个新软件接口被建立出来,以照顾许多潜在冲突,这些冲突源于多种已存在的内存管理方法,现统一到只给客户程序提供唯一的接口。
第一个接口是虚拟控制程序接口(Virtual Control Program Interface,缩写作VCPI),旋为DOS保护模式接口(DOS Protected Mode Interface,缩写作DPMI)所代,后者在Windows 3.0 开发中诞生[1]。它提供了应用接口,以扩展的程序与实模式软件衔接、分配内存、处理中断服务,更让扩展器自己建立了保护模式切换、允许多个保护模式程序的同时共存。
DOS扩展器举例
- Tenberry 软件公司的DOS/4G、DOS/4GW与DOS/16M。
- Phar Lap286|DOS扩展器、386|DOS扩展器。
- Al Williams在《Dr. Dobb's Journal》[2][3]内付梓的PROT,是32位DOS扩展器,在另两册书亦有[4][5]。该扩展器可在仿真模式运行DOS与调用BIOS的优点,不用真的切换到实模式。
- Thomas Pytel、Charles Sheffold的PMODE与PMODE/W[永久失效链接]后者在Watcom C替代了DOS/4GW,且在demoscene程序员中很流行。
- Ergo(以前是 Eclipse, formerly A. I. Architects)OS/286、OS/386 扩展,与 DPM16、DPM32 服务。
- Microsoft Windows在1990年前所有(64位版本除外)版本的Windows,都包括都包括 DPMI服务与 DOS扩展器[6]。
- HX DOS Extender提供的Win32有限支持。
- DosWin32提供的Win32有限支持。
- Charles W. Sandman的CWSDPMI,是DPMI伺服器,使用32位保护模式DOS的DJGPP程序。
- 旧(pre-v2)版本的GO32使用DJGPP与Free Pascal。
- Salford 软件的DBOS,是32位保护模式DOS扩展器,主用于其FTN77(Fortran编译器)。
- Narech K模仿DOS/4GW的DOS/32。
著名DOS扩展的应用程式
- Adobe Acrobat Reader 1.0(用了早期商务版本 DOS/4GW)
- AutoCAD 11(PharLap 386)
- Lotus 1-2-3发行版的第3版(Rational系统DOS/16M)
- 甲骨文公司商务版本软件
- IBM公司的Interleaf
- 1980年代的BBS软件包《Major BBS》,用了Phar Lap的DOS扩展器。
- Quarterdeck Office Systems Quarterdeck的 DESQview、DESQview/X 多任务软件
- Watcom_c在C、C++、Fortran的x86编译器
- 1990年代早期中期的无数DOS游戏,多用DOS/4GW,包括:
- id Software的毁灭战士及其续集,又如雷神之锤 (游戏)(用DJGPP写的)
- Looking Glass Studios的网络奇兵,
- Parallax Software的黑暗侵袭
- Crack dot com的Abuse
- 暴雪娱乐的魔兽争霸: 兽人与人类、魔兽争霸II:黑暗之门
- 3D Realms的永远的毁灭公爵
- Midway的真人快打系列
- 西木工作室的命令与征服、红色警戒1
- DMA Design(现称Rockstar North)的侠盗猎车手,后期游戏版本移植进了Windows以兼容新型电脑。
- NovaLogic的科曼奇:全球挑战用了特殊的非实模式内存管理器,须80386晶片支持,与其他内存管理器、虚拟DOS机器不兼容,须在CONFIG.SYS内配置复杂的DOS启动菜单。后期版本包含了一个DOS扩展器,以解上述难题。
- Windows 9x自称为“操作系统”系列,但实为高级的更灵活扩展了MS-DOS代码的Window
参考
- ^ Duncan, Ray; Petzold, Charles; Schulman, Andrew; Baker, M. Steven; Nelson, Ross P.; Davis, Stephen R.; Moote, Robert. Extending DOS: A Programmer's Guide to Protected-Mode DOS 2nd. Addison-Wesley Publishing Company, Inc. 1992: 433–462. ISBN 0-201-56798-9.
- ^ Williams, Al. Roll your own DOS extender: Part I. Dr. Dobb's Journal (CMP Technology). October 1990, 15 (10): 16–18, 20, 24. ISSN 1044-789X.
- ^ Williams, Al. Roll Your Own DOS Extender: Part II. Dr. Dobb's Journal (CMP Technology). November 1990, 15 (11): 74, 76, 80, 81–83, 85, 122–128, 130. ISSN 1044-789X.
- ^ Williams, Al. DOS 5 A Developer's Guide. MT Books. 1991. ISBN 1-55851-177-6.
- ^ Williams, Al. DOS 6 A Developer's Guide. MT Books. 1993. ISBN 1-55851-309-4.
- ^ Williams, Al. DOS and Windows Protected Mode: Programming with DOS Extenders in C. Addison-Wesley. 1993: 30. ISBN 0-201-63218-7.
外部链接
- FreeDOS维基上的DOS扩展器
- The Free Country的DOS扩展器列表