书名: Windows 95 系統程式設計大奧秘(一)(Windows 95 SystemProgramming SECRETS)
作者: Matt Pietrek
译者: 侯俊杰
整理者:高永庆(大连轻工业学院计982)
目錄提要
1. Windows 95 有三個非常基礎的核心元件: 16 位元的KRNL386 、32 位元的
KERNEL32 、以及ring0 的VWIN32.VXD。如果你把它們放在一起, 就得到了
VWINKERNEL32386。
2. 如果要充份瞭解Windows 95,你就必須瞭解Portable Executable(PE) 檔案格式.
第1章 透視Windows 95
1. 這個新的可執行檔格式稱為PE(Portable Executable)格式,係從UNIX
系統的common object file format V(COFF)衍生而來.
2. Windows NT 的主要目標在強固性與移植性(移植到其他硬體平台)。大部份碼是以C 和C++(而非組合語言)完成.
3. NT 之所以穩定,一個主要原因是其「受保護的子系統」(protected subsystem)架構。在此子系統中,實作出API 的那些系統碼,係在與應用程式不同的位址空間中執行.
4. NT 把16 位元程式放在所謂的WOW(Windows On Windows)行程中跑。
5. Win32s 的限制很大。第一個同時也是最大的限制是,它不支援執行緒。第二是它把所有Win16 程式和Win32 程式都擺在同一個位址空間中。第三個缺點是Win32s 缺乏每一行程專屬的DLL 資料空間。Win32s 的另一個問題是行程的排程和訊息傳遞系統。
6. Windows 95 的最底層是ring0 系統碼,包括虛擬機器管理器(VMM)和輔助的VxDs。在CPU ring0 執行的碼理論上是最穩定也最能夠信賴的。所以它負擔較多的系統資料和硬體的處理。
7. 不論是Win16 的NE 檔或Win32 的PE 檔,都內含一個DOS 程式,稱為DOS
stub 程式。你在Windows 3.1 之下看到的"This Program Requires Microsoft Windows" 輸出便是DOS stub 程式的傑作。
第二章 Windows 95 有些什麼新東西
1. Windows 95 有兩個基本條件(雖然也許有點矛盾):
(1.) 提供存在於Windows NT 上的所有Win32 API(執行緒、分離位址空間、虛擬記憶體等等等),但捨棄安全防護性(security)和unicode。
(2.) 在4MB 機器上執行既有的MS-DOS 和16 位元Windows 程式,效率要和在相同機器上的Windows 3.1 一樣好,或甚至更好。
2. 我要聲明,Windows 95 是DOS 和Windows 3.1 的組合。
3. WIN.COM 是把機器從真實模式(或虛擬86 模式)切換到保護模式Windows 環境的整個程序源頭。
4. 但Windows 95 對於以前的DOS/Windows3.1 組合的最大改
善就是以VxD 取代過去我們對DOS 的呼叫.
5. 在Windows 95,一旦VMM32.VXD 載入並運行,幾乎所有對DOS 的呼叫都改由VMM32 內全新的32 位元碼負責。VMM32 由Windows 95 中的一大堆ring0元件組成。VMM32 相當於Windows 3.1 的WIN386.EXE。(整理者:用vxd程序代替dos的呼叫,
这是windows95的先进之处,98应该是大大减少了dos的呼叫)
6. Windows 95 在相容性方面有更高的標準,因此把視窗管理系統保持在16位元
所有的視窗(是的,甚至是由32 位元程式產生出來的視窗)都是由16 位元的
USER.EXE 管理。
7. Windows95 USER 事實上是以一種不尋常的佈局,使用一個混合了16- 和32- 位元的heaps。16 位元的USER.EXE 仍舊使用16 位元DGROUP 節區,USER 產生了一個特殊的32 位元heap 用來儲存WND 結構.