九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
理解Windows內(nèi)核模式與用戶模式

分類: C++ 1632人閱讀 評(píng)論(0) 收藏 舉報(bào)

1、基礎(chǔ)

運(yùn)行 Windows 的計(jì)算機(jī)中的處理器有兩個(gè)不同模式:“用戶模式”和“內(nèi)核模式”。根據(jù)處理器上運(yùn)行的代碼的類型,處理器在兩個(gè)模式之間切換。應(yīng)用程序在用戶模式下運(yùn)行,核心操作系統(tǒng)組件在內(nèi)核模式下運(yùn)行。多個(gè)驅(qū)動(dòng)程序在內(nèi)核模式下運(yùn)行,但某些驅(qū)動(dòng)程序在用戶模式下運(yùn)行。

當(dāng)啟動(dòng)用戶模式的應(yīng)用程序時(shí),Windows 會(huì)為該應(yīng)用程序創(chuàng)建“進(jìn)程”。進(jìn)程為應(yīng)用程序提供專用的“虛擬地址空間”和專用的“句柄表格”。由于應(yīng)用程序的虛擬地址空間為專用空間,一個(gè)應(yīng)用程序無法更改屬于其他應(yīng)用程序的數(shù)據(jù)。每個(gè)應(yīng)用程序都孤立運(yùn)行,如果一個(gè)應(yīng)用程序損壞,則損壞會(huì)限制到該應(yīng)用程序。其他應(yīng)用程序和操作系統(tǒng)不會(huì)受該損壞的影響。

用戶模式應(yīng)用程序的虛擬地址空間除了為專用空間以外,還會(huì)受到限制。在用戶模式下運(yùn)行的處理器無法訪問為該操作系統(tǒng)保留的虛擬地址。限制用戶模式應(yīng)用程序的虛擬地址空間可防止應(yīng)用程序更改并且可能損壞關(guān)鍵的操作系統(tǒng)數(shù)據(jù)。

在內(nèi)核模式下運(yùn)行的所有代碼都共享單個(gè)虛擬地址空間。這表示內(nèi)核模式驅(qū)動(dòng)程序未從其他驅(qū)動(dòng)程序和操作系統(tǒng)自身獨(dú)立開來。如果內(nèi)核模式驅(qū)動(dòng)程序意外寫入錯(cuò)誤的虛擬地址,則屬于操作系統(tǒng)或其他驅(qū)動(dòng)程序的數(shù)據(jù)可能會(huì)受到損壞。如果內(nèi)核模式驅(qū)動(dòng)程序損壞,則整個(gè)操作系統(tǒng)會(huì)損壞。

此圖說明了用戶模式組件與內(nèi)核模式組件之間的通信。


2、內(nèi)核層次架構(gòu)


下面是內(nèi)核的層次劃分:

硬件抽象層(HardwareAbstraction Layer) (HAL) (hal.dll)
最底層隔離硬件的,底層的第三方驅(qū)動(dòng)程序就運(yùn)行在這層。

內(nèi)核(Kernel)
實(shí)現(xiàn)操作系統(tǒng)的一些底層服務(wù),比如線程調(diào)度,多處理器的同步,中斷/異常處理等。

執(zhí)行體(Executive)ntoskrnl.exe
實(shí)現(xiàn)基本的操作系統(tǒng)服務(wù),比如基本的線程進(jìn)程管理,內(nèi)存管理, IO及進(jìn)程間通訊等。

窗口圖形子系統(tǒng)(Windows Graphics Subsystem)
win32K.sys在內(nèi)核層實(shí)現(xiàn),用戶界面相關(guān)都依賴該層,User32.dll的大部分功能都由該層實(shí)現(xiàn)。

用戶層關(guān)鍵進(jìn)程

Windows系統(tǒng)在用戶層有幾個(gè)關(guān)鍵的系統(tǒng)進(jìn)程:

Smss.exe(session manager Subsystem)
關(guān)于Session的概念可以參考我的這篇Sessions, Window Stationsand Desktops,在操作系統(tǒng)啟動(dòng)時(shí)會(huì)創(chuàng)建一個(gè)不與任何Session關(guān)聯(lián)的Smss.exe管理者實(shí)例,然后當(dāng)有用戶登錄時(shí)它會(huì)為每個(gè)Sessin拷貝一份與之關(guān)聯(lián)的Smss.exe實(shí)例,然后由該關(guān)聯(lián)的Smss.exe實(shí)例啟動(dòng)winlogon.execsrss.exe.

WinLogon.exe
該進(jìn)程管理用戶的登錄和注銷,我們按Ctrl+Alt+Del出現(xiàn)的界面和登錄后出現(xiàn)的桌面窗口都是由它啟動(dòng)的。

Csrss.exe( Client/Server Runtime Subsystem)
我們可以看到我們的桌面窗口(GetDesktopWindow)是由該進(jìn)程創(chuàng)建的,該進(jìn)程主要負(fù)責(zé)Win32子系統(tǒng)的用戶模式部分(內(nèi)核模式部分由win32k.sys實(shí)現(xiàn))。

Lsass.exe(Local Security Authority Subsystem)
WinLogon.exe通過該進(jìn)程驗(yàn)證用戶登錄,登錄后產(chǎn)生安全訪問令牌對(duì)象,通過該令牌創(chuàng)建Explorer.exe,我們其他用戶進(jìn)程都由Explorer.exe啟動(dòng),并且繼承了該令牌權(quán)限。

Services.exe
該進(jìn)程簡(jiǎn)稱為SCM(NT Service Control Manager),該進(jìn)程負(fù)責(zé)啟動(dòng)用戶態(tài)一些特殊進(jìn)程,也就是我們通常所說的服務(wù)程序。


3、用戶模式調(diào)用內(nèi)核模式的方式

4、內(nèi)核模式調(diào)用用戶模式

    可以通過IOCTL的上下文傳遞,也可以通過APC (Asynchronous Procedure Call)直接調(diào)用。

5、進(jìn)程間的通信

另外一種非常強(qiáng)大的用戶模式與內(nèi)核模式通訊方式,同時(shí)也支持進(jìn)程間通訊,該方式就是ALPC(Advanced Local Procedure Call),該方式被操作系統(tǒng)大量使用, WinRT中的Broker進(jìn)程也用到了它
該方式實(shí)際上就4個(gè)核心函數(shù):nt!NtAlpcSendWaitReceivePort,nt!NtAlpcCreatePort, nt!NtAlpcConnectPort, Nt!AplcAcceptConnectPort, 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux基礎(chǔ)系列
揭秘:你的Windows 7為什么會(huì)崩潰
Windows NT 和 VMS: 其余的故事 (The Rest of the Story)
一文了解Linux內(nèi)核
一文帶你了解操作系統(tǒng)核心概念
理解 JVM 如何使用 Windows 和 Linux 上的本機(jī)內(nèi)存
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服