第八章 Windows NT
1. Windows NT 的設(shè)計目標(biāo):①可擴充性②可移植性③可靠性④兼容性⑤性能
2. Windows NT的結(jié)構(gòu):①系統(tǒng)用戶態(tài)部分(Windows NT保護子系統(tǒng))②系統(tǒng)核心態(tài)部分(NT執(zhí)行體)
3. 對象:對象是個抽象數(shù)據(jù)結(jié)構(gòu),在Windows NT中用以表示所有資源。對象用來表示資源。對象類:具有相同特性的對象可歸為一個對象類,對象是對象類中的一個實例。對象類是描述資源類型的。對象的組成結(jié)構(gòu):對象頭和對象體。對象管理程序控制對象頭,其他執(zhí)行體部件控制它們自己創(chuàng)建的對象體。
4. Windows NT進程的定義:一個程序的動態(tài)調(diào)用。Windows NT進程的組成:①一個可執(zhí)行的程序②一個私用的地址空間③系統(tǒng)資源④至少有一個執(zhí)行線程。Windows NT進程的特點:④ 進程是作為對象來實現(xiàn)的。⑤ 進程要求至少有一個執(zhí)行線程。⑥ 進程沒設(shè)進程控制塊PCB,進程的控制和管理信息被放在進程對象的對象體中以及局限于進程的對象表中。⑦ Windows NT中的進程,不是處理機調(diào)度的基本單位,所以沒有必要區(qū)分進程的狀態(tài)。⑧當(dāng)系統(tǒng)啟動時,系統(tǒng)為每一環(huán)境子系統(tǒng)建立一個服務(wù)器進程。每當(dāng)用戶的應(yīng)用程序啟動時,相應(yīng)的環(huán)境子系統(tǒng)進程調(diào)用執(zhí)行體的進程管理程序為之建立一個進程,然后進程管理程序又調(diào)用對象管理程序為之建立一個進程對象。⑨ 進程管理程序不維護進程的父子或其他關(guān)系。⑩ 進程有內(nèi)含的同步機制。
5. Windows NT線程的定義:進程內(nèi)的一個可調(diào)度實體。線程的組成:①一個唯一的標(biāo)識符,即客戶ID.②描述處理機狀態(tài)的一組寄存器內(nèi)容。③兩個棧:用戶棧和核心棧。④一個私用存儲區(qū)。引進線程目的:主要目的是要有效地實現(xiàn)并行性。多進程的方式雖然也可以實現(xiàn)并行性,但采用線程比采用進程實現(xiàn)并行性更方便、更有效。以UNIX為例,當(dāng)一個進程創(chuàng)建一個子進程時,系統(tǒng)必須把父進程地址空間的所有內(nèi)容拷貝到子進程的地址空間中去。對大地址空間來說,這樣的操作是很費時的,更何況兩進程還要建立共享數(shù)據(jù)。如果采用多線程要好得多,因為這些線程共享進程的同一地址空間、對象句柄及其他資源。
6. 進程和線程之間的區(qū)別和聯(lián)系:
①線程是進程的一個組成部分。每個NT進程在創(chuàng)建時只有一個線程,需要時這個線程可以再創(chuàng)建其他線程。
②一個進程的多個線程都在這個進程的地址空間內(nèi)活動。
③進程是資源的基本分配單位。這就是資源是分配給進程的,而不是分配給線程的,并且系統(tǒng)還為分配給進程的資源規(guī)定了配額。
④處理機調(diào)度的基本單位是線程,在線程之間競爭處理機。真正在處理機上執(zhí)行的是線程,線程在執(zhí)行中需要資源時,系統(tǒng)從進程的配額中扣除并分配給它。
⑤線程在執(zhí)行過程中,需要同步,在不同的進程的線程之間的同步要用消息傳遞機制。消息傳遞要用到進程的資源——端口(端口也是對象,端口上有消息隊列)。因此,可以這們說,通信的是線程,使用的資源卻是進程的(服務(wù)器進程可以創(chuàng)建多端口,以利于多線程通信。)
7. Windows NT內(nèi)核的特點:Windows NT內(nèi)核的特點是采用微內(nèi)核技術(shù)。它提供了一組精心設(shè)計的操作系統(tǒng)原語和機制,通過使用這些原語和機制,執(zhí)行體可以構(gòu)造更多高級的操作系統(tǒng)功能。內(nèi)核與其它執(zhí)行體不同的是,內(nèi)核永久駐留內(nèi)存,內(nèi)核的執(zhí)行是不可搶占的,并總運行在核心態(tài)。內(nèi)核的基本(主要)功能:①調(diào)度線程的執(zhí)行②中斷和異常的處理③完成低級的多處理機間的同步④電源故障的排除(實現(xiàn)系統(tǒng)的恢復(fù)過程)。
8. 畫圖說明線程的調(diào)度狀態(tài)及其轉(zhuǎn)換條件。(P191)
9. 線程調(diào)度采用的調(diào)度算法是什么?線程調(diào)度采用的調(diào)度算法是可搶占的動態(tài)優(yōu)先級調(diào)度算法。線程調(diào)度程序按線程的優(yōu)先級進行調(diào)度,高優(yōu)先級的線程先被調(diào)度。線程在執(zhí)行過程中優(yōu)先級可以變化,調(diào)度程序調(diào)度時所依據(jù)的要主數(shù)據(jù)結(jié)構(gòu)是多優(yōu)先級就緒隊列。
10. 中斷:Windows NT中,中斷是異步事件,主要由硬件如I/O設(shè)備、處理機、時鐘或定時器引起的,是隨機發(fā)生的中斷處理機的事件。異常:異常是同步事件,是某些特定指令執(zhí)行的結(jié)果,如主存存取錯、浮點數(shù)被零除等,Windows NT還把系統(tǒng)服務(wù)調(diào)用看作是異常。Windows NT如何處理中斷與異常:當(dāng)中斷或異常發(fā)生被系統(tǒng)捕捉后,系統(tǒng)將執(zhí)行的線程從用戶態(tài)轉(zhuǎn)換到核心態(tài),將處理機的控制權(quán)轉(zhuǎn)交給其首地址存放在主存固定單元的陷阱處理程序。陷阱處理程序被調(diào)用后,它首先保護執(zhí)行線程被中斷的斷點現(xiàn)場,在此期間屏蔽中斷,其次根據(jù)中斷/異常的原因決定將控制權(quán)交給相應(yīng)的處理程序:①如果是中斷,根據(jù)中斷源將控制權(quán)轉(zhuǎn)交給相應(yīng)的處理程序。②如果是異常,對于處理簡單的異常由陷阱程序解決,其余由異常調(diào)度程序處理。根據(jù)異常的原因轉(zhuǎn)入異常處理程序。③如果是系統(tǒng)服務(wù),陷阱處理程序由系統(tǒng)服務(wù)調(diào)度程序去查找系統(tǒng)服務(wù)調(diào)度表,轉(zhuǎn)入相應(yīng)的系統(tǒng)服務(wù)程序。④如果是虛地址異常,則轉(zhuǎn)入VM管理器頁面調(diào)度程序。
11. Windows NT如何實現(xiàn)處理機之間的同步:Windows NT中對內(nèi)核全局數(shù)據(jù)結(jié)構(gòu)的修改必須互斥地執(zhí)行。解決內(nèi)核臨界區(qū)的互斥,采用的主要方法是:①提高臨界區(qū)代碼執(zhí)行的中斷優(yōu)先級。②使用轉(zhuǎn)鎖。
12. 畫圖說明Windows NT虛擬地址空間的劃分:Windows NT為每個進程提供了一個4GB在的虛擬地址空間。高地址的2GB保留給系統(tǒng)使用(系統(tǒng)存儲區(qū):①非頁交換區(qū)0.5GB;②頁交換區(qū)0.5GB;③直接映射地址1GB),低地址的2GB是用戶的存儲區(qū)(用戶存儲區(qū):頁面交換區(qū)),這個存儲區(qū)可被用戶態(tài)和核心態(tài)的線程訪問。P197
13. 舉例說明Windows NT虛擬地址到物理地址的變換過程:
14. Windows NT的存儲管理所采用的頁面淘汰算法是什么:采用先進先出(FIFO)頁面轉(zhuǎn)換算法,即把在主存中駐留時間最長的頁面淘汰出去。
15. Windows NT的I/O系統(tǒng)組成部件:①I/O管理程序②文件系統(tǒng)③設(shè)備驅(qū)動程序④緩沖存儲管理程序⑤網(wǎng)絡(luò)驅(qū)動程序(網(wǎng)絡(luò)轉(zhuǎn)發(fā)程序和網(wǎng)絡(luò)服務(wù)程序)。Windows NT在I/O系統(tǒng)的設(shè)計方面,建立了一個統(tǒng)一、一致的高層界面——I/O設(shè)備的虛擬界面,即把所有的讀寫數(shù)據(jù)都看成是直接送往虛擬文件的字節(jié)流。P202
16. 舉例說明Windows NT中的同步I/O過程:P205 當(dāng)應(yīng)用程序調(diào)用一個I/O服務(wù),例如應(yīng)用程序WriteFile(file_handle,datd,…)調(diào)用Win32的API,Win32子系統(tǒng)調(diào)用NT的寫文件服務(wù),由用戶態(tài)進入核心態(tài)。在核心態(tài)下,I/O管理程序檢查調(diào)用參數(shù)并建立I/O請求包IRP,然后調(diào)用設(shè)備驅(qū)動程序。設(shè)備驅(qū)動程序接收IRP,負責(zé)排隊I/O請求,再由設(shè)備執(zhí)行I/O數(shù)據(jù)轉(zhuǎn)換,當(dāng)I/O完成產(chǎn)生I/O中斷。由設(shè)備驅(qū)動程序處理中斷,再交I/O管理程序完成IRP的處理并返回,由核心態(tài)回到用戶態(tài)。最后將返回的狀態(tài)傳送給應(yīng)用程序,應(yīng)用程序可以立即存取這些已轉(zhuǎn)換的數(shù)據(jù)。①按用戶要求,I/O管理程序為之形成IRP,并把它傳送給設(shè)備驅(qū)動程序,由驅(qū)動程序完成I/O操作。②設(shè)備完成I/O操作后,發(fā)中斷請求,設(shè)備驅(qū)動程序的中斷處理程序進行相應(yīng)中斷處理。③I/O管理程序完成I/O請求。
17. 試說明Windows NT中異步I/O操作的特點:異步I/O相對于同步I/O有一重要特點:具有提高應(yīng)用程序執(zhí)行速度的潛力。當(dāng)設(shè)備在忙于讀寫的同時,應(yīng)用程序可繼續(xù)其他的工作。為了使用異步I/O,應(yīng)用程序必須在其參數(shù)中指出異步I/O,在Win32中使用參數(shù)overlapped表示異步I/O.在發(fā)出異步I/O操作后,線程要小心,不要在設(shè)備驅(qū)動程序完成數(shù)據(jù)讀寫前再去讀寫I/O操作中的數(shù)據(jù)。也就是說,線程的執(zhí)行必須通過等待一個句柄,和I/O請求的完成保持同步。
18. 內(nèi)裝網(wǎng)絡(luò):Windows NT網(wǎng)絡(luò)是內(nèi)裝網(wǎng)絡(luò),它把網(wǎng)絡(luò)軟件作為NT執(zhí)行體的I/O系統(tǒng)中的一個組件嵌入系統(tǒng)內(nèi)部(即網(wǎng)絡(luò)功能包含于操作系統(tǒng)中),這使得Windows NT無需安裝其他網(wǎng)絡(luò)軟件,即可為用戶提供資源共享和各種網(wǎng)絡(luò)功能。其特點:①Windows NT的網(wǎng)絡(luò)軟件不是作為操作系統(tǒng)的一個附加層來運行,而是作為NT執(zhí)行體的I/O系統(tǒng)中的一個組件而嵌入系統(tǒng)內(nèi)部,這使得Windows NT無需安裝其他網(wǎng)絡(luò)軟件,即可為用戶提供資源共享和各種網(wǎng)絡(luò)功能。②Windows NT中的網(wǎng)絡(luò)組件可以直接利用NT內(nèi)部的系統(tǒng)功能。
Windows NT網(wǎng)絡(luò)具有以下特點:
①NT網(wǎng)絡(luò)是內(nèi)裝,從而Windows NT是真正的網(wǎng)絡(luò)操作系統(tǒng)。
②NT網(wǎng)絡(luò)與其它網(wǎng)絡(luò)系統(tǒng)的互操作性。
③提供方便的建立和運行分布式應(yīng)用程序的機制。
④系統(tǒng)開放性好。
19. 畫圖說明Windows NT網(wǎng)絡(luò)的體系結(jié)構(gòu)(P207):低四層統(tǒng)稱為通信子網(wǎng),駐留在高三層的軟件稱為通信子網(wǎng)的用戶。
20. Windows NT網(wǎng)絡(luò)中作為內(nèi)裝網(wǎng)絡(luò)的兩個主要部件是:轉(zhuǎn)發(fā)程序和服務(wù)程序。轉(zhuǎn)發(fā)程序,也稱重定向程序,用于客戶方。轉(zhuǎn)發(fā)程序的主要功能是:解釋網(wǎng)絡(luò)I/O請求并生成對下層協(xié)議的調(diào)用,以實現(xiàn)網(wǎng)絡(luò)的I/O功能。轉(zhuǎn)發(fā)程序作為客戶方,執(zhí)行SMB(Server Message Block)協(xié)議,與服務(wù)器方的服務(wù)程序同處于會話層。轉(zhuǎn)發(fā)程序可以訪問遠程節(jié)點上的文件,命名管道和打印機,以實現(xiàn)網(wǎng)絡(luò)的資源共享。服務(wù)程序的主要功能:接收網(wǎng)絡(luò)傳輸驅(qū)動程序來的I/O請求,執(zhí)行這些請求,然后將結(jié)果通過網(wǎng)絡(luò)送回。服務(wù)程序作為驅(qū)動程序可以存在于NT執(zhí)行體內(nèi),并可調(diào)用高速緩沖管理程序直接優(yōu)化它所要傳送的數(shù)據(jù)。
21. 為什么說Windows NT具有開放式的結(jié)構(gòu)?
①Windows NT網(wǎng)絡(luò)是一個內(nèi)裝網(wǎng)絡(luò),而不是像其他網(wǎng)絡(luò)操作系統(tǒng)那樣,在一個多任務(wù)傳統(tǒng)的操作系統(tǒng)上附加一層網(wǎng)絡(luò)軟件。NT網(wǎng)絡(luò)操作系統(tǒng)把網(wǎng)絡(luò)功能包含在操作系統(tǒng)中,并可直接使用Windows NT內(nèi)部的系統(tǒng)功能。NT網(wǎng)絡(luò)軟件包含有將其內(nèi)部網(wǎng)絡(luò)軟件裝入和卸出的機制,同樣的機制也可將其他網(wǎng)絡(luò)軟件裝入和卸出操作系統(tǒng)。
②Windows NT考慮到應(yīng)用程序如何網(wǎng)絡(luò),Windows NT提供了多種訪問方法:Win32 I/O API、Win32 Wnet API、Windows Sockets API、NetBIOS API、RPC API、Win32命令管道與郵件槽 API
③Windows NT的供應(yīng)者接口:多供應(yīng)者路由器MPR,當(dāng)應(yīng)用程序利用Win32 Wnet瀏覽遠程文件系統(tǒng)時,能確定存取哪個網(wǎng)絡(luò)。多UNC供應(yīng)者MUP,當(dāng)應(yīng)用程序利用Win32 I/O API打開遠程文件時,能確定存取哪個網(wǎng)絡(luò)。
④Windows NT提供了傳輸驅(qū)動程序接口TDI,它使得轉(zhuǎn)發(fā)程序和服務(wù)程序可保持獨立于網(wǎng)絡(luò)。Windows NT網(wǎng)絡(luò)上可以使用的傳輸協(xié)議有:NetBEUI、TCP/IP、IPX/SPX、DECnet、Apple Talk、XNS.有了上述協(xié)議,Windows NT網(wǎng)絡(luò)就可以與其他廠商的網(wǎng)絡(luò)產(chǎn)呂互連。
⑤網(wǎng)絡(luò)驅(qū)動程序的NDIS環(huán)境。使得任何協(xié)議驅(qū)動程序可以通過調(diào)用NDIS接口將網(wǎng)絡(luò)請求引導(dǎo)到網(wǎng)卡。因而,用戶使用一個網(wǎng)卡或單一的網(wǎng)絡(luò)驅(qū)動程序便可在TCP/IP網(wǎng)絡(luò)和NetBEUI上通信。
來源網(wǎng)絡(luò) 僅供參考