史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 作業系統操作技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-07-01, 09:35 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 理解Win2000 和 NT4 系統及行程活動

  本講座編號為TNQ 400-02,我是David Solomon,在接下來的兩個小時中我們將討論如何透過外表去觀察Windows 2000和Windows NT 4.0,以便理解其內部執行機制以及如何在系統級別中實現這些機制,同時還將理解在系統中執行的行程。


這個講座的目的在於:當你感覺在NT系統中從效能的立場或從行為的立場上某些事情好像出錯時給予你說明 ;使你能夠更近一些的觀察系統外殼之下的部分並且理解CPU時間如何進行分配。


如果系統執行速度慢,告訴你什麼正在執行、為什麼以及如何從應用程式執行中分離操作系統時間。

  這個講座假設你已經熟悉基本的操作系統概念,如行程的概念、多工作的概念、虛擬記憶體、分頁等等;並且你是一個有經驗的NT用戶——不必是一名系統管理員,但至少應是一個權威的NT用戶。

  這個講座結束後,你將能夠使用一系列不同的工具來觀察行程內部的活動,以便發現哪個文件被開啟、IO操作的來源和目標、哪些動態連接庫(DLL)正在由一個行程使用以及它們是從磁牒上的何處裝入的、有關行程安全性的一些細節。

  像我提到的那樣,本講座的目的之一是能夠解釋CPU時間。因此,如果CPU正在執行,那麼它正在做什麼並且為什麼這樣做呢?
時間花費在那裡以及如何被佔用:是由操作系統、設備驅動程式、執行體還是應用程式所使用呢?理解NT操作系統上執行內容的另一個方面,是知道存在哪些系統行程。


因此,如果某事務正在執行並且它不是由你所執行的,那麼它是NT的一部分。

正在執行的行程的作用是什麼,並且你如何能夠追蹤到其佔用CPU時間的可能原因呢?

其中一個方面是由Windows NT 系統行程組成的Windows NT 服務,有時,正在執行的服務行程向後映射到哪些管理員通過管理界面可以看到的服務並不是非常清楚。

  最後,我們來密切關注存在於系統行程這一非常特殊的行程中的粒度水準,該系統行程包含特殊種類的驅動程式線程執行片段和NT片段,而且,由於這種特殊行程的存在,促使我們務必深入鑽研以理解行程中的哪些片段正在執行及其原因。

  這有為本次講座準備的路線圖。首先我將對有關工具及其來源進行簡明概述。


這將是一堂高度依賴工具的講座,而我將在此使用支持工具包、資源工具箱及Internet上獲取的部分工具。


接著,我們將從三個角度來觀察NT系統活動:首先是行程和線程,接下來是中斷時間及其在NT中的服務與解釋機理,最後,再對系統行程樹進行遍歷。

  最後的題目是一種我們不希望發生、卻又經常遇到的行程活動,即當行程死亡時看到Dr. Watson資訊時的情況。我們將看到是什麼導致了Dr. Watson,你能進一步得到哪些資訊,以及你應如何應對這些輸出。

  首先讓我們先看一看工具。這是一個關於本次講座所使用到工具的總概括。


效能監視器——它理所當然地在對NT系統活動的觀察中發揮關鍵性作用。


我們還將看到一些註冊表鍵。註冊表是NT用來對其自身進行配置的系統資料庫,因此,它包括了有助於理解程序在何處執行、來自何處,以及將服務名稱映射到映像名稱上的資訊。接下來,我們將探究兩個來自於支持工具包中的行程觀察工具……對於初次接觸Windows 2000的人而言,該支持工具包在NT 4.0中並不存在。



曾經有一個NT 4.0資源工具包的有限子集,它與Service Pack 4.0相元件服務並稱作Windows NT資源工具箱支持工具,該工具包在Windows 2000中已經更名為Windows 2000支持工具,以此來消除在它與資源工具之間存在的混淆概念。它是每個Windows NT和Windows 2000銷售版本的組成部分。


它存在於支持工具資料夾中。


它使用一個適當的安裝程序來安裝。它包括了40至50種整合在資源工具包中的工具,但該工具包對Windows 2000用戶而言是至關重要、不可或缺的。我將使用來自資源工具包的兩個工具。



它們是資源工具包所含200多種工具中的一分子,而我將強力推薦,如果你還未曾對資源工具包中的工具進行過瀏覽的話,這兩個工具是支持工具的一套重要附件,通過它們,你將能夠洞悉NT系統並理解其內部活動。

  接下來列出的4個工具來自www.sysinternals.com網站。



你也許已對該網站十分熟悉。它過去稱為NT Internals。

在此我將進入其主頁以使你們看到該網站的面貌。Sysinternals是自由軟體網站,這裡有所有可免費下載的工具。



這些工具中的大多數來源碼也是公開的,這些工具被設計用來透過支持界面獲取有關NT的資訊,而這些資訊往往是通過標準Microsoft工具所不能訪問到的。大多數NT管理員對此十分熟悉,你們將在講座期間看到其中兩個工具的使用情況。



 那麼,讓我們從最基本水準上的行程與線程活動開始,在開始之前,先來定義一下有關術語。行程與線程的區別到底是什麼?行程是執行程序的實例。



例如,當你執行記事本程序(Nodepad)時,你就新增了一個用來容納組成Notepad.exe的程式碼及其所需使用動態連接庫的行程。NT中的每個行程均執行在其專用且受保護的位址空間內。



因此,如果你同時執行記事本的兩個拷貝,該程序正在使用的資料在各自實例中是彼此獨立的。在記事本的一個拷貝中將無法看到該程序的第二個實例開啟的資料。我這裡以沙箱為例進行闡述。

  一個行程就好比一個沙箱。線程就如同沙箱中的孩子們。孩子們在沙箱子中跑來跑去,並且可能將沙子攘到別的孩子眼中,他們會互相踢打或撕咬。


但是,這些沙箱略有不同之處就在於每個沙箱完全由牆壁和頂棚封閉起來,無論箱中的孩子如何狠命地攘沙,他們也不會影響到其它沙箱中的其他孩子。因此,每個行程就像一個被保護起來的沙箱。



未經許可,無人可以進出。這就是NT中強大的記憶體保護模型的形成機制,正是由於這種機理,才使NT明顯區別於Windows 3.1、Windows 95及Windows 98。

  在Windows NT和Windows 2000中,程序、程序實例或者行程對其它行程的執行情況或記憶體空間施加影響是不可能的。兩個行程彼此獲得專用資料或記憶體的唯一途徑就是通過傳輸協定來共享記憶體塊。這是一種協作原則。

  NT執行線程。換言之,線程執行而行程不執行。


每個行程包含單一線程,因此,當你執行記事本時,就產生相應的行程沙箱用來容納程式碼和資料,而一個線程則被新增用以在指向記事本程序的主要入口起點處開始執行程序。



一旦該線程在執行,它就可以新增額外的線程,一個行程的多個線程並行進行調度,這使多線程編程非常複雜,每個線程均共享其所處行程中的專用記憶體空間。因此,在本張幻燈片的闡述中,行程中所顯示的三個線程(都具有同時執行的潛在能力)均對行程中的專用資料或位址空間享有同等的訪問權限,這樣一來,三個線程就必須彼此同步。

  那麼,為什麼要有多線程呢?為什麼程序員選項將程序分割成多個線程呢?有兩個原因:1)它產生了更佳回應性的幻覺。



以Microsoft Word為例。當你進行文件列印時,你就已預設選項了後台列印方式,列印處理會在你繼續編輯我的文件的同時異步進行。

這是如何發生的呢?Word已新增了獨立的線程來進行列印處理,並將列印線程的優先級設定低於處理用戶輸入的線程,由此,給用戶提供了一種幻覺,即應用程式通過將相對優先級指定給不同線程的方式來對用戶做出回應。


但是,你在Win 98和Windows 95中無法得到,而在Windows 2000與Windows NT 4.0中能夠得到的最大好處還在於,如果你工作在多處理器系統中,並且如果有多個線程要執行,這些線程事實上將能夠在可用的處理器上同時執行。



換言之,多線程應用程式能夠自動地執行於可用處理器上,只要:A)該應用程式有一個以上的線程需要同時執行;B)這些線程的優先級支持該應用程式的執行。


換言之,如果有具備更高優先級的線程存在於另一個CPU上……儘管你的應用程式有兩個需要執行的線程,而因為在別的CPU上正執行著更為重要的工作,那麼,也只能一次執行一個線程。

  技巧問題。增加第二個處理器能使單一線程應用程式更快地執行嗎?讓我們設想你有一個非常簡單的計算密集型、單一線程應用程式。它除了做計算工作之外還是做計算工作。增加一個處理器會使該應用程式更快地執行嗎?好吧,你的第一反應是不,但答案卻是肯定的,因為NT也有自身幾個片段作為線程執行。


如大多數操作系統一樣,NT也擁有後台內務管理工作。因此,增加第二個處理器就意味著,當主要的計算密集型應用程式在無須短暫中斷以執行後台操作系統內務處理活動的情況下仍能持續執行時,這類後台內務處理工作將會發生。

  以上就是對行程和線程的簡要描述。當考慮沙箱的規劃時,NT和Windows 2000是一個32位的操作系統。


如果算一下就會知道,32位意味著4GB。預設情況下,NT將這4GB位址空間分割為兩個2GB的位址空間,其中一個分配給用戶行程,另一個則分配給操作系統。換言之,每個行程均提供了一個假想,即該行程擁有一個最大為2GB、且可以載入程式碼或資料的虛擬記憶體空間。



當然,在一部128兆的膝上型電腦上,如果你執行5個將其自身擴展至2GB大小的應用程式,顯然,這些記憶體空間的一個子集在任何時候都存在於實體記憶體中。上述情況都是透明且在後台執行的。


這便是虛擬記憶體無處不在的表現。就像任何使用虛擬記憶體技術的操作系統一樣,Windows 2000僅將那些被行程佔用的記憶體空間片段按其所需地引入實體記憶體之中。再次以記事本為例,當你執行Notepad.exe時,NT並不是在程序開始時就將Notepad.exe全部讀入。它僅將碰巧被主線程執行途徑所參考的可執行程序映像片段讀入。


同理,被記事本使用的動態連接庫也不是在其被使用時即被從磁牒讀入,而只有當這些動態連接庫中的子例程被實際使用時,那些包含所需引用程式碼並存在於磁牒上的動態連接庫片段才會按需求讀入。



 在螢幕的下半部分,2GB的系統沙箱因NT沒有提供介於操作元件和驅動程式之間的保護而顯得頗為引人注目。我相信,你們中許多從事NT系統管理的人都經歷過因程序錯誤和第三方驅動程式而導致的顯示藍色現象, NT也常因這些現象而受到指責,事實上,這是來自於第三方設備驅動程式中的錯誤所導致的,而NT遭受上述指責的原因之一便是因為NT的全部和所有的設備驅動程式都處在同一個沙箱之中。



然而,每個行程都執行在其自身專用且受保護的沙箱之中,並不能影響其它的行程,同理,這些行程也不能影響操作系統,操作系統與驅動程式均存活在同一個沙箱中,而且,在驅動程式與操作系統之間並沒有保護機制。現在,你也許會問,這是為什麼?答案是效能。

這就是每個事實上成功的32位操作系統的體制。

必須將位址空間在驅動程式或操作之間進行切換也許會有很大的效能損失,但這裡應強調注意的是,當增加驅動程式時,這種切換存在的原因之一就是讓所有為驅動程式登記和Windows文件保護而對Windows 2000所進行的擴展均能夠避免或限制管理員在未經全面驗證和測試的情況下向系統沙箱中增加程式碼的偶然機會。

  操作系統行程本質上並不存在。下面我們將會看到一種稱作「系統」的行程。但那並不是指操作系統。在這些行程中,有一些操作系統的片段正在執行,但也有若干執行後台內務處理活動的行程同時存在。


當記事本開啟一個文件時,它產生一個系統使用來開啟磁牒上的文件。這一開啟磁牒文件的工作被產生該請求的記事本線程的上下文完成。



在這種意義上,操作系統執行於記事本行程的內部,而由於操作系統恰恰是一個由那些產生諸如開啟文件、讀取文件、分配虛擬記憶體及新增行程等用戶線程使用的大的子例程庫,故而它也同樣執行於其它每一個行程之中。

  Windows 2000增加了允許將多個行程群集為一個作業的新對象。一個作業由一個或多個共享同一套配額、限制及其它設定的行程組成,而這些設定僅在逐個行程的基礎上可用。



例如,如果你有一個執行於Windows 2000上的Batch Server系統,而且,你想要為某一特定客戶限定其作業中的活動行程數量,這是有可能的——作為作業的一個內容,活動行程限制是可以設定的;再比如,你想設定該作業應使用50兆以上的記憶體,這裡也有辦法來指定該作業可使用的最大記憶體容量,而且,該作業仍將包括執行全面作業片段的若干行程。

  如果你看一看Windows 2000 Server和Windows 2000Advanced Server的話,你或許根本不會注意到作業對象的存在。


這是因為,除非你新增了一個作業對象並使用效能監視器來對它進行觀察,否則,在用戶界面上將不會有任何東西來指示該作業對像已被增加到系統中。


Windows 2000 DataCenter Server將提供一種稱作行程控制管理器的工具,該工具將允許系統管理員新增作業對象,同時,將行程指定給作業對象並為其指定在本張幻燈片上所顯示的限制與配額。


作業對象可謂是為第三方應用程式的使用而定制的Windows 2000基本組成要素。你可以希望批次處理系統一開始就使用作業對象,同樣,行程控制管理器和資料中心也將利用這一內核對象。

  在此,我想提及作業對象的一個方面——調度級別,它對於大規模伺服器而言是非常有趣的,儘管我們不是在談論Windows 2000中線程的調度問題,而關於作業調度級別內容有趣的東西則是它允許對線程執行中的一個重要方面進行控制,要知道,這在Windows NT 4.0中是不能被設定的。


調度級別是從0到9之間的一個數位。5是預設值。



如數值被提高到5以上,調度級別將使行程中的線程在輪到它執行時執行更長的時間;反之,若數值降至5以下,調度級別則將縮短線程的執行時間長度。這就是級別調度,換言之,可以說某一工作佔用了20%的CPU,而另一工作佔用了50%的CPU。在Windows NT 4.0中,這種級別調度是不可達成的。


有人或許認為,「我能夠提高一個行程的優先級,而這樣做將提供給該線程更多的執行時間」,但是,這樣做會把全部執行時間都賦予這個行程。因此,如果你同時執行兩個行程,其中一個行程的優先級高於另一個,它們都將試突執行,而具備更高優先級的行程則基本上佔用100%的CPU。



這種調度級別內容現在允許根據CPU時間的百分比對CPU進行相應的分區,而這在我看來可謂是作業對像所帶來的一個非常令人興奮的能力。

  現在,觀察NT中基本行程和線程資訊的工作有點令人頭痛,這主要是由於能夠顯示關於同一基本資訊(行程列表)的不同子集的工具大量存在。一些工具也顯示在每個行程中存在的線程。



儘管眾多能夠顯示行程和線程列表的工具往往均引用來自同一資料來源的資訊,但這些工具中的每一種也都能顯示其它工具所不能提供的獨一無二的資訊片段。


在此,我們將使用它們中的兩個進行示範,這兩個工具滿足了觀察行程和線程資訊的主要需要,但我也應說明,其它工具也具備相應的功能,只是在本次講座未予採用。



另一個阻礙理解「是什麼正處於執行之中」這一問題的因素是正在執行著的映像的名字,例如,Notepad.exe或許代表著正在執行著的程序名,但也可能並不代表正在執行著的程序名。


換言之,一個可執行文件的名字或許並不能為你指示它是哪個產品的組成部分、它來自於哪個目錄。


因此,系統管理員在Windows 2000系統中觀察行程活動時所應做的基本工作之一便是可執行程序究竟來自磁牒的哪個角落。如果你知道行程存在於哪個程式文件夾中,例如Microsoft Office,或存在於你的Win NT System 32目錄中,如果你還知道那個資料夾是什麼,那麼,你將能夠對該行程出自什麼元件有所認識。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2004-07-01, 09:42 AM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

 好了,在Windows 2000資源工具包中有一個稱作PS的Visual Basic指令碼,它是90個使用Windows 2000中某些新型基礎結構(WMI,亦即Windows系統管理工具)的VB示範樣本中的一員。


WMI允許對許多在Windows 2000之前不能被訪問的資訊進行訪問,而更重要的或許是,WMI允許在網路範圍內訪問那些以前只能在本機進行訪問的資訊。


因此,通過PS VBS指令碼,你將能夠在遠端系統上輕易地對行程列表進行觀察。這裡還有一個能夠在遠端系統上殺死行程的VB指令碼。


如果你還沒有看過Windows 2000工具包中這90個零散的VB指令碼示例的話,我極力推薦你去看一下。

  但我們的首要問題是,無論在工作站還是在伺服器上,如果行程看上去很慢,到底是什麼正在執行著呢?

對我來說,找出究竟是什麼正在執行著的最快方法,就是彈出工作管理器,翻到行程選擇項,並按CPU耗用時間片段進行排序。



在我們這麼做之前,先讓我們將工作管理器作為我們的第一個行程瀏覽工具加以介紹,儘管工作管理器或許被看作是一個使用起來相當簡單而清楚的工具,但選擇項的名稱及所列示的資訊仍可能不十分明確。因此,讓我們彈出在幻燈片中提及的工作管理器。

  有3種方法來啟動工作管理器。我將使用其中最快的一種,即組合鍵Ctrl+Shift+Esc。我按下Ctrl+Shift+Esc,我們看到的預設選擇項是應用程式選擇項。


現在,如果我問你,這一列表是關於什麼的,你會如何回答呢?
不,這不是一個應用程式列表;不,這也不是一個行程列表。事實上,它是關於帶有一套非常特殊的格式位的頂級可視視窗的列表,換言之,這是一個視窗列表,但表中的視窗並非系統中所有的視窗,也不是桌面上所有的可視的視窗,但總的來說,它是一個頂級且可視的視窗列表,你能通過在工作列上直接點擊或按Alt+Tab組合鍵來看到。

  現在,視窗由線程擁有,而線程由行程擁有,這就是為什麼存在將視窗映射到行程上這一選項的原因所在。


如果我點擊滑鼠右鍵,轉入行程,它將把我帶到以高亮度顯示的行程選擇項,現在,我點擊滑鼠將其置為反色(藍色),就顯示出擁有視窗的線程和擁有線程的行程。這裡,我們看到了在視窗和行程之間的映射。現在,再次回到應用程式選擇項。

  既然我們現在已知這是一個視窗列表,那麼這個狀態列又意味著什麼呢?好的,視窗並沒有執行。執行意味著擁有視窗的線程沒有執行,而無回應則意味著擁有視窗的線程正在執行,它在後台執行。

換言之,一個執行著的視窗就是一個正在接受滑鼠輸入,也就是圖形用戶界面輸入的視窗。


擁有視窗的線程當前處於等待狀態,而你可以在該視窗上進行點擊。

因此,視窗的常態是執行狀態。再重複一次,執行意味著擁有視窗的線程正等待你在該視窗上進行點擊。視窗並沒有執行。

  無回應是當視窗看上去被掛起時你所看到的狀態指示,或者說,該狀態在視覺上暗示你,當你在視窗上方移動滑鼠時,該視窗將不會標記出回應。你看到了什麼?

一個沙漏。

沙漏簡單地意味著擁有視窗的線程當前不接受圖形用戶界面輸入。它並不一定意味著應用程式被掛起。該線程可能正忙於其它工作,或許只是在等待磁牒或網路上的IO,並且不久會轉回到接受視窗輸入的狀態下。


因此,當線程轉回到等待圖形用戶界面輸入的常態時,無回應有時僅僅是對線程自身的清除。當然,如果應用程式真的被掛起,並且線程將不會返回到視窗輸入狀態,那麼,該視窗將顯示為不再做出回應,你可以點擊結束工作,該功能將向擁有視窗的線程發出一條資訊以釋放視窗。


在應用程式選擇項上的結束工作選項不會關閉行程,且不一定關閉視窗。它發出一條友好的Mr. Thread資訊,詢問你是否要釋放或關閉該視窗。這就是它所發出的資訊。

  讓我們通過執行一個記事本拷貝來執行一次結束工作的快速演示,輸入一些未經儲存的文字並嘗試關閉視窗。


我將在工作管理器中選項記事本視窗,按下結束工作並注意在左邊發生了什麼。

記事本收到了關閉視窗的請求並予以拒絕,我將不再重複上述操作,因為你尚未儲存你所做的修改。與此同時,工作管理器對那個你要求它去關閉並釋放的視窗已等得不耐煩了。



換言之,那個你要求釋放並關閉的視窗仍舊在那裡。於是,工作管理器說道,嗨,我們不能結束這個程序。

因為工作管理器正在等候來自於你的回應以返回視窗並檢查程序點擊取消的狀態,所以它事實上已關閉這個視窗。如果你選項馬上結束該程序,你將會失去一切未經儲存的資料。



按下現在結束按鈕在某種意義上是一個危險的操作,因為這樣一來就殺死了擁有線程的行程,而該線程已經在進行到半截的行程中處於啟動狀態。

它一直在更新磁牒上的文件,進行網路IO,誰知道呢?故而,當你選項現在結束時,務必要小心從事,因為,擁有視窗的線程其所在的行程會從系統中釋放,而沒有任何挽留的餘地。

  現在,讓我們看一下行程選擇項。


這裡的行程是指一系列行程,這些行程如我們前面所講,是由它們所執行的可執行程序實例來識別的,這就是行程選擇項中的第一列給出了映射名稱的原因。請注意,這裡並沒有行程名稱列。行程並不擁有獨立於其所歸屬實例的映射名稱。換言之,如果你執行5個記事本拷貝,你將會看到5個稱為Notepad.exe的行程。


它們是如何彼此區別的呢?其中一種方式是通過它們的行程ID,因為每個行程都擁有其獨一無二的編碼。該行程ID由Windows NT或Windows 2000產生,並可以循環使用。因此,行程ID將不會越編越大,它們能夠得到循環利用。

  第三列是被行程中的線程所佔用的CPU時間百分比。它不是CPU的編號,而是被行程佔用的CPU時間百分比。在當前的展示中,我的系統基本上是空閒的。

儘管系統看上去每一秒左右都只使用一小部分CPU時間,但該系統空閒行程仍舊耗用了大約99%的CPU時間。我們過一會兒將看到有關現象。

  第四列,CPU時間,是CPU被行程中的線程累計佔用的小時、分鐘及秒數。請注意,我對行程中的線程使用佔用一詞。這並不一定意味著那就是行程已耗用的CPU時間總和,因為,如我們一會兒將看到的,NT計時的方式是,當特定的時鐘間隔激發時,無論誰恰巧處於當前的線程中,它都將計算到CPU週期之內。

通常情況下,在大多數NT系統中,時鐘以10毫秒的間隔執行。每10毫秒NT的心臟就跳動一下。有一些驅動程式程式碼片段執行並顯示誰是當前的線程。


讓我們將CPU時間的最後10毫秒記在它的帳上。因此,如果一個線程開始執行,並在持續執行8毫秒後完成,接著,第二個線程開始執行並持續了2毫秒,這時,時鐘激發,請猜一猜這整整10毫秒的時鐘週期到底記在了哪個線程的帳上?

答案是第二個線程。因此,NT中存在一些固有的不準確性,而NT恰是以這種方式進行計時,實際情況也如是,大多數32位操作系統中都存在一個關於間隔的計時機制。


請記住這一點,因為,有時當你觀察線程所耗用的CPU總和時,會出現儘管該線程或許看上去已執行過數十萬次,但其CPU時間佔用量卻可能是零或非常短暫的現象,那麼,上述解釋便是原因所在。上述是我們在工作管理器的行程選擇項中所能看到的基本資訊列。

  現在,如果你在檢視表單中選項列,該功能將允許你增加一些諸如IO計數器、IO讀寫等關於行程細節的額外列。



這是Windows 2000的新特性,並能夠允許以逐個行程的方式檢視IO活動。在NT 4.0中,IO計數器是覆蓋全系統和所有磁牒的。


以逐個行程的方式跟蹤IO操作是不可能的。就理解行程活動而言,這一附加功能是非常重要的,因為,現在我們能夠看到系統上發生的IO是哪個行程所導致的。我已經增加了線程計數器,它表示行程中所包含的線程數量;我還增加了句柄計數器,它代表開啟對象的數量



。在本次講座的後續部分,我們還將回頭看一看開啟句柄的有關內容。

  最後,讓我們轉到效能選擇項。效能選擇項顯示了200到300個能夠通過效能監視器來顯示的NT內核效能計數器中的13個計數器的值。


我們再次看到了通常使用效能監視器工具來觀察的核心繫統效能計數器的一個小子集,而這上面的某些標籤或許還不夠清楚。例如,記憶體使用欄與物理用途並沒有什麼關係。



這是系統中全部專用且指定的虛擬記憶體。我們將不會深入到這些細節中去,只是應搞清該顯示區域中的一些項目可能使你在對系統容量限制做出決策之前能夠進行深入推敲。


這就是在外殼上的工作管理器。它是一個快捷工具。使用這個工具,你可以在一個緩慢的系統上發現那些令人討厭的行程究竟是誰。這裡再次彈出工作管理器,按下Ctrl+Shift+Esc組合鍵,進入行程選擇項,按下CPU耗用情況,按CPU利用率對工作管理器的輸出進行排序。


請記住,每次使用工作管理器時,它均按行程ID進行排序,儘管行程ID並不是一個非常有用的排序順序。因此,工作管理器並不能在你每次使用後儲存有關設定。


如果你希望按CPU耗用百分比進行排序,則必須按下CPU列。這是一種能夠迅速找出哪個或哪些行程正在耗用系統中CPU時間的建立捷逕。

  現在,讓我們轉入行程檢視器實用程序,也就是PViewer.exe。

這是我們將要執行的Windows 2000支持工具中的一個,它顯示了關於我們在後面將要進行的對系統行程加以研究的試驗中所需的行程和線程的更多細節。現在,我們將通過依次按下開始選單/程序/ Windows 2000支持工具/工具/行程瀏覽器來啟動行程檢視工具。初始顯示區域是一個系統上的行程列表。請注意,有一種方法能夠對遠端工作站或伺服器名稱進行選項。


與使用工作管理器檢視行程不同,只要你擁有對遠端工作站或伺服器上註冊表的訪問許可,你就能夠檢視遠端行程列表。這是因為,多數工具所顯示的基本行程和線程資訊實際上是通過執行註冊表查詢得以從系統恢復到NT效能記數器上的。

現在,據我們所知,行程檢視工具必須使用效能記數器機制的原因之一是,根據總分數檢視列表中的第一個行程。


那並不是一個真正的行程,也沒有在工作管理器列表中予以披露,但如果你曾經使用過效能監視器的話,你會看到多數包含多重實例(例如行程對像)的效能計數器均擁有一個叫做劃線總額的特殊內建實例名稱,這裡的劃線總額就是一個被選項與效能監視器配合使用從而在所有對象實例範圍內快速匯總計數器數值的實例。


若你想對多種對象的一個或多個計數器進行快速匯總,行程檢視則可謂是效能計數器機制中一個非常便利的特性。



Pviewer的智能程度尚不足以顯示這一點。它以行程的方式來顯示。但它並不是一個行程。列表中第一個真正的行程是CMD。


現在,請注意這些按可執行程式文件名的字母順序來對行程進行排序的地方。CMD是按字母順序排列的第一個可執行程序的檔案名。


別忘了,工作管理器是按行程ID進行排序的。工作管理器以十進制數來顯示行程ID,而Pviewer則在映射名稱後以十六進制數顯示行程ID。

  在優先時間與用戶時間之間存在著明顯的區分,這就提供了有關與在操作系統內部相比,每個行程在應用程式中耗費多少時間的指示。


在講座的以後部分,我們還將回頭來看優先權與用戶時間的對比,但應記住,Pviewer是使你能夠更密切關注行程所佔用的CPU時間從而掌握在應用程式與操作系統之間的時間耗用區別的工具之一。

現在,當我按下從行程到行程,並將行程列表向下滾動時,在底部的顯示區域中什麼發生了變化?那就是線程列表。因為,如果你還對我們前面所作的描述有印象的話,該知道每個行程都包括一套線程。


這些線程對每個行程來說都是專用的。顯然,每個行程中的線程列表均應與下一個行程中的線程列表有所區別。


如果我選定一個線程並點擊它,進而將線程列表向下滾動,請注意在顯示區域的最底端發生了什麼改變。

  Pviewer顯示區域的最底端給出了包括優先級數值(從1到30之間)在內的每個線程的資訊。


上下文切換的次數也就是NT選項執行該線程的次數。現在,這兒有個線程看上去有點特別。它已被選執行了58次,但其僅佔用了1%秒的CPU時間。


你還記得這種背離現象的原因嗎?在以10毫秒為一週期的時鐘間隔被激發時,該線程肯定未處於當前狀態。


還有一個例子,在服務主機中的行程5看上去根本沒有執行過,但請大家看一看其上下文切換次數——76次。該線程被選項執行了76次。

它實際上執行了76次。但它在以10毫秒為一週期的時鐘間隔被激發時從未處於當前狀態。因此,如果我們向上回到行程列表處,可看到該行程總共耗用的CPU時間僅為0.871秒,這一數值顯然沒有反映出該行程中所有線程在執行時所耗用的CPU時間總和。



現在,請記住,我們將不會丟失CPU週期。NT也不會丟失CPU週期的軌跡。


它只是以10毫秒的增量來計量各線程的CPU佔用時間,因此,線程有時是被誤計時的,但隨著時間的推移,這種誤差會被抵銷,而不會成為真正的問題。


 再就是行程檢視工具。關於該工具的另一個說明是,如果你偶爾通過選定一個不同的電腦名稱並按下連接鈕來它檢視遠端系統的話,一個按鈕就會消失。你會因此失去一部分功能,消失的按鈕就是殺死行程按鈕。


殺死行程功能消失的原因是……你們還記得Pviewer是如何在行程列表中得以檢索的嗎?是通過註冊表。當我通過註冊表檢視遠端行程列表時,我能夠從遠端查詢該註冊表,並讀取行程列表,但註冊表並非一種控制機制。


我並不能通過註冊表殺死一個行程。因此,如果你想殺死另一台電腦上的行程,有兩個工具可以辦得到。一個是Windows 2000資源工具包中的殺死行程指令碼——kill.bbs。


它使用Windows 2000中新的WMI(亦即Windows管理規範)來訪問那些遠端行程控制操作,以前通過網路不能這樣使用。

另一個工具是資源工具包中稱作遠端殺死(remote kill)的客戶伺服器應用程式,該工具需要在你想要控制行程的遠端伺服器系統上安裝伺服器端程序。


無論是通過kill.bbs還是遠端殺死客戶伺服器應用程式,你都可以殺死一個行程。這兩個工具均存在於Windows 2000資源工具包中。

  現在,我們已使用兩個工具檢視了行程列表,而該列表則表現為平面結構。列表中沒有顯示父子關係,但事實上,當我們轉入下一張幻燈片後,我們會看到NT保留了關於哪個行程新增了哪個行程的有關資訊。


換言之,誰是父親?誰是兒子?該層次結構通過Windows 2000支持工具包中一個稱作Tlist的工具顯示出來。


現在,Tlist代表工作列表,但它也真的顯示出行程列表。事實上,工作這個術語並不一定就意味著存在於NT內核中的一切。


我將彈出指令行方式,並在該方式中鍵入TList/t。

Tlist所做的就是產生一個關於每個行程來自何處的父子關係展示,它通過使用簡單的縮排格式來顯示誰是父親、誰是兒子。然而,Tlist充其量也只能與NT所記錄的資訊具有同等智能。

我們回到幻燈片上,會注意到如果父行程已死,Tlist則將該行程向左對齊。這是因為NT只記錄了父行程的ID。


如果你的父親已不在世,就無法追溯出你的祖父是誰。


當Tlist發現一個子行程的父行程已不再執行時,就會將該行程向左對齊,並以此指明該行程是個孤兒。現在,當看到一個沒有父行程的子行程時,就沒有什麼可值得稀奇的了。當你註銷時,你的交互會話中的所有行程都會刪除。

  NT並不會因父行程消失而同時失去子行程。

回來看Tlist/t的輸出,我們會看到,在我的系統上,explore.exe剛才就是一個孤兒,它沒有父行程,其原因就在於當你登入網路時,登入行程就會執行一個進而使用Explore的程序,而這個中介程序會在它完成使命時退出。


Explore的全部子行程代表了今天我開始講座以來執行的所有程式。例如,我從Internet Explorer實例開始。我執行了指令行方式。


從指令行方式中,我又執行了PowerPoint和Tlist,而此時我也正通過執行Tlist來產生顯示區域。


就在展示上一張幻燈片時,我們還從開始按鈕執行了行程檢視工具,而開始按鈕又由Explorer所擁有。


TList/t是一個重要的診測工具,因為,通過掌握某一行程的父行程或觀察該行程在系統行程層次(或樹型)結構中所處的位置,你能夠迅速對該行程的來源進行分類。如果這個行程是Explorer的一個子行程,則該行程必然是從桌面圖形用戶界面開始執行的。


如果這個行程是某一系統行程的子行程,則該行程必然是NT的某一片段。我們將在下下節中詳細解剖系統行程樹中的所有行程。因此,我們將先行回到顯示區域的上半部分。

  Windows 2000工作管理器中的新選項是結束行程樹。


但是,關於我前面所說的Windows NT沒有保留比父行程ID更多的資訊,那麼,如果你試突結束行程工作樹並且來自樹中的所有行程均不再執行的話,將會有什麼發生呢?
工作管理器將會發現來自同一父行程的所有子行程嗎?
讓我們進行一個快速演示。


我將轉到指令行方式,並通過鍵入CMD從該指令行方式中啟動另一作為子行程的指令行方式。


現在,我們將從第二個行程中執行畫筆(亦即MS Paint)。這樣一來,我們就有了一個樹結構——一個指令行方式新增了另一個指令行方式,而另一個指令行方式新增了畫筆(亦即MS Paint)。讓我們通過執行Tlist/t來看一看該樹狀結構是如何顯示的。



這裡,我們看到了父指令行方式、子指令行方式以及作為孫子的MS Paint。


而問題是究竟發生了什麼,首先,如果我退出這個編號為712的中介指令行方式,將會有什麼發生呢?
好的,讓我們轉到該中介指令行方式並鍵入EXIT,會留下什麼呢?畫筆仍然存在。


因此,當父行程退出時,子行程並不也隨之退出。

這就出現了一個有趣的問題。如果我們現在通過按下Ctrl+Shift+Esc組合鍵彈出工作管理器,轉至應用程式選擇項,選第一個指令行方式,按下滑鼠右鍵,轉入行程,進而找到擁有視窗的行程,這就是指令行方式的實例——CMB.exe,亦即擁有第一個視窗的行程。


現在,如果我在行程樹上按下滑鼠右鍵,Windows 2000會發現畫筆嗎?請記住,畫筆是該指令行方式的孫子。讓我們來試一試,按下行程樹。工作管理器警告我說,終止一個行程可能引起資料遺失——這是因為並不存在清除線程的機會。



於是我接著做下去,按下是。畫筆仍舊執行。為什麼?再次解釋一下,這是因為NT只保留新增行程者的蹤跡,卻並不保留祖父或孫子的蹤跡。所以,請記住,你正在使用新的結束行程樹選項。

  現在,讓我們看一下行程活動中另一個重要的資訊片段,也就是哪個文件被哪個行程開啟。Windows 2000或Windows NT中並未附帶相應的工具來實現上述功能,然而這又的確是一項非常重要的診測工作,因為,如果你遇到一個文件鎖死錯誤,該檔案肯定是被本機工作站或伺服器上的某一行程所開啟。


不使用這張幻燈片上提及的工具,你就無法找出是誰開啟了文件。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2004-07-01, 09:49 AM   #3 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

Win 2000下的行程枚舉
行程在每個系統中實現的方法是不一樣的,在 win 98 中,系統提供 TOOLHELP32 API 接頭,在 win NT 中,系統提供 PSAPI 函數, 2000而 win 2000 既支持 TOOLHELP 又支持 PSAPI,NT 系統還提供了 NATIVE API (NtQuerySystemInformation),這個函數功能十分強大,幾乎可以查詢所有的系統資訊,使用此函數必須有SE_TCB_NAME特權。下面給出函數原型:
NTSTATUS
WINAPI
NtQuerySystemInformation(
int SystemInfoClass
PVOID SystemInfoBuffer,
ULONG SystemInfoBufferSize,
PULONG BytesReturned
);

  當 SystemInfoClass 等於5時便可獲取行程資訊了。

  關於 NT 系統下的特權(Privilege)及其描述見下表:

Privilege Constant Description
SE_ASSIGNPRIMARYTOKEN_NAME Required to assign the primary token of a process.
SE_AUDIT_NAME Required to generate audit-log entries. Give this privilege to secure servers.
SE_BACKUP_NAME Required to perform backup operations.
SE_CHANGE_NOTIFY_NAME Required to receive notifications of changes to files or directories. This privilege also causes the system to skip all traversal access checks. It is enabled by default for all users.
SE_CREATE_PAGEFILE_NAME Required to create a paging file.
SE_CREATE_PERMANENT_NAME Required to create a permanent object.
SE_CREATE_TOKEN_NAME Required to create a primary token.
SE_DEBUG_NAME Required to debug a process.
SE_INC_BASE_PRIORITY_NAME Required to increase the base priority of a process.
SE_INCREASE_QUOTA_NAME Required to increase the quota assigned to a process.
SE_LOAD_DRIVER_NAME Required to load or unload a device driver.
SE_LOCK_MEMORY_NAME Required to lock physical pages in memory.
SE_PROF_SINGLE_PROCESS_NAME Required to gather profiling information for a single process.
SE_REMOTE_SHUTDOWN_NAME Required to shut down a system using a network request.
SE_RESTORE_NAME Required to perform restore operations. This privilege enables you to set any valid user or group SID as the owner of an object.
SE_SECURITY_NAME Required to perform a number of security-related functions, such as controlling and viewing audit messages. This privilege identifies its holder as a security operator.
SE_SHUTDOWN_NAME Required to shut down a local system.
SE_SYSTEM_ENVIRONMENT_NAME Required to modify the nonvolatile RAM of systems that use this type of memory to store configuration information.
SE_SYSTEM_PROFILE_NAME Required to gather profiling information for the entire system.
SE_SYSTEMTIME_NAME Required to modify the system time.
SE_TAKE_OWNERSHIP_NAME Required to take ownership of an object without being granted discretionary access. This privilege allows the owner value to be set only to those values that the holder may legitimately assign as the owner of an object.
SE_TCB_NAME This privilege identifies its holder as part of the trusted computer base. Some trusted protected subsystems are granted this privilege. This privilege is required to call the LogonUser function.
SE_UNSOLICITED_INPUT_NAME Required to read unsolicited input from a terminal device.
SE_MACHINE_ACCOUNT_NAME Required to create a machine account.


於定義可見下表,或察看 WINNT.H:

SE_CREATE_TOKEN_NAME SeCreateTokenPrivilege
SE_ASSIGNPRIMARYTOKEN_NAME SeAssignPrimaryTokenPrivilege
SE_LOCK_MEMORY_NAME SeLockMemoryPrivilege
SE_INCREASE_QUOTA_NAME SeIncreaseQuotaPrivilege
SE_UNSOLICITED_INPUT_NAME SeUnsolicitedInputPrivilege
SE_MACHINE_ACCOUNT_NAME SeMachineAccountPrivilege
SE_TCB_NAME SeTcbPrivilege
SE_SECURITY_NAME SeSecurityPrivilege
SE_TAKE_OWNERSHIP_NAME SeTakeOwnershipPrivilege
SE_LOAD_DRIVER_NAME SeLoadDriverPrivilege
SE_SYSTEM_PROFILE_NAME SeSystemProfilePrivilege
SE_SYSTEMTIME_NAME SeSystemtimePrivilege
SE_PROF_SINGLE_PROCESS_NAME SeProfileSingleProcessPrivilege
SE_INC_BASE_PRIORITY_NAME SeIncreaseBasePriorityPrivilege
SE_CREATE_PAGEFILE_NAME SeCreatePagefilePrivilege
SE_CREATE_PERMANENT_NAME SeCreatePermanentPrivilege
SE_BACKUP_NAME SeBackupPrivilege
SE_RESTORE_NAME SeRestorePrivilege
SE_SHUTDOWN_NAME SeShutdownPrivilege
SE_DEBUG_NAME SeDebugPrivilege
SE_AUDIT_NAME SeAuditPrivilege
SE_SYSTEM_ENVIRONMENT_NAME SeSystemEnvironmentPrivilege
SE_CHANGE_NOTIFY_NAME SeChangeNotifyPrivilege
SE_REMOTE_SHUTDOWN_NAME SeRemoteShutdownPrivilege

ADMINISTRATOR 被預設授於以下這16個權限:

SeChangeNotifyPrivilege
SeSecurityPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeSystemtimePrivilege
SeShutdownPrivilege
SeRemoteShutdownPrivilege
SeTakeOwnershipPrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeSystemProfilePrivilege
SeProfileSingleProcessPrivilege
SeIncreaseBasePriorityPrivilege
SeLoadDriverPrivilege
SeCreatePagefilePrivilege
SeIncreaseQuotaPrivilege

可以用 OpenProcessToken 和 AdjustTokenPrivileges 這兩個函數來提升行程的特權。

  講了那麼多,現在回到主旨上來。到底使用哪個方法比較好呢?在 win 2000 下有3個方法可供選項,我比較喜歡簡單的方法。NtQuerySystemInformation 功能固然強大,但使用比較麻煩。而 win 2000 的 TOOLHELP32 API 其本質還是使用了 NtQuerySystemInformation 函數,由於它發生錯誤時,可能不能正確返回返回值,所以不是很穩定,使用起來也是很麻煩的,不符合我的懶人本性。還是採用 PSAPI 比較好,簡單又方便,只需要三個函數,且沒有複雜的結構體參數。

  函數原型:

BOOL
WINAPI
EnumProcesses(
DWORD * lpidProcess,//游標指向存放行程ID的陣列
DWORD cb, //陣列大小
DWORD * cbNeeded //返回的實際大小
);

BOOL
WINAPI
EnumProcessModules(
HANDLE hProcess, //行程句柄
HMODULE *lphModule, //游標指向存放模組句柄的陣列
DWORD cb, //陣列大小
LPDWORD lpcbNeeded //返回的實際大小
);

DWORD
WINAPI
GetModuleFileNameEx(
HANDLE hProcess, //行程句柄
HMODULE hModule, //模組句柄
LPSTR lpFilename, //存放模組檔案名的字串串
DWORD nSize //字串串大小
);


 他們的作用分別是:枚舉行程,枚舉行程模組,獲取模組檔案名(包含路徑)。詳細的來源碼如下:

// EnumProcess.cpp : Defines the entry point for the console application.
// Code By : tabris17

#include "stdafx.h"
#include "Psapi.h"

#pragma comment (lib,"Psapi.lib")

void PrintFileName(DWORD processID)
{
char fn[MAX_PATH];
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,processID);
if (hProcess)
{
HMODULE hMod[1024];
DWORD cbNeeded,size;
unsigned int i;
if (EnumProcessModules(hProcess,hMod,sizeof(hMod),&cbNeeded))
{
size=cbNeeded/sizeof(HMODULE);
GetModuleFileNameEx(hProcess,hMod[0],fn,sizeof(fn));
printf("\n(%u)\t%s\n",processID,fn);
for(i=1;i<size;i++)
{
GetModuleFileNameEx(hProcess,hMod[i],fn,sizeof(fn));
printf("\t%s\n",fn);
}
}
}
CloseHandle(hProcess);
}

int plist()
{
DWORD Processesid[1024], cbNeeded,size;
unsigned int i;
if (!EnumProcesses(Processesid,sizeof(Processesid),&cbNeeded))
return 0;

size=cbNeeded/sizeof(DWORD);

for (i=0;i<size;i++)
PrintFileName(Processesid[i]);
return 0;
}

int main(int argc, char* argv[])
{
plist();
return 0;
}
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2004-07-01, 09:50 AM   #4 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

Win 2000常用系統行程列表
Windows 2000/XP 的工作管理器是一個非常有用的工具,它能提供我們很多資訊,比如現在系統中執行的程序(行程),但是面對那些文件可執行檔案名我 們可能有點茫然,不知道它們是做什麼的,會不會有可疑行程(病毒,木馬等)。本文的目的就是提供一些常用的Windows 2000 中的行程名,並簡單說明它們的用處。

礎bWindows 2000 中,系統包含以下預設行程:
鮪srss.exe
鴻xplorer.exe
點nternat.exe
黛sass.exe
鼾stask.exe
壘mss.exe
壘poolsv.exe
壘vchost.exe
壘ervices.exe
壘ystem
壘ystem Idle Process
嬸askmgr.exe
戳inlogon.exe
戳inmgmt.exe

瞻U面列出更多的行程和它們的簡要說明

礎瘚{名織y述

瀏mss.exe壘ession鼾anager
檬srss.exe 瞻l系統伺服器行程
燸inlogon.exe繙瑊z用戶登入
瀏ervices.exe瞼]含很多系統服務
殯sass.exe 繙瑊z IP 安全原則以及啟動 ISAKMP/Oakley (IKE) 和 IP 安全驅動程式。
瀏vchost.exe Windows 2000/XP 的文件保護系統
壘POOLSV.EXE 簣N文件載入到記憶體中以便遲後列印。)
檻xplorer.exe臍仵袬`管
檯nternat.exe礎娃L區的拼音圖示)
瀉stask.exe瞻像\程序在指定時間執行。
瀑egsvc.exe瞻像\遠端註冊表操作。(系統服務)->remoteregister
燸inmgmt.exe 織ㄗ悃t統管理資訊(系統服務)。
檯netinfo.exe瀉sftpsvc,w3svc,iisadmn
燻lntsvr.exe 燻lnrsvr
燻ftpd.exe 繒窶{ TFTP Internet 標準。該標準不要求用戶名和密碼。
燻ermsrv.exe 燻ermservice
櫃ns.exe 礎^應對域名系統(DNS)名稱的查詢和更新請求。
燻cpsvcs.exe 織ㄗ悁b PXE 可遠端啟動客戶電腦上遠端安裝 Windows 2000 Professional 的能力。
檯smserv.exe 瞻像\在 Windows Advanced Server 站點間傳送和接收消息。
燼ps.exe 繙瑊z連線到電腦的不間斷電源(UPS)。
燸ins.exe竅做虪U和解析 NetBIOS 型名稱的 TCP/IP 客戶提供 NetBIOS 名稱服務。
殯lssrv.exe藏珖扆O錄服務
瀋tfrs.exe 礎b多個伺服器間維護文件目錄內容的文件同步。
壙sSub.exe 簣惆謋峔蚖滓暌x存資料的媒體。
殯ocator.exe 繙瑊z RPC 名稱服務資料庫。
殯server.exe 繕虪U客戶端許可證。
櫃fssvc.exe繙瑊z分佈於區域網路或廣域網的邏輯磁碟區。
檬lipsrv.exe 瞻銕龤u剪貼簿檢視器」,以便可以從遠端剪貼簿查閱剪貼頁面。
瀉sdtc.exe 穡疆C事務,是分佈於兩個以上的資料庫,消息貯列,文件系統或其它事務保護護檔案總管。
檸axsvc.exe罈〝 您傳送和接收傳真。
檬isvc.exe 簪薑猼A務
櫃madmin.exe 繙牁瑎瑊z請求的系統管理服務。
瀉nmsrvc.exe 瞻像\有權限的用戶使用 NetMeeting 遠端訪問 Windows 桌面。
瀋etdde.exe織ㄗ扆妧A資料交換 (DDE) 的網路傳輸和安全特性。
瀏mlogsvc.exe簞t置效能日誌和警報。
瀑svp.exe竅馬抰鄎~質服務(QoS)的程序和控制應用程式提供網路信號和本機通信控制安裝功功能。
壙sEng.exe 穡顙洏峔蚗x存不常用資料的服務和系統管理工具。
壙sFsa.exe 繙瑊z遠端儲存的文件的操作。
櫂rovel.exe簣蝶佴s制作備份存儲(SIS)捲上的重複文件,並且將重複文件指向一個資料存儲點,以節省磁牒空間(只對 NTFS 文件系統有用)。
壘CardSvr.ex 繒鼢﹞J在電腦智能卡閱讀器中的智能卡進行管理和訪問控制。
瀏nmp.exe瞼]含代理程序可以監視網路設備的活動並且向網路控制台工作站匯報。
瀏nmptrap.exe簣策洛悒遝魕弇滓 SNMP 代理程序產生的陷阱(trap)消息,然後將消息傳遞到執行在這台電腦上 SNMP 管理程序。
彝tilMan.exe 簣q一個視窗中啟動和配置協助工具。
瀉siexec.exe穡抩 .MSI 文件中包含的指令來安裝、修復以及刪除軟體。

臏`結: 發現可疑行程的秘訣就是要多看工作管理器中的行程列表,看多了以後,一眼就可以發現可可疑行程,就像找一群熟悉人中的陌生人一樣。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
MICROSOFT.WINDOWS.2000.AND.NT4.SOURCE.CODE-SCENELEADER psac 作業系統操作技術文件 2 2004-02-13 10:36 PM
NT4 intranet問題兩則! m6335097 一般電腦疑難討論區 2 2003-05-19 11:22 PM
Nt4.0下的附屬應用程式 Dian 軟體應用問題討論區 0 2003-05-19 06:10 PM


所有時間均為台北時間。現在的時間是 10:51 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1