視窗技術之研討與管理簡介 一窺視窗內部的技術奧秘 曹祖聖 台灣微軟資深講師 jimycao@top-light.com.tw
講師簡介 How am I ? 姓名:曹祖聖 Jimy Cao 郵件:jimycao@top-light.com.tw 證照:MCP, MCP+I, MCSA, MCSE, MCDBA, MCAD, MCSD, MCT 現任: 台灣微軟資深講師 巨匠電腦講師 聖擎科技股份有限公司軟體總技術長 光明頂軟體股份有限公司研發顧問 行動智慧股份有限公司技術顧問 凌天科技有限公司技術顧問 專業電腦圖書作家 電腦雜誌專欄作家
講師簡介 How am I ? 經歷: 一級棒資訊股份有限公司系統分析師、專案經理 華彩教育訓練中心、資策會教育訓練中心講師 巨匠電腦認證中心兼任講師、專任講師、顧問講師 微軟 TechEd 2000、2001、2002、2003 研討會講師 (6 場) 微軟 PDC 2002 研討會講師 (2 場) 微軟 Windows 2000 實力札根研討會講師 (2 場) 微軟 DevCon 專業 .NET 開發技術研討會講師 (8 場) 微軟 Visual Studio .NET 中文版上市發表會 (全省巡迴 4 場) 微軟 Windows Server 2003 中文版上市發表會 (全省巡迴 4 場) 微軟 Office 2003 中文版上市發表會 (全省巡迴 4 場) 微軟 2003 ISV Training、Smart Client ISV Training 講師 第一屆認證博覽會講師、巨匠精英展望會講師 (全省巡迴 3 場) 東海、成功、淡江 … 等大專院校資訊技能生涯規劃講座講師 大台中人力銀行特約講師、環台聯合企業有限公司網路行銷顧問
大綱 視窗平台介紹 視窗作業系統的運作機制 其它關鍵程式技術介紹 Windows XP Windows Server Windows CE 記憶體管理 行程管理 檔案系統介紹 裝置驅動程式管理 視窗安全機制 其它關鍵程式技術介紹 GDI+ 視窗繪圖技術 Smart Device DirectX 影像與多媒體技術
Windows XP
Windows Server
Windows CE
視窗系統架構
Environment Subsystems Hardware Abstraction Layer (HAL) Windows 2003 架構 (簡化版) Environment Subsystems System & Service Processes User Apps OS/2 POSIX Win32 Subsystem DLL User Kernel Executive Win32 User/GDI Device Drivers Kernel Hardware Abstraction Layer (HAL)
Executive Services API Hardware Abstraction Layer (HAL) Windows 2003 架構 (完整版) Replicator Alerter Event Log Win32 POSIX OS/2 Session Mgr WinLogon System Processes Services User Apps Environment Subsystems Interface DLL Subsystem DLL User Kernel Executive Services API Registry I/O System Security Monitor Win32 GDI Object Services Memory Mgmt Processes/ Threads File Systems Object Management Device Drivers Kernel Exec. RTL Hardware Abstraction Layer (HAL) I/O Devices DMA/Bus Control Cache Control Clocks/ Timers Privileged Architecture Interrupt Dispatch
Executive Services API Hardware Abstraction Layer (HAL) Windows 2003 架構 (完整版) Replicator Alerter Event Log Win32 POSIX OS/2 Session Mgr WinLogon System Processes Services User Apps Environment Subsystems Interface DLL Subsystem DLL User Kernel Executive Services API I/O System Security Monitor Processes/ Threads Object Services Memory Mgmt Win32 GDI NTOSKRNL.EXE File Systems Object Management Device Drivers Kernel Exec. RTL Hardware Abstraction Layer (HAL) I/O Devices DMA/Bus Control Cache Control Clocks/ Timers Privileged Architecture Interrupt Dispatch
Windows 2003 架構各部元件 #1 Windows 2003 Executive 作業系統核心部份的最上層 提供應用程式一般化的介面 行程與執行緒的建立與刪除 記憶體管理 I/O 行程間呼叫 安全性 在核心模式下執行
Windows 2003 架構各部元件 #2 Windows 2003 Kernel 提供低階的作業系統功能 執行緒排程 中斷與例外分配 多處理器同步 HAL (Hardware Abstraction Layer) 讓作業系統獨立於硬體平台 不同的主機版 (晶片組) 有不同的 HAL 提供 I/O 的標準的介面
Windows 2003 架構各部元件 #3 Device Drivers I/O 管理員與相對應的週邊硬體之間的介面 檔案系統驅動程式、網路通訊協定驅動程式、硬體驅動程式 驅動程式呼叫 HAL 的功能介面來控制硬體 可以使用「電腦管理」來檢視所有安裝的驅動程式 Win32 User/GDI (Graphics Device Interface) 負責實作圖形使用者介面 graphical user interface (GUI) 視窗的繪製與管理、使用者的介面控制 繪圖
Windows 2003 的記憶體定址 System Application 4Gb 2Gb (Kernel, Executive, HAL) Privileged Memory Addresses 2Gb Application (User Process Space) Unprivileged Memory Addresses
Environment Subsystems Hardware Abstraction Layer (HAL) 子系統元件 API DLLs For Win32: Kernel32.DLL, Gdi32.DLL, User32.DLL Subsystem process For Win32: CSRSS.EXE Kernel-Mode GDI Code (Win32 only) 1 2 3 Environment Subsystems System & Service Processes 2 User Apps OS/2 POSIX Win32 Subsystem DLL 1 User Kernel Executive Win32 User/GDI 3 Device Drivers Kernel Hardware Abstraction Layer (HAL)
子系統元件所扮演的角色 API DLLs Subsystem process Win32K.SYS 提供該子系統的所有可供呼叫 API Maintains global state of subsystem Win32K.SYS 實作 Win32 User/GDI 功能 POSIX 與 OS/2 子系統也會使用這個子系統來做顯示處理
Win32 子系統 CSRSS.EXE WIN32K.SYS 包含 子系統中的 DLLs 將 Win32 API 對應到核心模式下的服務呼叫 支援主控制模式與視窗模式 負責建立與刪除 Win32 行程與執行緒 WIN32K.SYS 包含 Window Manager 鍵盤、滑鼠輸入,螢幕輸出 Graphics Device Interface (GDI) 子系統中的 DLLs 將 Win32 API 對應到核心模式下的服務呼叫 USER32.DLL, KERNEL32.GDI -> NTOSKRNL
記憶體管理
分頁處理/虛擬記憶體管理
行程管理
Win16/ Win32 行程管理
檔案系統
影片: Windows 檔案系統介紹 讓您了解各種檔案系統的差異 選擇 最大的分割大小 每一單位儲存空間大小 安全性支援 資料壓縮支援 依據磁碟大小來選擇最有效率的檔案系統
FAT / FAT32 適用於小型的磁碟上 所有作業系統都支援 適合用在多重作業系統開機的環境下 FAT/FAT32 Windows XP Professional Windows 98 FAT/FAT32
NTFS 提供比 FAT 更好的可靠性 使用檔案權限與 EFS 檔案加密提昇安全性 適合各種容量的磁碟
conversion during upgrade 檔案系統轉換 From: To: Windows XP Conversion not necessary NTFS on Windows 2000 NTFS volume Automatic conversion during upgrade NTFS on Windows NT NTFS volume FAT Use convert command NTFS volume FAT NTFS volume No conversion
NTFS 檔案壓縮 NTFS 檔案與資料夾都有壓縮狀態 當檔案被存取時,會自動在背景進行解壓縮 磁碟空間計算是以未壓縮的大小來算 可以使用不同的顏色來辨別壓縮與否 NTFS partition FileA FileB
壓縮功能的使用建議 決定那一種類型的檔案要壓縮 避免去壓縮系統或執行檔 壓縮固定的檔案,而不要壓縮經常修改的檔案 使用不同的顏色來指示壓縮的與否
NTFS 檔案壓縮
EFS 介紹 加密/解密過程背景處理 已加密檔案只能由加密者存取 允許指定回復代理人 可以在本機與網路上進行 ~~~~ ~~~~~ 加密/解密過程背景處理 已加密檔案只能由加密者存取 允許指定回復代理人 可以在本機與網路上進行 可以使用不同顏色來區分檔案加密與否
檔案加密 ~~~ ~~~~ ~~~ ~~~~ ~~~ ~~~~ 首先要設定檔案的加密狀態 當檔案被儲存時,檔案會用一系列的加密金鑰進行加密 使用者的解密金鑰儲存在 Data Decryption Field (DDF) DDF 回復代理人的解密金鑰儲存在 Data Recovery Field (DRF) ~~~ ~~~~ DRF
增加援權解密使用者 2 1
檔案解密 ~~~~ ~~~~~ EFS 自動偵測檔案的加密狀態,並且找到使用的私密金鑰 DDF 使用解密檔案的金鑰解密檔案 使用使用者的私密金鑰來解開 DDF,以便取得解密檔案的金鑰 EFS 自動偵測檔案的加密狀態,並且找到使用的私密金鑰 ~~~~ ~~~~~ DDF
回復代理人 ~~~~ ~~~~~ ~~~~ ~~~~~ 檔原始的加密者私密金鑰不存在時 回復代理人可以使用他的私密金鑰解開 DRF,以便取得解密檔案的金鑰 ~~~~ ~~~~~
EFS 的使用建議 加密我的文件夾 針對資料夾加密 妥善保存憑證資料 指定回復代理人
EFS 檔案加密
裝置驅動程式管理
什麼是裝置 ? 裝置指的是連接到電腦上的設備 例如: 顯示卡、印表機、網路卡、數據機 裝置可以分成以下兩大類: Plug and Play 隨插即用型裝置 BIOS 與作業系統可以辨識出裝置並且自動調整裝置使用的資源與安裝適當的驅動程式 Non-Plug and Play 非隨插即用型裝置 BIOS 與作業系統無法辨識出裝置
什麼是裝置驅動程式 ? 裝置驅動程式 : 在 Windows 作業系統可以正常使用裝置之前,必須要安裝正確的驅動程式 可以使用「裝置管理員」 一個用來讓裝置和作業系統相互溝通的程式 當作業系統啟動之後便會自動載入執行 在 Windows 作業系統可以正常使用裝置之前,必須要安裝正確的驅動程式 可以使用「裝置管理員」 識別、安裝、更新裝置驅動程式 還原到前一版本的驅動程式 啟用、停用、移除裝置驅動程式
什麼是裝置驅動程式的簽署 ? 數位簽章用來證明裝置驅動程式符合微軟一系列的測試,適合安裝在 Windows 上 使用已簽署的裝置驅動程式可以確保效能 與穩定性 Windows 提供以下機制與程式 Windows File Protection System File Checker File Signature Verification
如何設定裝置驅動程式簽署 ? 2 3 1 4 Click Driver Signing Select the appropriate driver signing option 3 Open System 1 Select the check box in Administrator option 4
什麼是裝置驅動程式回復 ? 當您安裝了有問題的裝置驅動程式 ,而造成系統異常時,可以將裝置驅動程式回復到上一個版本 但是不可以: 回復兩個以上的版本 回復印表機驅動程式 同時回復一個多功能裝置的驅動程式
裝置驅動程式管理
系統行程與開機流程
系統行程 (Idle) Process id 0 Part of the loaded system image Home for idle threads Also called “System Process” in many displays (System) Process id 8 Home for kernel-defined threads Thread 0 launches the first “real” process, by running smss.exe (Session Manager)
系統啟動流程 1 2 3 4 5 6 7 8 BIOS 載入 MBR 並執行,MBR 會尋找開機磁區 開機磁區載入並執行作業系統的第一個檔案 NTLDR 2 NTLDR 將系統切換到 32 位元保護模式 3 NTLDR 讀取 boot.ini 顯示開機選單 4 NTLDR 將系統切換回 16 位元真實模式,然後執行 ntdetect.com 偵測硬體 5 NTLDR 讀取 NTDETECT 偵測到的硬體資訊 6 7 NTLDR 啟動 NTOSKRNL.EXE 8
系統啟動流程 smss.exe Session Manager 系統第一個建立的行程 負責啟動 csrss.exe 與 winlogon.exe csrss.exe Win32 子系統 winlogon.exe 登入行程: 啟動 services.exe & lsass.exe; 顯示登入畫面,當使用者登入時,執行 userinit.exe services.exe 服務控制器,負責啟動/停止系統服務 lsass.exe Local Security Authentication (LSA) Server userinit.exe 負責啟動 explorer.exe explorer.exe 桌面環境
開機選單設定
視窗系統安全性
安全性元件 安全性角色 (Security Principals) 安全性識別碼 SID (Security IDentifier) 包含:使用者、群組、服務、電腦 這些物件都具有 SID 安全性識別碼 SID (Security IDentifier) 用來唯一辨識物件 絕對不會重複被使用 安全性描述元 (Security Descriptors) 用來記錄物件的安全性資訊,包含: DACL SACL
DACL 與 DACL Discretionary / System Access Control List 用來記錄某一個物件,可以被那些安全性角色所存取,以及存取的權限等級 SACL 用來記錄某一個物件,所稽核 (Audit) 的對象 (安全性角色) ,以及所要稽核的動作 安全性描述元 標頭 擁有者 SID 群組 SID DACL ACEs SACL ACEs
ACE Access Control Entries DACL 資料結構 ACE 標頭 存取遮罩 使用者SID 群組SID 對此物件禁止存取 對此物件允許存取 對某一屬性或子物件禁止存取 對某一屬性或子物件允許存取 安全性描述元 標頭 擁有者 SID 群組 SID SACL ACEs DACL ACEs
DACL、SACL、ACEs
ACL 的繼承關係 Inheritance of ACL 父物件上的權限設定,預設會繼承給子物件,因此可以減少設定權限的次數 如果子物件上另外設定的權限 (ACE),與繼承自父物件的權限衝突,以子物件上的權限設定為主 DACL User1 Read / Write Group1 Read User1 Read / Write 權限繼承 使用者 存取物件 父物件 Group1 Read 子物件 DACL User1 Write User1 Deny Read Group1 Read / Write Group1 Write
ACL的繼承關係
使用者登入處理程序 Domain Controller 建立 Access Token Kerberos Service Local Security Subsystem 2 1 Ticket Access Token 6 Ticket 3 Ticket 4 建立 Access Token 5 GC Server 使用者登入 帳號 / 密碼 / 網域 1 DC 上的 Kerberos Service 將 Workstation Ticket 傳回給用戶端 4 Local Security Subsystem 向 DC 申請使用者的 Session Ticket 2 Local Security Subsystem 產生出 Access Token 5 Local Security Subsystem 再向 DC 申請 Workstation Ticket 3 使用者使用 Access Token 來產生後續的 Process 6
Access Tokens Access Token 上包含 使用者帳號的 SID 使用者所屬群組的 SID Security ID: S-1-5-21-146... Group IDs: Employees EVERYONE Sales User Rights: SetChangeNotifyPrivilege - (attributes) 3 SetSecurityPrivilege - (attributes) 0 Access Token Access Token 上包含 使用者帳號的 SID 使用者所屬群組的 SID 使用者所擁有的權力 (Right) Please touch up this graphic.
物件權限的檢查程序 1 5 2 4 3 Security Subsystem 允許存取 存取物件 應用程式 傳送 存取要求 Domain OU1 OU2 存取物件 1 允許存取 5 應用程式 傳送 存取要求 2 找到符合的 ACE,繼續找一下個 4 Security Subsystem 檢查物件 ACL 中的 每一個 ACEs 看看是否有符合的 SID DACL 3 User1 Read / Write Group1 Read
Secondary Logon Process
其它關鍵程式技術介紹
GDI+ GDI+ 包含三個部份 新特色 2D 向量繪圖 (2D vector graphics) 圖片 (imaging) 印刷格式 (Typography) 新特色 Gradient Brushes (漸層) Cardinal Splines (曲線) Path (路徑) Transformations and Matrix (矩陣變換) Scalable Regions (繪圖區) Alpha Blending (Alpha 混色) Antialiasing (線條柔和化)
GDI+ 繪圖
半透明視窗與非矩形視窗
Smart Device 表單
DirectX
謝謝各位