DOS扩展器

(重定向自DOS 扩展器

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

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

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

DOS扩展器操作编辑

DOS可见内存
实模式
640K
DOSDOS
保护模式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扩展器举例编辑

  • Tenberry 软件公司的DOS/4G、DOS/4GW英语DOS/4G与DOS/16M。
  • Phar Lap英语Phar Lap (company)286|DOS扩展器、386|DOS扩展器。
  • Al Williams在《Dr. Dobb's Journal》[2][3]内付梓的PROT,是32位DOS扩展器,在另两册书亦有[4][5]。该扩展器可在仿真模式运行DOS与调用BIOS的优点,不用真的切换到实模式。
  • Thomas Pytel、Charles Sheffold的PMODE英语PMODEPMODE/W[永久失效連結]後者在Watcom C替代了DOS/4GW,且在demoscene程序员中很流行。
  • Ergo(以前是 Eclipse, formerly A. I. Architects)OS/286、OS/386 扩展,与 DPM16、DPM32 服务。
  • Microsoft Windows在1990年前所有(64位元版本除外)版本的Windows,都包括英语Virtual DOS machine都包括 DPMI服务与 DOS扩展器[6]
  • HX DOS Extender提供的Win32有限支持。
  • DosWin32提供的Win32有限支持。
  • Charles W. Sandman的CWSDPMI英语CWSDPMI,是DPMI英语DOS Protected Mode Interface服务器,使用32位保护模式DOS的DJGPP程序。
  • 旧(pre-v2)版本的GO32使用DJGPPFree Pascal
  • Salford 软件的DBOS,是32位保护模式DOS扩展器,主用于其FTN77(Fortran编译器)。
  • Narech K模仿DOS/4GW英语DOS/4GDOS/32英语DOS/32


著名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. 

外部链接编辑