第六卷 應用程序的支持及管理(1 / 3)

第六卷 應用程序的支持及管理

毫無疑問,操作係統是計算機上最重要的軟件係統,負責管理和調度計算機的係統資源,任何應用程序都必須在操作係統的支撐下才能良好地運轉,如果沒有得到主流操作係統的支持,即使編寫得再好的程序也是沒有商業生命力的,軟件業中這樣的例子屢見不鮮。但是另一方麵,一種操作係統要想得到承認,本身也必須對各種程序能夠實現合理的支持,具有良好的兼容性。Windows 2000延續了Windows係列的功能,能支撐眾多的應用程序,這一點對許多老程序的使用者是一個好消息。

本章內容包括:

* 應用程序體係結構

* 對32位應用程序的支持

* 對DOS程序的支持

* 對Win16位應用程序的支持

* 對OS/2和POSIX的支持

* 任務管理器的使用

* 調整應用程序優先級別

第一章 應用程序體係結構

多年來,計算機技術發展經曆了各種不同應用程序的使用時代。早先的程序基本上都是DOS時代的產物;隨著Windows的出現,誕生了Windows16位應用程序;而今天,絕大多數應用程序是基於Windows32位的,此外還流行過有非Windows的OS/2、POSIX應用程序,盡管它們當中許多程序已經過時了,但Windows 2000仍然為它們留有一席之地,這也是Windows 2000的設計目標之一。

Windows 2000對各種不同體係程序的支持是通過環境子係統(Environment Subsystem)和虛擬機實現的,這些子係統或者虛擬機為應用程序提供了能被識別的編程接口,使這些程序能夠感覺上是運行在原先的操作係統當中。各種應用程序的環境子係統構建於Windows 2000的用戶模態(User Mode)之上,處在係統的最高層,而用戶模態下層是係統的核心態(Kernel Mode),所有的基本操作係統功能都是在核心態中的執行體完成的,這些管理功能包括I/0管理、進程管理、本地過程調用、虛擬內存管理、圖形設備接口等。值得注意的是:用戶態和核心態有嚴格的分隔,應用程序不能直接訪問執行體服務,從而保證了係統的穩定性。

Windows 2000通過NTVDM、WOW、OS/2、POSIX等子係統實現對各種程序的支持。但是這些子係統並不是自動啟動的,為了節省內存和其他資源,隻有應用程序需要時這些子係統才會被載入,從而避免了整個係統過於龐大而效率低下。另外,Win32應用程序、Win16應用程序以及DOS虛擬機下的DOS應用程序被映射成Win32子係統,OS/2和POSIX則有自己的子係統。各個子係統被物理隔離,運行在自己的內存空間中,即使有某一個子係統崩潰也不會影響其他子係統。

第二章 對32位應用程序的支持

伴隨著指令執行時間的大大縮短,32位應用程序已經成為今天的主流,大多數在Windows 2000中執行的應用程序是32位的。Windows 2000中的Win32子係統支持這些32位應用程序,同時還對其他環境子係統提供支持。

與過去的16位應用程序相比,32位應用程序有非常明顯的優越性,這體現在如下幾點:

■ 各應用程序擁有獨自的2GB地址空間,可靠性更強。

■ 支持多線程應用程序(Multithreaded Application)。

■ 能發揮搶占式多任務(Preemptive Multitasking)的優越性。

■ 發揮多處理器係統(Multiprocessor System)的優越性。

由於32位應用程序具有各自獨立的2GB地址空間,防止了拙劣的程序覆蓋另外一個應用程序地址空間的可能,因此當一個程序崩潰時,隻要關閉這個程序就可以了,並不會影響其它程序的運行,這一點可以極大地保證係統的穩定性。

應一個與16位應用程序相比的重要優點是32位應用程序的多線程特性。可以把線程理解為程序作業的子單元,或者是一個程序任務的子任務。正如一個大任務是由許多小的子任務組成一樣,一個多線程應用程序是由許多線程組成的。線程是Windows 2000完成調度的基本實體,因此完成一個程序實際上是在執行許多的子單元線程。

多線程特性的32位應用程序可以實現搶占性多任務的功能。多任務的概念由來已久,無疑地,在電子技術飛速發展的今天,把大量的資源花費在單任務上是很不劃算的。而多任務又有協同式多任務和搶先式多任務之分。

在Windows16位實行的協同式多任務程序中,一個程序對資源的使用依賴於其他程序是否"願意"釋放它所占有的資源,如果程序編寫得不好,例如陷入死循環或者總是霸占著資源而不肯釋放,其他程序將無法獲得需要的資源,這對多任務的執行是很不利的。但是搶先式多任務則不同,操作係統直接介入到資源的分配工作當中,各個線程對資源的使用有優先權之分,而且每個線程按照時間片來分配,操作係統會根據充分考慮到低級別的線程並保證它們能得到時間片以運行。這樣一來,程序就不會一味地消極等待其他程序釋放資源。

由於實行了多線程,各個線程成為任務調度的基本單位,從而充分發揮了搶先式多任務的優點。

多線程也可以發揮係統的多處理器優勢,這時候每個線程可以安排在不同的處理器中執行。

第三章 對DOS程序的支持

Windows 2000對DOS程序的支持是通過一個叫做NTVDM(NT virtual Dos Manager)的虛擬DOS機完成的。NTVDM是一個特殊的32位應用程序,Windows 2000用它來實現虛擬一個DOS環境,每次調用DOS程序就會啟動NTVDM,使DOS程序在其中執行,也就是說,所有DOS程序都以一個NTVDM的進程顯示。由於NTVDM本身是一個32位程序,擁有自己的執行線程,因此也有自己獨立的地址空間,這就使得DOS程序也可以實現多任務,而且單個DOS程序的崩潰不會影響其他DOS程序。

需要注意的是,DOS程序不能直接訪問硬件設備,NTVDM會截獲這些對硬件設備的訪問,並傳送到Windows 2000的32位設備驅動程序,由虛擬設備驅動程序進行調用,如果沒有相應的設備驅動程序,DOS將無法運行,這也是許多DOS程序不能運行的原因。

對DOS程序進行任務信息配置是DOS程序的重要工作,這些工作通過配置程序的PIF(Program Information File)完成。DOS程序的PIF信息可以在它們的屬性對話框中找到。

17.3.1 配置程序PIF屬性

從資源管理器中DOS程序,單擊右鍵並選擇"屬性"命令,可以發現DOS程序的屬性框比普通文件對話的屬性對話框多了許多選項卡,除了基本的常規、安全、摘要外,還包括程序、字體、屏幕、內存和其他選項。

如圖17-1所示是DOS程序的程序選項卡。

圖17-1 MS-DOS程序的屬性框

其中的各個選項卡意義是:

■ 命令行:指定了MS-DOS程序運行的路徑。

■ 工作目錄:指定存儲應用程序數據文件的目錄。

■ 批處理文件:指定程序運行之前執行的批處理文件。

■ 快捷鍵:指定啟動運行程序的快捷鍵組合。

■ 運行方式:指定運行程序時的窗口選項,包括常規窗口、最大化或者最小化。

Windows 2000對每個MS-DOS程序指向不同的Autoexec文件和Config文件。DOS程序運行之前,係統會首先分析它們的運行環境,默認情況下,這兩個文件分別是%Systemroot%\system32目錄下的Autoexec.nt文件和Config.nt文件。