內容:18—42頁
作業系統本身屬於軟體的範疇,但它與底層硬體打交道,為上層應用軟體或應用程式提供了一層抽象,專門負責硬體資源的管理與分配。應用軟體不直接使用硬體,而是通過作業系統提供的功能來實現各種應用任務。
LPC:處理序間通訊
現代作業系統的基本結構:
應用環境-----------系統內容----------硬體裝置
| |
系統服務 硬體抽象
現代電腦系統中,裝置的隨插即用(PnP)和電源管理越來越重要
Windows系統結構
雙模式:核心模式與使用者模式。應用程式通過硬體指令從使用者模式切換到核心模式。
Windows子系統與Windows核心共同構成了應用程式的執行環境。Windows子系統包含了核心模式部分(圖形和視窗管理),也有使用者模式部分。使用者模式部分包含了一個單獨的子系統進程和一組連結到各個應用程式中的系統DLL。
Windows核心結構
核心分為三層:硬體抽象層(HAL)、核心層、執行體層(包含一個對象管理器)。執行體層和核心層位於同一個二進位模組中,名稱是ntoskrnl.exe。
Windows核心為應用程式提供了一組系統調用,但使用者程式不直接調用這些系統服務,而是通過一組系統DLL,最終通過ntdll.dll切換到核心模式下的執行體API函數中,以調用核心中的系統服務。Ntdll.dll是串連使用者模式代碼和核心模式系統服務的橋樑。
NTdll.dll中,Nt首碼:系統服務的存根函數;Ldr:映像載入器函數;Csr:Windows子系統進程通訊函數、Dbg:調試函數;Etw:系統事件函數,Rtl:一般的運行支援函數和字串支援函數。
Windows核心是搶佔式的進程調度。每一個線程都有一個基本優先順序值(base priority),每個線程還有一個動態優先順序值,目的是讓系統更快響應使用者的動作,以及在系統服務和其他低優先順序進程之間平衡處理器資源的分配。
Windows核心管理兩類對象:分發器對象和控制對象。分發器對象實現了各種同步功能,這些對象會影響線程的調度:事件、突發體、訊號量、進程、線程、隊列、門、定時器。控制對象被用於控制核心的操作,但是不影響線程的調度,它包括非同步程序呼叫、延遲程序呼叫以及中斷對象。
執行體包括:進程和線程管理器、記憶體管理器、安全引用監視器、I/0管理器、緩衝管理器、組態管理員、隨插即用管理器、電源管理器。
Windows驅動程式套件括了3類:隨插即用驅動程式(WDM驅動程式)、核心擴充驅動程式與檔案系統驅動程式。
Windows檔案系統管理中,每個檔案系統執行個體都有自己的裝置棧,通過插入過濾驅動程式可以過濾檔案I/O請求。Windows支援兩種形式的過濾驅動程式:一種直接插入到裝置棧中,從而能夠看到每一個經過裝置棧的檔案I/O請求;另一種基於Windows提供的過濾管理器驅動程式(FltMgr)的I/O過濾架構,稱為檔案系統小過濾驅動程式,它通過回調的方式來響應FltMgr的事件。
大量儲存裝置以分區和捲來管理整個儲存空間,分區是指存放裝置上連續的儲存地區(連續的扇區)。而卷是指扇區的邏輯集合。一個卷內部的扇區可能來自於一個分區,也可能來自多個分區。檔案系統是卷內部的邏輯結構。
最接近於應用程式的是檔案系統,接下來是卷管理部分,最接近於存放裝置的是分區管理和磁碟驅動程式。
網路
Winsock是Windows最重要的網路API,它的使用者模式部分包含了ws2_32.dll,還定義了一個可擴充的架構。在核心部分,網路API驅動程式afd.sys通過傳輸驅動程式介面(TDI,transport Driver Interface)與協議驅動程式進行通訊。TDI實際上是一組預定義的I/O請求,它描述了各種網路請求,包括名稱解析、建立串連、發送和接收資料等。網路API驅動程式是TDI客戶,而傳輸協議驅動程式實現了TDI介面,稱為TDI傳輸器。
協議驅動程式通過統一的介面與適配器驅動進行通訊,此介面是NDIS(Network Driver Interface),符合NDIS的網路介面卡驅動程式稱為NDIS驅動程式,或NDIS小連接埠驅動程式。
NDIS客戶(即TDI傳輸器)利用NDIS庫提供的功能,對將要發送給NDIS驅動程式的命令進行格式化,並發送給NDIS驅動程式;NDIS驅動程式則利用NDIS庫,接收請求和發送應答。
Windows子系統,核心部分win32k.sys,包含了大量的系統調用,主要負責視窗管理和圖形裝置介面(GDI)
Windows視窗的編程模型是訊息驅動的,每個視窗對象根據其視窗類別指定的視窗過程來響應各種訊息。
圖形裝置介面
映像引擎在Windows子系統中提供,有兩方面的優點:
1、提供了一套與裝置無關的編程介面,GDI,這使得應用程式可以適應各種底層顯示裝置的差異;
2、應用程式與圖形裝置驅動程式之間的通訊足夠高效,從而即使在頻繁輸出和重新整理圖形元素的情況下,Windows也能夠為使用者提供良好的視覺效果。
線程與進程
每個線程代表了一個指令執行序列,同時也是一個調度單元;進程定義了一個執行環境,有自己獨立的地址空間,每個線程都必定依附於一個進程。System進程的線程被稱為系統線程。