ARCHITECTURE OF MICROSOFT WINDOWS OS
Download
Report
Transcript ARCHITECTURE OF MICROSOFT WINDOWS OS
ARCHITECTURE OF
MICROSOFT WINDOWS OS
MicroKernel
主要的功能:
如何與 client 互動?
提供 thread scheduling, task switching, 中斷與例外處理,
多處理機的同步等系統低階功能.
MicroKernel 利用 Objected-based 介面提供給 client 服
務
主要的 object 為
Dispatcher objects :用來作 dispatching 與 synchronization
Event, mutexes, queues, semaphores, thread and timer
KeWaitxxx()
Control objects
狀態: signaled 與 not signaled
Kernel model thread 藉由這些狀態來作同步的功能
用來管理 除了 dispatching 與 synchronization 的kernel model
operation
包含了 MicroKernel 與 Executive 的實作
•雖然你看到的是 .exe, 但事實上,他是一個 DLL
所有由 MicroKernel export 的
Interface 都是以 ke 開頭
用 dumpbin /exports ntoskrnl.exe
例如:
KeAquireSpinLock: 提供 spin lock object 使得多處理器的同步有了安全的方式
KeInitializeEvent : 設定 Kernel Event 的結構,
之後你還可以使用 KeClearEvent, KeReset 或 KeWaitForSingleObjects
Device Drivers
我們已經知道
MicroKernel 管理 CPU; HAL 管理 bus, DMA,
timer, 韌體, BIOS
若要讓 OS 有價值, OS 還必須要幫 User 做好
存取周邊的介面
所以 OS 必須要能夠與周邊硬體溝的能力 Device Driver
Kernel Mode Device Driver 是一堆 DLLs並
且被載到 kernel address space中
階層式的 Device Driver
(ReadFile 的流程)
呼叫 由 kernel32.dll 實做的 ReadFile
User Mode
呼叫 native API, NtReadFile function
Kernel Mode
參考資料: Programming the Microsoft Windows Driver Model,
An Overview of the Operating System
Types of WDM Drivers
因為 Driver 是階層式的,因此處理每個 I/O
request packet (IRP) 都有不同的方式
PCI, SCSI, PnpISA, and USB
三種 WDM Driver
Bus Driver: 提供管理 bus 上的裝置
例如: 列舉 bus 上的所有裝置
Function Driver: 提供作業系統驅動裝置的介面
Filter Driver:
提供加值或更改 Driver 行為的功能
例如: 對於所有被 ACPI BIOS 描述的裝置, Power Manager 插入
一個 Microsoft- supplied ACPI filter 在 那些裝置的bus driver 上
面. ACPI filter 負責處理所有有關電源管理策略的問題
Function, Filter, Bus Driver 之間的關係
Function Driver
Filter Driver
驅動程式
Bus Driver
tcpip.sys 網路
mouclass.sys 滑鼠
kbdclass.sys 鍵盤
cdrom.sys CD-ROM
Window Management and
Graphics System
緣起
早期 Windows NT 的主要目標在 security, 這使
得 graphics system 在 user address space 中
執行 效率低落
自從 NT 4.0 開始, 將 widowing 與 graphics 移
動到 kernel model 以增加效能
Window management
window class, window, window message,
window hook, menu, title bar 等
提供基本的使用者介面
放在 user32.dll 並且定義在 winuser.h 中提供
使用者呼叫
Graphics system
實作了 GDI / DirectDraw / Direct3D 等底層繪
製功能
並且為系統 GDI 的底層
Display Driver / Printer Driver
GDI32.dll
Graphics design interface 提供
建立 graphics, draw text, 管理
image.
延伸讀物
www.sysinternals.com
提供了許多好用的 Kernel Mode device driver
NT Utility, 用來處理 registry, file system, I/O
port monitoring