發信人tester.bbs@bbs.csie.ncu.edu.tw (try or test),
看板Programming
標 題Re: [問題] dos為何要有記憶體配置的中斷指令?
發信站中央大學松濤風情資訊站 (Fri Apr 13 16:25:26 2007)
轉信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.csie.ncu!Evergreen
> ==>發信人: sniffer@kkcity.com.tw ( ), 信區: programming
> ※ 引述《dolphinus.bbs@ptt.cc (鬼扯英吉GTB)》之銘言:
> > ※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言:
> > : DOS 7.0 跟 win95 已經是同一種版本了, 從 win3.1 之後開了多個視窗
> > : 同時跑(至少是交錯地跑), 要算那一種系統 ?
> > PCDOS 7.0 基本上是 MSDOS 6.0 base 的東西, 跟 MSDOS 7.0
> > 兩碼子事, 而且 Win31 下可以協調式多工跟 DOS kernel 是
> > 沒有關係的.
> win9x 的 DOS 也還是純 DOS, 只是有 fat32, 並且留後門讓 win32 共存
> protected mode 是 HIMEM.SYS 提供的 VCPI, 所以舊的程式可以當它是老 DOS
> 沒有 HIMEM.SYS 它就呆在 real mode
====
Win3.1 執行視窗模式的程式時, 這個系統的表現是多重程式與多工的.
此時, DOS 與 Win3.1 是並存的, DOS 主要是用來支援 File System
及某類 Real-mode I/O driver 的使用. 此時, 擺在 1MB 之後的程式
是在 protection mode 下執行, 而 80286/386 CPU 卻是有硬體支援的
Task Switch 需要程式與之配合, 在 protection mode 下就因硬體對
記憶體的隔離保護與多工切換, process 的概念就具體了.
Win9X 的 DOS 還不如將之稱為是類似 "終級 OS" 使用的 Boot Loader,
只是在 Win 3.X 的系統下, 並不是用過即拋棄的片段, 是可以並存於不
同模式下切換著使用, 但多工的管理並不來自於 DOS, 但需由 DOS 來協
助取得與載入, 在載入程式於保護模式下的記憶體(就是擴充模式記憶體
)時, 這個載入動作需特定的, 位於可供溝通的兩用區的 xxx.sys 協助
(高人們稱之為後門). 但 DOS 這邊還是得知道全部記憶體(雖然 Real
Mode 的 DOS 無法碰觸)的使用記載, 在 Win3X 上來後, 原來的 DOS 及
其記憶體, Real-Mode I/O driver 整個比較像個獨立的 8086 Machine,
此時, 這堆 8086 程式被執行時, 真像是個 "process" .
Win9X 之後, 這些 Real-Mode 的 8086 程式就大量移往 Virtual Mode
裡執行, 此時的 DOS 就再也不是那麼必要, 因此 DOS 寄身的 8086
Machine 就跟著 VM386 的技術虛擬化變為可化身多部的 VM86 執行 DOS
prompt .
現在讓 MS 睡不著覺的就是比 VM86 更進一步的 X86本身(如 VM386)
的全虛擬化, 竟然不是由她主導. 但虛擬就是 "相容" 的關鍵, 而相容既
不是守舊也不是食古不化, 而是"連續性不留空隙(不被競爭者趁虛而入)"
的前進.
原始的 DOS 不必管理 PROCESS , 幾乎也不管記憶體配置, 但這個
DOS 隨年代與硬體技術變遷增加一些必要的功能如記憶體的分配記載, 可
以支承下一代的多工 OS 或其他 AP (如 Win) 的利用記憶體.
> > 實際上, 只有 VM86, 沒有 VM386 這個模式存在.
> DOS 有 malloc 最重要的就是讓 application 知道那些 RAM 可以用
> 不同系統設定下, DOS 自己佔的 memory 也不一樣, application
> 如果沒有 malloc 怎知那一塊 RAM 不能碰, 就算沒有別隻程式也一樣
> EXE 檔還有 overlay(swap) 更是需要記憶體管理
> OS 最重要的就是 hardware abstraction, unix 就是為了 game porting
> 而生 UI, multitask 不過是 hardware abstraction 的表達方式
> 所以像 vista 這種 application 不相容的東西只能當 screensaver
======
偏軟體的喜歡 Hardware Abstraction 這個說法, 熟硬體與架構的可能會說
軟體是遷就硬體使與之配合, 補充其不足, 並使之讓使用者覺得方便好用.
"相容" 的奧妙在捨棄少數(非主流)但又不讓他們覺得被忽略, 對新加
的功能明明還沒人用, 卻又讓大家覺得這是多數(主流)者都想要的, 但對真
正現存的多數現有的, 是絕不會忽略以犯眾怒. 從單工的 DOS 到現今的視
窗網路多工, 優勝的關鍵就是 "不給空隙的過渡" .
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234
噓 dolphinus:Win31用protect_mode耶-.- 210.241.239.20 04/13 16:53
推 leicheong:挑點小bug:real/protected/V86是CPU狀態 202.134.126.84 04/13 16:56
→ leicheong:不可能針對每程式設定. 202.134.126.84 04/13 16:57
→ leicheong:還有286時protected mode並不能切換回 202.134.126.84 04/13 16:58
→ leicheong:real mode的. 202.134.126.84 04/13 16:59
→ leicheong:還有當Win95載入時, DOS的很大一部份 202.134.126.84 04/13 17:34
→ leicheong:interrupt都會被相應的VxD取代, 因此說 202.134.126.84 04/13 17:35
→ leicheong:Win9X的command prompt (即使是跑 202.134.126.84 04/13 17:36
→ leicheong:command.com)不能說是DOS的說法. 202.134.126.84 04/13 17:37
→ leicheong:進入Windows後基本上DOS部份的機能都 202.134.126.84 04/13 17:38
→ leicheong:被Windows取代了, 討論那沒意義... 202.134.126.84 04/13 17:39
推 leicheong:最後, VM386是FreeDOS的memory manager 202.134.126.84 04/13 17:43
→ leicheong:而VM/386是IGC的多用戶DOS系統, 都和 202.134.126.84 04/13 17:43
→ leicheong:討論無關. 202.134.126.84 04/13 17:44
推 UNARYvvv:搞不懂 tester 為何一直說 VM"386"220.132.114.113 04/13 21:06
→ UNARYvvv:Virtual 8086 mode 簡稱 V86220.132.114.113 04/13 21:07
→ UNARYvvv:他從很久以前每次扯到這個都會說VM"386"220.132.114.113 04/13 21:08
推 abcdefghi:他前幾篇有講了,術語和專業是相關的... 140.113.23.107 04/13 21:40
推 UNARYvvv:我有看到,而且他還說220.132.114.113 04/13 21:50
→ UNARYvvv:「用錯術語的麻煩就是會引起誤會」= =220.132.114.113 04/13 21:51
→ dolphinus:問題是根本沒有 V386 模式,他自己想像的218.168.202.230 04/15 00:11