前沿拓展:
熟悉的陌生朋友:svchost.exe
有時(shí)候,你可能會打開任務(wù)管理器,看看里面有什么進(jìn)程在跑,你會發(fā)現(xiàn),進(jìn)程列表中有很多svchost.exe。
為什么會有如此多的svchost.exe進(jìn)程呢?這個(gè)svchost.exe到底是什么呢?今天就來簡單解釋解釋。
設(shè)計(jì)原理和解釋
從傳統(tǒng)的系統(tǒng)設(shè)計(jì)角度來看,每一個(gè)Windows服務(wù)都會運(yùn)行在它所在的進(jìn)程中。這樣,當(dāng)你開發(fā)和測試你的服務(wù)的時(shí)候就十分簡單方便。
但是,如果你打開Windows的**器(命令行執(zhí)行services.msc),你會發(fā)現(xiàn),那里有很多服務(wù),其中主要是Windows的服務(wù),當(dāng)然也包含第三方應(yīng)用開發(fā)商開發(fā)的服務(wù)。如果每個(gè)服務(wù)都對應(yīng)一個(gè)進(jìn)程的話,則系統(tǒng)需要維護(hù)非常多的進(jìn)程。對于一個(gè)進(jìn)程來說,就算它什么實(shí)際的工作也不做,系統(tǒng)也需要為它分配各種資源來維護(hù)這個(gè)進(jìn)程。將每個(gè)服務(wù)都放到一個(gè)進(jìn)程中的設(shè)計(jì)方式實(shí)際上是一種資源的浪費(fèi),因?yàn)橛泻艽笠徊糠址?wù)僅僅是在某些時(shí)間點(diǎn)下被觸發(fā)執(zhí)行。例如Microsoft Windows電話TAPI服務(wù)(Tapisrv),它僅僅會在處理和調(diào)制解調(diào)器(modem)相關(guān)的**作時(shí)才會被觸發(fā)運(yùn)行。
考慮到性能方面的原因,我們將相關(guān)的服務(wù)編到一個(gè)組中,在這個(gè)組中,所有的服務(wù)都會運(yùn)行在一個(gè)叫做svchost的共享進(jìn)程中。
這意味著,如果你發(fā)現(xiàn)某一個(gè)svchost.exe有些不正常,你還是無法知道到底是里面的哪一個(gè)服務(wù)出了問題。在微軟的知識庫中,有一篇專門講解svchost的文章(how you can dig into each svchost to see which services are running inside it),它講述了如何通過研究svchost進(jìn)程來查看它承載了哪些服務(wù)。這還是很有用的,因?yàn)楫?dāng)svchost進(jìn)程異常的時(shí)候,你至少可以縮寫問題排查的范圍。
查看svchost中的服務(wù)的幾種方法
1. 通過任務(wù)管理器查看。
2. 執(zhí)行命令行指令:tasklist /svc /fi “imagename eq svchost.exe”
3. 通過Process Explorer工具來查看。
小編綜合來說
將多個(gè)服務(wù)跑在同一個(gè)進(jìn)程中,減少了系統(tǒng)資源消耗,提升了性能。但是,這種設(shè)計(jì)也不可避免地增加了開發(fā)和調(diào)試服務(wù)的難度。所以,正在開發(fā)Windows服務(wù)的你,還需要再慎重慎重。
拓展知識:
前沿拓展:
熟悉的陌生朋友:svchost.exe
有時(shí)候,你可能會打開任務(wù)管理器,看看里面有什么進(jìn)程在跑,你會發(fā)現(xiàn),進(jìn)程列表中有很多svchost.exe。
為什么會有如此多的svchost.exe進(jìn)程呢?這個(gè)svchost.exe到底是什么呢?今天就來簡單解釋解釋。
設(shè)計(jì)原理和解釋
從傳統(tǒng)的系統(tǒng)設(shè)計(jì)角度來看,每一個(gè)Windows服務(wù)都會運(yùn)行在它所在的進(jìn)程中。這樣,當(dāng)你開發(fā)和測試你的服務(wù)的時(shí)候就十分簡單方便。
但是,如果你打開Windows的**器(命令行執(zhí)行services.msc),你會發(fā)現(xiàn),那里有很多服務(wù),其中主要是Windows的服務(wù),當(dāng)然也包含第三方應(yīng)用開發(fā)商開發(fā)的服務(wù)。如果每個(gè)服務(wù)都對應(yīng)一個(gè)進(jìn)程的話,則系統(tǒng)需要維護(hù)非常多的進(jìn)程。對于一個(gè)進(jìn)程來說,就算它什么實(shí)際的工作也不做,系統(tǒng)也需要為它分配各種資源來維護(hù)這個(gè)進(jìn)程。將每個(gè)服務(wù)都放到一個(gè)進(jìn)程中的設(shè)計(jì)方式實(shí)際上是一種資源的浪費(fèi),因?yàn)橛泻艽笠徊糠址?wù)僅僅是在某些時(shí)間點(diǎn)下被觸發(fā)執(zhí)行。例如Microsoft Windows電話TAPI服務(wù)(Tapisrv),它僅僅會在處理和調(diào)制解調(diào)器(modem)相關(guān)的**作時(shí)才會被觸發(fā)運(yùn)行。
考慮到性能方面的原因,我們將相關(guān)的服務(wù)編到一個(gè)組中,在這個(gè)組中,所有的服務(wù)都會運(yùn)行在一個(gè)叫做svchost的共享進(jìn)程中。
這意味著,如果你發(fā)現(xiàn)某一個(gè)svchost.exe有些不正常,你還是無法知道到底是里面的哪一個(gè)服務(wù)出了問題。在微軟的知識庫中,有一篇專門講解svchost的文章(how you can dig into each svchost to see which services are running inside it),它講述了如何通過研究svchost進(jìn)程來查看它承載了哪些服務(wù)。這還是很有用的,因?yàn)楫?dāng)svchost進(jìn)程異常的時(shí)候,你至少可以縮寫問題排查的范圍。
查看svchost中的服務(wù)的幾種方法
1. 通過任務(wù)管理器查看。
2. 執(zhí)行命令行指令:tasklist /svc /fi “imagename eq svchost.exe”
3. 通過Process Explorer工具來查看。
小編綜合來說
將多個(gè)服務(wù)跑在同一個(gè)進(jìn)程中,減少了系統(tǒng)資源消耗,提升了性能。但是,這種設(shè)計(jì)也不可避免地增加了開發(fā)和調(diào)試服務(wù)的難度。所以,正在開發(fā)Windows服務(wù)的你,還需要再慎重慎重。
拓展知識:
前沿拓展:
熟悉的陌生朋友:svchost.exe
有時(shí)候,你可能會打開任務(wù)管理器,看看里面有什么進(jìn)程在跑,你會發(fā)現(xiàn),進(jìn)程列表中有很多svchost.exe。
為什么會有如此多的svchost.exe進(jìn)程呢?這個(gè)svchost.exe到底是什么呢?今天就來簡單解釋解釋。
設(shè)計(jì)原理和解釋
從傳統(tǒng)的系統(tǒng)設(shè)計(jì)角度來看,每一個(gè)Windows服務(wù)都會運(yùn)行在它所在的進(jìn)程中。這樣,當(dāng)你開發(fā)和測試你的服務(wù)的時(shí)候就十分簡單方便。
但是,如果你打開Windows的**器(命令行執(zhí)行services.msc),你會發(fā)現(xiàn),那里有很多服務(wù),其中主要是Windows的服務(wù),當(dāng)然也包含第三方應(yīng)用開發(fā)商開發(fā)的服務(wù)。如果每個(gè)服務(wù)都對應(yīng)一個(gè)進(jìn)程的話,則系統(tǒng)需要維護(hù)非常多的進(jìn)程。對于一個(gè)進(jìn)程來說,就算它什么實(shí)際的工作也不做,系統(tǒng)也需要為它分配各種資源來維護(hù)這個(gè)進(jìn)程。將每個(gè)服務(wù)都放到一個(gè)進(jìn)程中的設(shè)計(jì)方式實(shí)際上是一種資源的浪費(fèi),因?yàn)橛泻艽笠徊糠址?wù)僅僅是在某些時(shí)間點(diǎn)下被觸發(fā)執(zhí)行。例如Microsoft Windows電話TAPI服務(wù)(Tapisrv),它僅僅會在處理和調(diào)制解調(diào)器(modem)相關(guān)的**作時(shí)才會被觸發(fā)運(yùn)行。
考慮到性能方面的原因,我們將相關(guān)的服務(wù)編到一個(gè)組中,在這個(gè)組中,所有的服務(wù)都會運(yùn)行在一個(gè)叫做svchost的共享進(jìn)程中。
這意味著,如果你發(fā)現(xiàn)某一個(gè)svchost.exe有些不正常,你還是無法知道到底是里面的哪一個(gè)服務(wù)出了問題。在微軟的知識庫中,有一篇專門講解svchost的文章(how you can dig into each svchost to see which services are running inside it),它講述了如何通過研究svchost進(jìn)程來查看它承載了哪些服務(wù)。這還是很有用的,因?yàn)楫?dāng)svchost進(jìn)程異常的時(shí)候,你至少可以縮寫問題排查的范圍。
查看svchost中的服務(wù)的幾種方法
1. 通過任務(wù)管理器查看。
2. 執(zhí)行命令行指令:tasklist /svc /fi “imagename eq svchost.exe”
3. 通過Process Explorer工具來查看。
小編綜合來說
將多個(gè)服務(wù)跑在同一個(gè)進(jìn)程中,減少了系統(tǒng)資源消耗,提升了性能。但是,這種設(shè)計(jì)也不可避免地增加了開發(fā)和調(diào)試服務(wù)的難度。所以,正在開發(fā)Windows服務(wù)的你,還需要再慎重慎重。
拓展知識:
前沿拓展:
熟悉的陌生朋友:svchost.exe
有時(shí)候,你可能會打開任務(wù)管理器,看看里面有什么進(jìn)程在跑,你會發(fā)現(xiàn),進(jìn)程列表中有很多svchost.exe。
為什么會有如此多的svchost.exe進(jìn)程呢?這個(gè)svchost.exe到底是什么呢?今天就來簡單解釋解釋。
設(shè)計(jì)原理和解釋
從傳統(tǒng)的系統(tǒng)設(shè)計(jì)角度來看,每一個(gè)Windows服務(wù)都會運(yùn)行在它所在的進(jìn)程中。這樣,當(dāng)你開發(fā)和測試你的服務(wù)的時(shí)候就十分簡單方便。
但是,如果你打開Windows的**器(命令行執(zhí)行services.msc),你會發(fā)現(xiàn),那里有很多服務(wù),其中主要是Windows的服務(wù),當(dāng)然也包含第三方應(yīng)用開發(fā)商開發(fā)的服務(wù)。如果每個(gè)服務(wù)都對應(yīng)一個(gè)進(jìn)程的話,則系統(tǒng)需要維護(hù)非常多的進(jìn)程。對于一個(gè)進(jìn)程來說,就算它什么實(shí)際的工作也不做,系統(tǒng)也需要為它分配各種資源來維護(hù)這個(gè)進(jìn)程。將每個(gè)服務(wù)都放到一個(gè)進(jìn)程中的設(shè)計(jì)方式實(shí)際上是一種資源的浪費(fèi),因?yàn)橛泻艽笠徊糠址?wù)僅僅是在某些時(shí)間點(diǎn)下被觸發(fā)執(zhí)行。例如Microsoft Windows電話TAPI服務(wù)(Tapisrv),它僅僅會在處理和調(diào)制解調(diào)器(modem)相關(guān)的**作時(shí)才會被觸發(fā)運(yùn)行。
考慮到性能方面的原因,我們將相關(guān)的服務(wù)編到一個(gè)組中,在這個(gè)組中,所有的服務(wù)都會運(yùn)行在一個(gè)叫做svchost的共享進(jìn)程中。
這意味著,如果你發(fā)現(xiàn)某一個(gè)svchost.exe有些不正常,你還是無法知道到底是里面的哪一個(gè)服務(wù)出了問題。在微軟的知識庫中,有一篇專門講解svchost的文章(how you can dig into each svchost to see which services are running inside it),它講述了如何通過研究svchost進(jìn)程來查看它承載了哪些服務(wù)。這還是很有用的,因?yàn)楫?dāng)svchost進(jìn)程異常的時(shí)候,你至少可以縮寫問題排查的范圍。
查看svchost中的服務(wù)的幾種方法
1. 通過任務(wù)管理器查看。
2. 執(zhí)行命令行指令:tasklist /svc /fi “imagename eq svchost.exe”
3. 通過Process Explorer工具來查看。
小編綜合來說
將多個(gè)服務(wù)跑在同一個(gè)進(jìn)程中,減少了系統(tǒng)資源消耗,提升了性能。但是,這種設(shè)計(jì)也不可避免地增加了開發(fā)和調(diào)試服務(wù)的難度。所以,正在開發(fā)Windows服務(wù)的你,還需要再慎重慎重。
拓展知識:
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http:///23934.html