DOS扩展器

DOS扩展器是一个电脑软件程序,令须保护模式环境的软件能够在实模式运行,即使其所处的操作系统只能在实模式下运作。

Tenberry软件公司DOS/4GW启动信息

DOS扩展器起初在1980年代诞生,目的是要通过Intel 80286芯片(稍后扩展到Intel 80386)的指令,以应付MS-DOS及其它同类型操作系统的内存限制。

DOS扩展器操作

DOS可见内存
实模式
640K
DOS DOS
保护模式 80286 DOS扩展器
16位访问
保护模式
80386 DOS扩展器
32位访问
保护模式
虚拟 8086模式

DOS扩展器,是“扩展的”DOS程序,保护模式程序可藉之透明地使用底层的MS-DOS应用接口。这很重要:因为许多由DOS所提供的函数接口 须为“16位的段:16位的偏移”形式来指向头640k内存英语Conventional memory中的某一块内存;然而,保护模式以《全局描述符号表英语Global Descriptor Table》描述各段的特征,用段寄存器(现称“选择子”)指向《表》项,此举与实模式不兼容。芯片须切换回实模式(或虚拟86模式)以响应某个非保护模式的请求。

除了要“建起环境、加载程序来执行”之外,DOS扩展器还须提供(其它)转换层,这包括维护它自己在1MB实模式中的所申请的内存缓冲器,这些缓存用于在底层实模式操作系统与保护模式程序之间传输数据。因为在实模式/虚拟86模式与保护模式之间切换甚为耗时,所以扩展器会复制许多实模式操作功能函数到它自己的保护模式环境内,以此减少切换次数。例如DOS在操作系统与用户级别软件之间的广泛地以中断来通讯,DOS扩展器则因而拦截许多公用硬件(例如实时时钟、键盘)与软件(例如DOS自己、鼠标应用接口)的中断。许多扩展器更处理公用中断函数,例如常规视频BIOS中断函数。

DOS扩展器在本质上就是小型操作系统,提供了许多操作系统自己的底层功能。

诞生历史

可考证得DOS扩展器是由Phar Lap英语Phar Lap (company)所创建,但主推者却是Tenberry软件公司英语Tenberry Software(以前的 Rational 系统)的386DOS/4GW英语DOS/4GW扩展器,它带来了保护模式DOS程序。后来更有 Watcom_c在C、C++与Fortran在386芯片级别上的编译器,很快就无处不在地呈现在PC应用程序、游戏(例如id Software的成名软件毁灭战士)里了。

开始只是商务程序之类的内存老饕需要DOS扩展器,后来PC游戏则把DOS扩展器的需求公诸天下。结果DOS扩展器的开发就成功了,两个新软件接口被建立出来,以照顾许多潜在冲突,这些冲突源于多种已存在的内存管理方法,现统一到只给客户程序提供唯一的接口。

第一个接口是虚拟控制程序接口英语Virtual Control Program Interface(Virtual Control Program Interface,缩写作VCPI),旋为DOS保护模式接口英语DOS Protected Mode Interface(DOS Protected Mode Interface,缩写作DPMI)所代,后者在Windows 3.0 开发中诞生[1]。它提供了应用接口,以扩展的程序与实模式软件衔接、分配内存、处理中断服务,更让扩展器自己建立了保护模式切换、允许多个保护模式程序的同时共存。

DOS扩展器举例


著名DOS扩展的应用程序

参考

  1. ^ 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. 
  2. ^ 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. 
  3. ^ 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. 
  4. ^ Williams, Al. DOS 5 A Developer's Guide. MT Books. 1991. ISBN 1-55851-177-6. 
  5. ^ Williams, Al. DOS 6 A Developer's Guide. MT Books. 1993. ISBN 1-55851-309-4. 
  6. ^ Williams, Al. DOS and Windows Protected Mode: Programming with DOS Extenders in C. Addison-Wesley. 1993: 30. ISBN 0-201-63218-7. 

外部链接