1. 程式人生 > >Win核心原理與實現學習筆記3-windows系統結構

Win核心原理與實現學習筆記3-windows系統結構

1.概述

1.1windows採用了雙模式(dual mode)結構來保護作業系統本身,以避免被應用程式的錯誤而波及。作業系統核心執行在核心模式(kernel mode)下,應用程式的程式碼執行在使用者模式(user mode)下。每當應用程式需要用到系統核心或核心的擴充套件模組(核心驅動程式)所提供的服務室,應用程式通過硬體指令從使用者模式切換到核心模式中;當系統核心完成了所請求的服務以後,控制權又回到使用者模式程式碼。


1.2在Windows中使用者程式碼和核心程式碼有各自的執行環境且它們可以訪問的記憶體空間也不相同。(如32位系統中,核心程式碼可以訪問當前程序的整個4G虛擬地址空間,而使用者程式碼只能訪問地段的2G/3G虛擬地址)


1.3Windows子系統是系統不可缺少的組成部分,它與系統核心一起構成使用者應用程式的執行環境。Windows子系統既有核心模式部分(圖形和視窗管理),也有使用者模式部分(包括一個單獨的子系統程序和一組連結到各個應用程式中的系統DLL)

2.Windows核心結構

2.1Windows核心分為三層------A硬體抽象層(HAL)  B核心(微核心) C執行體


2.2Windows核心為使用者模式程式碼提供了一組系統服務供程式使用核心中的功能,程式通常並不直接呼叫這些系統服務,而是通過一組系統DLL,最終通過ntdll.dll切換到核心模式下的執行體API函式中,以呼叫核心中的系統服務。Ntdll.dll是連線使用者模式程式碼和核心模式系統服務的橋樑,對於核心提供的每一個系統服務,該DLL都提供一個相應的存根函式,以NT作為字首。


2.3執行體API函式引數核心需檢測有效性和健壯性。執行體API函式並不總是要檢驗引數的有效性,如果在呼叫該API函式以前的模式是核心模式,那麼它不需要檢測引數的有效性。