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