windows下的服務和進程有什麼區別?

在任務管理器下查看服務和進程。


就是公務員和公民的區別。


兩個範疇的概念。

「服務」是指系統自動完成的,不需要和用戶交互的程序,強調的是和那種用戶要點擊開用的「應用程序」的不同。「進程」是程序運行的實例,系統會給運行中的進程分配CPU,內存等資源。

一個「服務」或者「應用程序」不管有沒有被運行,它就在你的硬碟里,但當它真正被運行時,操作系統就會真正給它分配內存,CPU時間片等資源,這一次運行就對應著一個「進程」。也就是說,一個程序(「服務」和「應用程序」都是程序)如果沒有運行就不會有相應的進程,一個程序同時運行多個實例也就會對應多個進程。

另外題主提到windows的任務管理器,任務管理器里列出的「應用程序」都是正在運行的程序,所以它們都會有對應的「進程」,而它列出的「服務」則是所有的服務(包括並未運行的服務),所以不一定會有與之對應的進程存在。


服務可以在 winlogon desktop 級別(用戶登錄前)啟動,普通進程只能在 default desktop 級別(用戶登錄後)啟動。


服務是進程的一種。


沒有區別,主要是啟動的方式不一樣


A service is a true-blooded Windows process, no difference there. The only thing that"s special about a service is that it is started by the operating system and runs in a separate session. An isolated one that keeps it from interfering with the desktop session. Traditionally named a daemon.

  • What the difference between a Windows service and a Windows process?

  • How does a Windows service differ from a standard exe?

btw, why not search the answer first?


進程和服務處於不同的 Session。服務位於 Session 0,跟登錄的用戶無關;進程處於登錄用戶的Session。


聯繫

同意服務是進程的一種。

要想弄清楚這個問題,需要弄清楚進程的本質是什麼,進程的本質是運行時的程序。

而服務也是運行時的程序,就操作系統的原型而言,兩者是沒有區分的,即服務就是進程,符合進程的一些基本特徵。

區別

在實際的操作系統中,人們將進程進一步細化,比如說windows中就會有進程與服務,這就給人造成一種假象,好像進程與服務是不同的。

之所以如此,是因為分類角度的問題。

之前理論上認為運行時的程序叫做進程,從這個角度服務與進程本質是相同的。

但是windows中換了個角度,從其作用上進行了劃分。將靠近底層提供基礎功能的稱之為服務,將靠近頂層提供功能的稱之為進程。


進程會完成某項用戶指定的工作,它是面嚮應用的

有時候一些不確定的進程會需要調用相同的程序代碼,如果把這部分代碼交給操作系統,由操作系統提前載入內存,並進行維護和管理,那這些程序就是服務.服務是面向不確定的進程的

進程通常不會主動運行,而是等待其他不確定的進程調用,只是輔助其他進程完成進程的功能.通常不能獨立運行


啟動的姿勢不同,服務啟動的API是ServiceMain


錄像和監控的區別。


推薦閱讀:

iOS開發包含哪些內容?
哪些 C++ 項目的源代碼最值得閱讀?
編譯器中都有哪些演算法?
軟體崩潰(crash)之後的報告(report)究竟是個什麼流程?

TAG:MicrosoftWindows | 編程 | WindowsService |