• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            內(nèi)核層次架構(gòu)

            windows程序運行分為內(nèi)核模式和用戶模式,內(nèi)核模式可以訪問所有的內(nèi)存地址空間, 并且可以訪問所有的CPU指令。一般程序運行在用戶模式, 通過系統(tǒng)調(diào)用切換到內(nèi)核模式執(zhí)行系統(tǒng)功能,Windows系統(tǒng)通過這種方式來確保系統(tǒng)的安全和穩(wěn)定。



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

            硬件抽象層(Hardware Abstraction Layer) (HAL) (hal.dll)
            最底層隔離硬件的, 底層的第三方驅(qū)動程序就運行在這層。

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

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

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

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

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

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

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

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

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

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

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

            由用戶模式調(diào)用內(nèi)核模式一般有2種方式 系統(tǒng)調(diào)用(system call) 和 IOCTL (IO Control Commands)


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

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

            進(jìn)程間通訊方式

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



            總結(jié)一下 ,通過上面Windows系統(tǒng)中一些關(guān)鍵概念的介紹, 加深我們對Windows系統(tǒng)的理解, 讓我們對應(yīng)用開發(fā)全局性的把握。 
            posted on 2013-01-12 22:03 Richard Wei 閱讀(8617) 評論(0)  編輯 收藏 引用 所屬分類: windows desktop
            久久久久无码国产精品不卡| 7777精品久久久大香线蕉| 日韩精品久久久久久免费| 一本色道久久88综合日韩精品| 狠狠色丁香婷婷综合久久来来去 | 久久亚洲精品人成综合网| 青青久久精品国产免费看| 热RE99久久精品国产66热| 亚洲人成无码网站久久99热国产| 一级A毛片免费观看久久精品| 无码8090精品久久一区| 精品久久久久久久国产潘金莲 | 亚洲精品无码久久一线| 亚洲AV日韩精品久久久久| 九九久久自然熟的香蕉图片| 国产91久久精品一区二区| 99久久综合狠狠综合久久| 午夜精品久久久久久影视777| 久久人人爽人人爽人人片AV东京热 | 青青草原综合久久大伊人精品| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 欧洲人妻丰满av无码久久不卡| 久久久久久九九99精品| 国产精品久久国产精麻豆99网站| 精品久久国产一区二区三区香蕉| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 天天爽天天爽天天片a久久网| 久久久精品人妻无码专区不卡| 久久丫忘忧草产品| 欧美亚洲另类久久综合| 狠狠色狠狠色综合久久| 国产 亚洲 欧美 另类 久久| 久久人人爽人人爽人人片AV不| 狠狠色丁香婷综合久久| 思思久久好好热精品国产| 国产成人精品久久免费动漫| 欧美亚洲国产精品久久| 久久婷婷国产麻豆91天堂| 国内精品伊人久久久影院 | 97热久久免费频精品99| 久久免费视频1|