タスクマネージャを見ていて「これ何だろう」と思ったので英語の文献をいろいろあさって、雑多ながら自分向けにまとめてみた。

○Svchost.exe
DLLファイル(プログラムをまとめたもの、ライブラリ)を実行するためのホストプログラム。
DLLファイルはEXEファイルとは違って単体で使うものではなく、他の様々なEXEファイルに使われるものである。
よってDLLファイルを単体で起動することはできない。

そのため、このDLLファイルをサービスとして使う時に「svchost.exe」をホスト(基底)として
DLLファイルをバックグラウンドで実行している。
でもプロセスの一覧ではDLLファイル本体の名前は表示されず、「svchost.exe」と表示されているだけ。
もしsvchost.exeを消したいのであれば、該当するサービスを終了させるのが最も良い方法。

「svchost.exe」自体はWindows OSのファイルである。

コマンドプロンプトでtasklist /svc /fi "imagename eq svchost.exe"を実行すると、svchost.exeがどんなサービスを動かしているのか確認できる。
これをタスクマネージャから確認できれば便利だし誤解もないのにねぇ・・・
以下出力例:
C:\Users\Username\>tasklist /svc /fi "imagename eq svchost.exe"

イメージ名                     PID サービス
========================= ======== ============================================
svchost.exe                    940 DcomLaunch, PlugPlay
svchost.exe                   1016 RpcSs
svchost.exe                   1064 WinDefend
svchost.exe                   1160 Audiosrv, Dhcp, Eventlog, lmhosts, WPCSvc,
                                   wscsvc
svchost.exe                   1196 AudioEndpointBuilder, EMDMgmt, hidserv,
                                   Netman, PcaSvc, SysMain,
                                   TabletInputService, TrkWks, UxSms,
                                   WdiSystemHost, Wlansvc, WPDBusEnum, wudfsvc
svchost.exe                   1208 AeLookupSvc, BITS, Browser, CertPropSvc,
                                   EapHost, IKEEXT, iphlpsvc, LanmanServer,
                                   MMCSS, ProfSvc, RasMan, Schedule, seclogon,
                                   SENS, SessionEnv, ShellHWDetection, Themes,
                                   Winmgmt, wuauserv
svchost.exe                   1368 gpsvc
svchost.exe                   1448 EventSystem, fdPHost, FDResPub,
                                   LanmanWorkstation, netprofm, nsi, SSDPSRV,
                                   SstpSvc, upnphost, W32Time, wcncsvc,
                                   WebClient
svchost.exe                   1572 CryptSvc, Dnscache, KtmRm, NlaSvc, TapiSrv,
                                   TermService
svchost.exe                    480 BFE, DPS, MpsSvc
svchost.exe                   2248 PolicyAgent
svchost.exe                   2312 stisvc
svchost.exe                   2580 WerSvc

これを見るとほとんどがセキュリティ関連かネットワーク関連のサービスであり、安易にこれらのサービスを停止するのはよくない。


○System Idle Process
簡単に言っちゃえば、これは特殊なタスクでWindowsの機能の一部であり、
CPUに「お前にやる仕事はないからちょっと休め(Idle状態になれ)」という命令(HLT)を送るもの。
System Idle ProcessのCPU利用率が高い=CPUが暇を持て余している
System Idle ProcessのCPU利用率が低い=CPUに負荷がかかっている
ということ。
端的にいえば(System Idle ProcessのCPU利用率=CPUのIdle状態率)

このようにタスクとして動作させることでWindows自体がCPUのIdle状態率を把握できる。
だから、100%からSystem Idle ProcessのCPU使用率(Idle状態率)を引くと、
真のCPU使用率となる。
(実際に、100からこのプロセスのCPU使用率を引くとCPUタブにあるCPU使用率とほぼ一致するはず)

もちろんこのタスクは常に最低優先度で実行しているので、
他のタスクが入ってくればそちらが優先される。
逆に、何も実行するタスクが無くなった時にSystem Idle ProcessタスクでHLT命令がCPUに送られる。

また、CPUに何も命令を送らず空ループさせるよりも、
こうしてHLT命令をひたすら送り続けた方がCPUの消費電力を抑えられるらしい。







わかりやすく書こうとしたら言葉のループになって逆に読みにくくなってしまった罠。

○更新
09/11/29 あるタグの閉じ忘れで大変なことになっていたので何気に修正。
かなり致命的なミスorz

comments powered by Disqus

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい.

(C) 2008-2017 akm. This blog theme is based on sakmug. Hosted by Xdomain