• <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>
            內核層次架構

            windows程序運行分為內核模式和用戶模式,內核模式可以訪問所有的內存地址空間, 并且可以訪問所有的CPU指令。一般程序運行在用戶模式, 通過系統調用切換到內核模式執行系統功能,Windows系統通過這種方式來確保系統的安全和穩定。



            下面是內核的層次劃分:

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

            內核 (Kernel)
            實現操作系統的一些底層服務,比如線程調度, 多處理器的同步,中斷/異常處理等。

            執行體 (Executive)(ntoskrnl.exe
            實現基本的操作系統服務,比如基本的線程進程管理,內存管理, IO及進程間通訊等。

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

            用戶層關鍵進程

            Windows系統在用戶層有幾個關鍵的系統進程:

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

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

            Csrss.exe ( Client/Server Runtime Subsystem)
            我們可以看到我們的桌面窗口(GetDesktopWindow)是由該進程創建的, 該進程主要負責Win32子系統的用戶模式部分(內核模式部分由win32k.sys實現)。

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

            Services.exe
            該進程簡稱為SCM (NT Service Control Manager), 該進程負責啟動用戶態一些特殊進程, 也就是我們通常所說的服務程序。

            用戶模式調用內核模式方式

            由用戶模式調用內核模式一般有2種方式 系統調用(system call) 和 IOCTL (IO Control Commands)


            內核模式調用用戶模式方式

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

            進程間通訊方式

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



            總結一下 ,通過上面Windows系統中一些關鍵概念的介紹, 加深我們對Windows系統的理解, 讓我們對應用開發全局性的把握。 
            posted on 2013-01-12 22:03 Richard Wei 閱讀(8602) 評論(0)  編輯 收藏 引用 所屬分類: windows desktop
            久久精品国产亚洲av瑜伽| 中文字幕久久精品无码| 国产精品99久久久久久董美香| 亚洲伊人久久大香线蕉苏妲己| 日韩久久久久中文字幕人妻 | 久久99精品久久久久久水蜜桃| 中文字幕亚洲综合久久2| 日韩欧美亚洲国产精品字幕久久久| 午夜天堂精品久久久久| 久久久艹| 99久久99久久精品国产片果冻 | 国产亚洲色婷婷久久99精品91| 国产 亚洲 欧美 另类 久久| 久久久久精品国产亚洲AV无码| 四虎国产精品免费久久5151| 亚洲午夜无码久久久久| 一本大道久久香蕉成人网| 久久免费视频观看| 日产精品久久久久久久性色| 中文字幕无码久久久| 国产视频久久| 久久精品国产亚洲沈樵| 久久人妻少妇嫩草AV无码专区| 久久久久久午夜精品| 久久中文精品无码中文字幕| 9191精品国产免费久久| 久久久青草久久久青草| 久久国产乱子伦精品免费强| 久久精品水蜜桃av综合天堂| 久久偷看各类wc女厕嘘嘘| 中文字幕热久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久久久亚洲精品天堂久久久久久| 久久免费精品视频| 99国内精品久久久久久久| 99久久精品免费看国产免费| 久久精品国产清自在天天线| 亚洲精品成人网久久久久久| 国内精品九九久久精品| 久久天天躁狠狠躁夜夜avapp|