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擴充器列表