【基本資料】

書名:深入核心 - Windows 作業系統
出版:旗標 1993.01
ISBN:957-717-040-4
頁數:8 章,529 頁
定價:NT$ 450.0

【自序】

登高必自卑 行遠必自邇


我在倚天雜誌主持一個 Windows 技術專欄已有年餘,接觸到的 Windows 資訊、技術、 以及相關的人非常多。雖然國內目前對 Windows 的接受程度還沒有國外那麼 驚人,但證諸全球軟體界以及國際著名媒體的評斷,都指出 Windows 實在是 PC 作業系統之新希望所繫。不論從市場的熱度、軟體的潮流、或是技術層面的考 量來說,都是如此! 跟上 Windows 的潮流,是國內軟體界與世界同步 的契機。

身為一個軟體人員,對於學習新知的艱辛,以及缺乏知識來源的無奈,我有深刻的體會。 也因此深深期許自己為國內的軟體從業人員寫一些夠水備的書籍。這是我 終於決定離開穩定愉快的研究環境,踏入電腦書籍寫作這一領域的唯一動力 與激勵。

一個設計良好的範例程式,搭配觀念的介紹以及實作技巧的解說,對於程式設計人員 而言是最佳學習方式。Windows 作業系統以及程式設計所牽涉的範圍十分廣泛, 我將針對各個重要的主題推出一系列的 Windows 程式設計書籍,包括 記憶體管理、多媒體程式設計、行程通訊程式設計 ... 等等。期望這本書,以及我後續的 作品,能夠為您的學習過程中帶來一些幫助。

知識爆炸的時代裡,軟體的產量也是爆炸的,而且速度驚人。 有些讀者憂慮 Windows 3.0、Windows 3.1、Windows NT、Windows 4.0 相繼 問世,不知道如何適從。其實 DOS 從 1.0 發展到 5.0,您也並沒有每次都 從頭來過對不對 ? 基礎知識十分重要,不會因為軟體版本的不斷更新而改變。 這會是一本可以陪伴您很久的書。

侯俊傑 (J.J.Hou) 11/12/1992 于新竹



【本書架構】


這並不是一本為 Windows 初學者而寫的書 !

學習 Windows 大約有三個層次。對終端使用者而言要學習 Windows 的圖形人機介面,也就是如何運用 Windows 於日常生活中;對程式員而言要學習如何撰寫 Windows 應用程式;然而在學習程式設計的過程中還應該學習 Windows 這個作業系統的架構與性能,才能將作業系統的觀念與應用程式的寫作相互呼應。這本書就是將讀者定位在想要了解 Windows 作業系統技術層面的人,內容並不教導如何使用 Windows 圖形介面,也不教導如何設計 Windows 程式 (但在許多地方會以程式設計的實際作法印證作業系統的理論)。如果您已經具備 Windows 程式設計基礎,本書將幫助您了解諸多程式設計上的「為什麼」。由於舉的例子都是程式片斷,所以基本上您應該具備程式設計的基礎,閱讀起來才會比較得心應手。

第一章「Windows 概論」

對 Windows 作業系統的整體概念做一個介紹,包括各個動態聯結程式庫,Windows 與 DOS 的關係,Windows 3.1 新的特徵與功能,以及Windows NT 的發展狀況。

第二章「Windows 應用程式基本觀念」

把 Windows 程式設計上的一些最重要的觀念,以及一般人可能會疏忽或混淆的地方釐清。

第三章「Windows 程式設計的物件導向觀念」

「物件導向」這個名詞在近年來出現被大量濫用的現象。或許兩個人在談到物件導向觀念時,他們心中對物件導向的一些定義根本就不相同呢! 這一章要介紹 Windows 作業系統提供的關於封裝、繼承、動態繫結的能力,這三者正是物件導向中最重要的特徵。

第四章「Windows 可執行檔格式」

您知道為什麼一個 Windows 程式竟可以在 DOS 環境下執行嗎 (即使它只是發出簡短的 "This program require Microsoft Windows" 訊息) ? 您知道為什麼 Windows 程式需要以新的聯結器 (Segmented Executable Linker) 來進行聯結工作嗎 ? 為什麼聯結好的檔案 (Windows 程式) 叫作「可分段執行檔」呢 ? 這一章詳細剖析這種新的執行檔格式,並且以 PC Tools 軟體工具實際觀察檔案,為您解釋檔案表頭各欄位的意義。檔案格式變革 (從 DOS EXE 檔改變到 Windows 的 EXE 檔) 與 Windows 多工環境所需要的「動態聯結」有密切的關係。

第五章「虛擬記憶體與虛擬機器」

Intel 386 機器上的硬體能力,帶給作業系統設計人員極大的便利。Windows 的保護模式 (包括標準模式以及 386 加強模式) 就運用了這些良好的性質實作出虛擬記憶體與虛擬機器。這一章對 CPU 保護模式的記憶體定址到裝置虛擬化均有介紹,並且也說明使用者如何在 Windows 中自行設定虛擬記憶體的大小與型態,以及如何調整虛擬機器的執行優先權,藉以提升系統效率。

第六章「多工作業與記憶體管理」

多工作業一直與記憶體管理分不開、扯不清。因為記憶體的良好運用是多工環境的第一要件。記憶體管理不良的情況下,一個必須付出過多額外負擔 (overhead) 的多工系統是不值得電腦客戶採用的。這一章首先介紹 preemptive 多工與 non-preemptive 多工的差異,以及 Windows 的多工究竟何屬;然後介紹什麼是動態聯結。從這一章中您可以了解為什麼要在程式中使用 MakeProcInstance();為什麼編譯後的 Windows 程式會出現奇特的 prolog、epilog 碼;為什麼Windows 必須維護某些固定不可搬移的記憶體 (例如 Module Database 以及 Task Database);又為什麼 Windows 需要新的編譯器、新的聯結器、新的程式載入器以及新的執行檔格式。

第七章「動態聯結程式庫」

本章除了以不同的方式再解釋第六章介紹過的動態聯結觀念與步驟之外,對於動態聯結程式庫的發展過程為什麼與一般應用程式的發展過程不同,也提出解釋。並且將發展動態聯結程式庫所要注意的程式設計重點一一挑出。

第八章「Windows 行程通訊 (IPC)」

我一直認為 IPC (InterProcess Communication) 是多工環境中最有趣,也極具價值的一環,雖然設計 IPC 程式遠比一般應用程式困難,但它所能達到的系統整合效果確實令人驚喜。就如同在 UNIX 中可以 file、pipe line、share memory、semaphore 等方式來實作 IPC,在 Windows 中也有 Clipboard、DLL、DDE、DDEML、OLE 數種方法。這一章我主要闡明各種 IPC 方法的優缺點以及它們的重要觀念。

本書最後有三個附錄。附錄 A 是名辭解釋。附錄 B 以 EXEHDR 觀察 Windows 3.1 的三大模組 : USER、GDI、KERNEL。EXEHDR 是 Microsoft 提供的一套觀察應用程式或動態聯結程式庫的工具,附屬在 Microsoft 的 C 編譯器套裝軟體中。附錄 C 是 Windows 3.1 的 API 函數名稱一覽表。

f313.jpg (13508 bytes)