absmiddle Windows 95 是不是作業系統?


[問題] Leee.bbs@bbs.ee.nthu (我依然不懂浪漫....): Windows95 is OS ? Windows95 是 32 位元的 "作業系統"? [看法] cthuang@UUserv.Net.tw (-tong): 我想, Windows 可以說是 DOS 7.0 + Windows 4.0. 因為我在 Windows 95 的 DOS Command 中去 Run 一個可以檢查 DOS 版本的程式, 出現 7.0. 而在 Windows 95 的 about 中是 4.00.435 [看法] EightCloud.bbs@firebird (嵐雲): Win95 剛開機時, 是在個 DOS 7.0 的環境. 你可以在 config.sys, autoexec.bat 婺入驅動程式, 你 Win95 就可能如以前的 dos/win3.1x 一樣, 在執行 win95 的系統時, 可能要使用到先前載入的 dos real mode 驅動程式. 若是這樣, 可以說 Win95 是個新板的 dos+windows. 可是 Win95 不僅如此, 前面所提供的, 僅是為了相容考量,若你不在 config.sys, autioexec.bat 堸鶡璆籉騕{式,那 win95 就是一個完整的 os. 也就是, Win95 一方面可以讓你使用舊的驅動程式, 解決沒有 32bit 驅動程式的窘 境(如此的速度較慢,穩定性較差), 一方面有可以讓你使用的一個完整 OS 的效率. 你不可以因為 os/2 可以執行 win3.1 的軟體, 而說 os/2 是 win3.1 的改進版, 同樣的, 你也不能因為 win95 具有執行舊的驅動程式, 就認為 Win95還是個 dos+win. 要整體來看整個系統. [再問] Pumpkins.bbs@csie.nctu (If...): 在 "Unauthorized Windows 95" 裡面,好像是認為 Win95 並不算是一個完整的 32 位元 OS? [看法] Eric.bbs@firebird.cs.ccu (Cat): Andrew Schulman 在 7 月份的 Windows Sources 中有一篇文章,標題是 "TRUE BITS ON UPGRADING",剖析 Win16 程式是否值得移植成 Win32(在 Win95 上),以得到 Microsoft 強調的好處,像是 Win32 比 Win16 更怏、Win32 比 Win16 的程式更穩定. 內文中提到,Windows 95 的 USER 及 GDI 模組大量使用 16-bit 的程式碼 (為了速 度及相容性),所以 Win32 的程式不一定比 Win16 還快,他舉了一個例子 : 假如你 的程式大量使用 Windows 的 API,那當你將程式移植到 Win32 後,效率可能比 Win16 的版本還差,原因是大部份的 Win32 APIs 尚須 thunk 到 Win16 執行,如此一來, Win32 的版本自然比 Win16 還要慢 (因為 Win16 的程式不需要 thunking)。 所以,你認為,Win95 是不是一個 "完整" 的 32 位元的 OS 呢? [看法] wwu.bbs@csie.nctu (小吳): 您有親自在 Win 95 上都用 32-bit 程式嗎? 你用了就知道, 在 Win 95 上用 16-bit 的跟用 32-bit 的速度跟多工差多了。所以我才說「基本上」可以算是 32-bit OS。 雜誌說的可不見得都對哩。:) 目前我整個 Desktop 除了 backup 不是 32-bit 的 OS, 其它都已是 32-bit, 這多工跟保護(一個程式完蛋了不會拖垮其它的)讓我相當滿意。以前搭配 16-bit 跟 32-bit 一起用, 那還真是 24-bit 的 OS。 [看法] Eric.bbs@firebird.cs.ccu (Cat); 或許 wwu 兄對 32-bit OS 的定義和我不太相同 :),我個人覺得,像 Windows 95 這樣在 USER32 及 GDI32 模組中使用 16-bit 的程式碼 (這點在 Andrew Schulman 的 Unauthorized Windows 95 中有明確的解答),明是 32-bit 的 kernel 卻暗地 裡 thunk 到 Win16 執行,根據這一點,我就不能同意 Win95 是一個 32-bit 的 OS,像 Windows NT 那樣,裡裡外外都是 32-bit 的核心程式,那才是一個 32-bit 的 OS。 如果單就 Win32 的程式跑的比 Win16 還快就是一個 32-bit 的 OS,這樣的論點 似乎不太適當吧 ! 不過,我並不反對 Microsoft 這樣的作法,基本上,混合 16-bit 與 32-bit 的程 式碼,這是一個不錯的方式,可以應付這一段過渡時期,在穩定性與相容性上取一個 平衡點。只是 Microsoft 一再強調 Win32 比 Win16 程式快且穩定,我不能同意這 一點 (雖然我贊成將 Win16 的程式移植到 Win32 上),我覺得 M$ 有隱瞞事實的心 態,我不太喜歡這樣。 或許,對一個 End User 而言,他並不需要知道 Win95 是否是一個真正的 32 bit 的 OS,只要這個 OS 能滿足他的需求即可,就這一點,我想,Windows 95 已經達到要求了 ! [看法] EightCloud.bbs@firebird (嵐雲): : : 您有親自在Win 95上都用32-bit程式嗎﹖你用了就知道, 在Win 95上用 : : 16-bit的跟用32-bit的速度跟多工差多了。所以我才說「基本上」可以 : : 算是32-bit的OS。 : 或許 wwu 兄對 32-bit OS 的定義和我不太相同 :),我個人覺得,像 Windows 95 : 這樣在 USER32 及 GDI32 模組中使用 16-bit 的程式碼 (這點在 Andrew Schulman 這個在 Inside Windows 95 堻ㄕ閉O到, 如何用 thunk, 以用到會破壞多工的 WinMutex,在堶掖ㄕ陷ㄗ. M$ 應該,不算刻意地隱暪. : 的 Unauthorized Windows 95 中有明確的解答),明是 32-bit 的 kernel 卻暗地 : 裡 thunk 到 Win16 執行,根據這一點,我就不能同意 Win95 是一個 32-bit 的 : OS,像 Windows NT 那樣,裡裡外外都是 32-bit 的核心程式,那才是一個 32-bit : 的 OS。 若從傳統 OS 的角度來看, GUI 並不算是核心, 像 process 的管理, virtual memory, scheduling, i/o 等, 才算是 屬於 kernel 的部份. 但像 windows 這種 system, 就很難分類. kernel 算是每個程式都會用到的吧! 若我是寫 win95 的 console app, 沒去用到 gui 的話, 不知道 會不會去用到 USER,GDI 的 模組? : 如果單就 Win32 的程式跑的比 Win16 還快就是一個 32-bit 的 OS,這樣的論點 : 似乎不太適當吧 ! : 不過,我並不反對 Microsoft 這樣的作法,基本上,混合 16-bit 與 32-bit 的程 : 式碼,這是一個不錯的方式,可以應付這一段過渡時期,在穩定性與相容性上取一個 YA! 我的看法和您差不多. : 平衡點。只是 Microsoft 一再強調 Win32 比 Win16 程式快且穩定,我不能同意這 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 穩定是絕對沒錯. 快就不一定了. : 一點 (雖然我贊成將 Win16 的程式移植到 Win32 上),我覺得 M$ 有隱瞞事實的心 : 態,我不太喜歡這樣。 : 或許,對一個 End User 而言,他並不需要知道 Win95 是否是一個真正的 32 : bit 的 OS,只要這個 OS 能滿足他的需求即可,就這一點,我想,Windows 95 : 已經達到要求了 ! 其實, 有不同的角度去看 OS, 若是一個 uesr 眼光, 可以說 win95 是一個多工的 os, (是不是 32bit, user 不會知道, 是不是多工, user 可以知道), 對一個應用程式的設設計師, win95 是一個 32bit, preemptive scheduling 的 OS, (他不會去知道 kernel 內部是否會再去啋叫 16bit 模組), 若討論內部結構,那 win95 就不是一個純 32bit os, 多工也會有所限制. 事實上, 在廣告上的 32bit OS, 我覺得是在代表著 x86 protected mode 的功能, preemptive scheduling, virtual memory, 32 bit flat mode addressing 等, 所以在廣告上, 說 Win95 是一個 32 bit 的 OS, 我並不會覺得 m$ 很過份. (否則 16bit 和 32 bit 的軟體, 並沒有什麼多大差別) 就如現在一大堆 pentium 的廣告上寫著他是 64 bit 電腦一樣, 商業上的廣告, 並沒有什麼... 笑一笑 就算了. [看法] cjh.bbs@csie.nctu (小丸子): 傳統 GUI OS 功能 在 UNIX 上劃分如下 在 WINDOWS 3.1 為 ┌────────┐ ┌────────┐ ┌────────┐ │ USER 模組 │ │ Motify/OpenLoop│ │ │ ├────────┼──┼────────┤ │ USER.EXE │ │ WINDOW 模組 │ │ X Window │ │ │ ├────────┤ │ System ├──┼────────┤ │ GRAPHIC 模組 │ │ (client) │ │ GDI.EXE │ ├────────┼──┼────────┼──┼────────┤ │ 作業系統 │ │ UNIX │ │ DOS+KERNEL.EXE │ └────────┘ └────────┘ └────────┘ Windows 3.1 的三大模組功能如下: KERNEL: Loader, Memory Manager, Scheduler, Resource Manager GDI: Graphic Interface (Pen/Brush/Region/Bitmap/Icon/Cursor/...) USER: User Message Interface, Window Manager 一般 CPU 分為 Privileged (Ring 0) 及 Non-Privileged Mode (eg. Ring 3) 在 Windows 95 裡頭, Ring3 Components 執行一般 APs 及 System Services (*KERNEL, USER, GDI), Ring0 Components 執行 File Management Subsystem (32-bit FAT, CDFS, Network Redirectors) 及 Virtual Machine Manager Subsystem (Memory Management, Scheduler, VxD Services, DPMI Server & Drivers) 整體而言 Windows 95 被稱為完整的 OS 而不只是 Operation Environment, 是因為 在 OS 的運作上, 已經脫離過去了尚需借助 DOS File System 來做 I/O 的窘境, 全 部 OS 所需扮演的角色完全可以自己自足. 之所以在 32 位元的 OS 角色上有爭議, 是因為要背負著要與 "傳統相容", "在 4MB 的 RAM 下能執行" 及 "使過去 16 位元 的 APs 也能有不錯的 Performance", 這幾個大包袱, 為達此目地引進不少過去的 16 位元碼, 很自然的讓人懷疑其血統的純正性 (16 Bits or 32 Bits or (16+32)/2 Bits 的 OS), 不過個人認為這些知道即可, 也沒什麼標準來認定, 沒有什麼定論的...
上一層目錄