• <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>

            統計

            • 隨筆 - 50
            • 文章 - 42
            • 評論 - 147
            • 引用 - 0

            留言簿(6)

            隨筆分類

            文章分類

            Link

            搜索

            •  

            積分與排名

            • 積分 - 164705
            • 排名 - 159

            最新評論

            閱讀排行榜

            評論排行榜

            windows session機制深入解析(下)

             


            我們在深入一點。在下圖中展示了session0的基本組成,其中有個名為Bob的用戶登入。正如你所看到的,Winsta0包含用戶控制臺中的所有進程還有任何被標記為可交互(Interactive)的任何服務。本例中,Winsta0包括winlogon.exe,explorer.exe和其他需要與用戶交互的服務。名為service-0x0-3e7$的Windows station 擁有在Local system帳號下且不與用戶交互的所有服務。本例中service.exe正是這樣的服務。,正如你所看到的連接線,將來自各個不同虛擬session的進程載入到單個windows station。SQL進程被載入到其自身的windows station并且使用自己的證書認證,所以它不屬于其他兩個windows station。

            因此,我們可以將上圖總結如下:

            1. 整個圖展示的是session0.
            2. 在Bob帳號下的所有進程都載入到Winsta0。
            3. 在local system帳號下可交互進程載入到winsta0。
            4. 在local system帳號下不可交互進程載入到Service-0x0-3e7% windows station 。
            5. 在私有證書下啟動的進程載入到其自己的windows station(像SQL)。

            一個單獨的桌面堆分配給一個單獨的桌面對象。這個堆包含各種人機交互對象,包括窗口,目錄和鉤子。當應用程序需要引用一個人機交互對象時,它將會去調用user32.dll去分配該對象,并且分配的每一個交互對象都會占用一部分桌面堆。如果桌面堆趨于耗盡,你將會看到不正常顯示或其他不正常現象。并且,如果session視圖存儲區耗盡,session將不能在創建更多的桌面堆。當然兩者中的任何一個出現都是不好的。這就是或許為什么當你還有很多內存剩余的時候仍然會接到“內存耗盡錯誤”的原因。


            當這種情況發生時,你可能會收到“初始化錯誤”伴隨著視窗不正常顯示。一個典型的錯誤是 0xc0000142,意思是 STATUS_DLL_INIT_FAILED。你可以從癥狀中得知引發問題的原因是由于單個桌面堆還是整個會話引起的。如果桌面堆耗盡,你僅僅會看到與該窗口堆相關的進程出現問題。如果是session視圖存儲區耗盡,你會看到整個session出現問題。


            win32k.sys有一個固定的48M的存儲空間分配給桌面堆。在終端服務中,這個空間是被每個session所共享,結果是僅僅留出20MB給桌面堆。所以,在終端服務器上比在個人電腦上更容易出現桌面堆耗盡的情況。但在vista和windows server2008中由于桌面堆是動態分配的,所以48M的限制不復存在。


            注冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems 用來設定這個存儲區的大小,它的值形如“%SystemRoot%system32csrss.exe ObjectDirectory=Windows SharedSection=1024,3072,512 Windows … ”

            需要關注的是"SharedSection=1024,3072,512".  這三個值決定了將有多少KB的空間分配給桌面堆的各個部分。第一個值指示所有桌面共享堆的大小,用來存儲全局句柄表和共享系統設置。默認值是1024KB,一般情況下不需要修改這個值。第二個值指示分配個每個在可交互windows station中桌面堆的大小,用來存儲諸如鉤子,菜單,字符串和窗口之類的對象,默認值是3072KB。登錄的用戶越多,創建的桌面就越多。結果是,所有桌面堆大小的總和增加以反映創建的桌面數增加。然而,每個桌面僅僅擁有3072KB的可交互桌面堆大小。第三個值指示分配個每個在不可交互windows station中桌面堆的大小,默認值是512KB,如果沒有設定,將于第二個值相同。


            在用戶帳號下的每個服務進程都會由SCM(Service Control Manager )在不可交互window station下分配一個桌面。因此,每個這樣的服務都會消耗一部分向SharedSection中第三個值設定的桌面堆的大小。在可交互和不可交互wndow station下的桌面堆的總大小必須在48M以內。所以,減小在sheareSection中第二或第三個值的大小會增加可以被創建的總桌面數的大小,相應的也會減少在各自桌面內科創建的鉤子,菜單,字符串和窗口的數量。反之亦然。同樣,增加SharedSection第三個值的大小會減少用戶帳號下可運行的服務數量

            參考文章:

            posted on 2009-07-18 12:59 pear_li 閱讀(3050) 評論(2)  編輯 收藏 引用 所屬分類: windows kernelTranslate

            評論

            # re: windows session機制深入解析(下) 2009-07-18 15:44 羅萊家紡

            謝謝如此準確的翻譯
              回復  更多評論    

            # re: windows session機制深入解析(下) 2009-07-20 20:06 戴爾電腦

            看看有幫助!
              回復  更多評論    
            久久国产乱子伦精品免费强| 色综合久久久久无码专区| 97久久天天综合色天天综合色hd| 精品国产一区二区三区久久| 精品久久久久一区二区三区| 国产精品乱码久久久久久软件 | 国产伊人久久| 亚洲伊人久久成综合人影院| 91久久精品国产免费直播| 久久婷婷五月综合97色| 久久亚洲国产最新网站| 久久久久国产精品嫩草影院 | 久久99国产精品久久99| 久久午夜夜伦鲁鲁片免费无码影视 | 久久精品人妻一区二区三区| 日产精品久久久久久久性色| 日本精品久久久久影院日本 | 女同久久| 色婷婷综合久久久久中文字幕| 久久婷婷五月综合97色一本一本 | 精品综合久久久久久88小说 | 精品久久久久中文字幕一区| 色欲av伊人久久大香线蕉影院| 久久综合九色综合欧美就去吻| 99久久国产亚洲高清观看2024 | 无码人妻少妇久久中文字幕蜜桃| 久久久久久一区国产精品| 亚洲综合婷婷久久| 久久精品成人免费网站| 国产91色综合久久免费| 77777亚洲午夜久久多喷| 亚洲∧v久久久无码精品| 97精品国产97久久久久久免费| 无码人妻精品一区二区三区久久久| 婷婷久久综合九色综合九七| 久久伊人中文无码| 欧美日韩久久中文字幕| 亚洲午夜久久久影院伊人| 亚洲欧美成人综合久久久| 色欲综合久久躁天天躁蜜桃| 99久久人妻无码精品系列|