svchost はなぜ必要なのか

Windows において tasklist コマンドなどで一覧を表示すると svchost.exe が並んでいることに気が付くでしょう。
サービスホスト
これは何なのでしょうか?なぜ svchost という同じ名前のプロセスが並んでいるのでしょうか?

スポンサーリンク

svchost の役割

Windows に限らず OS はマルチタスクで動作しています。一見すべてのプロセスが同時に動いているようですが、細かい時間(タイムスライス)でCPUが割り当てた動作しています。
以下はCPUが1個の場合のイメージ図です。CPUがそれぞえのプロセスを順番に動作させています。これをコンテキストスイッチと呼びます。
コンテキストスイッチ
【図1】コンテキストスイッチ概要
実はこのコンテキストスイッチはとても負荷がかかる作業です。スイッチ後の状態を記憶する必要もあり、プロセスが増えるとともてOSの動作が重くなります。
Windows はサービスとしてプログラムが常駐していますが、サービスが一つのプロセスと対応するとそれだけで大量のプロセスが起動してしまいます。
以下のようにサービスA~GごとにプロセスA~Gと対応するとそれだけで大量のプロセスが動作してしまいます。
そこで考えられたのが svchost です。以下の通り、何個かのサービスをまとめて一つの svchost で実行します。これにより起動するプロセスの数を抑制しています。
svchostによるプロセス束ね
【図2】svchost によるサービスまとめ
参考:MicrosoftEdgeCP.exe、MicrosoftEdge.exe など Edge関連のプロセス

スポンサーリンク

[Windows 10 コラム]