Windowsが「重い」と感じるとき、真っ先に起動するのがタスクマネージャーだろう。このタスクマネージャーは、Windows 10の機能アップデートやWindows Insider ProgramのDev Channelプレビュー版で地道に改良が続けられてきた。Windows 11では、ついにタスクマネージャーでEdgeのプロセスを役割ごとに表示できるようになった。
Edgeやそのベースが同じであるChromeは、多数のプロセスからなるプログラムだ。なぜそうしているかと言えば、1つはセキュリティを高めるために機能ごとにプロセスを分け、他のプロセスへの影響を抑える。たとえば、直接起動されるプログラム自体と、拡張機能やページ表示を行うレンダラーは、それぞれ別プロセスになっている。
もう1つの理由は、ウェブページ(タブ)ごとに別プロセスとして高速化やメモリ割り当てに自由度を持たせたいからだ。ウェブブラウザは、現在では最も利用頻度の高いプログラムであり、ごく最近までは“速い”ブラウザが良いとされてきた。そのためには、同じブラウザ内の複数の処理、たとえばネットワークからのダウンロード、ページの表示(レンダリング)、JavaScriptの実行など、さまざまな処理を別プロセス化して、並列に実行させている。
一般にOSのスケジューリングの単位には、プロセスとスレッドがあるが、プロセスはメモリなどのリソースの割り当て単位となる。これに対して、スレッドは親となるプロセスがリソース割り当てを管理する必要がある。実際には、ウェブブラウザは、複数のプロセスから構成され、さらにその内部にスレッドが複数(かなり多い。タブ1つで合計100以上になることも)ある。
Edgeの内部プロセスには、以下の表のようなものがある。Windows 11のタスクマネージャーはこれを表示できる。ただし、これ自体はWindows 10でも、Edgeの「ハンバーガーメニュー」→「その他のツール」→「ブラウザータスクマネージャー」から見ることが可能だ。Windows 11のタスクマネージャーは、これも表示できるようになった。
表記 | プロセスの種類 | 役割 |
---|---|---|
フラウザー | Browser | ブラウザウィンドウやメニュー、ボタンなどの制御 |
レンダラー/タブ | Renderer | ウェブページの表示(HTML/CSS/JavaScript) |
GPU プロセス | GPU | グラフィックス処理のためにGPUを利用するためのプロセス |
ユーティリティ | Utility | オーディオ、ネットワークなどの処理 |
拡張機能 | Plug-in/extension | プラグインや拡張のプロセス |
クラシュパッド | Crashpad handler | Edgeのプロセスを追跡しクラッシュを報告 |
Windowsの歴史を通じて
地道な改良が続いているタスクマネージャー
Windowsにおけるタスクマネージャーは、Windows NT 4.0が最初だが、それ以前は実行中のプログラムを表示・停止などが指定できる 「Task List」(Windows 3.0)や「Close Program」(Windows 95)といった名前の機能だった。
現在のように複数のタブを持ち、プロセスだけでなく、パフォーマンスなどの表示も可能になったのはWindows 2000から。これが現在のタスクマネージャーの原型と言える。
当初は「Application」「Processes」「Performance」の3つのタブしかなかった。「Application」は、ウィンドウを持つプログラム用で当初はユーザーから見えるプログラムだけを対象にしていた。Windows 2000では、すべてのプロセスが見えるようになり、選択してプロセスを停止させることができるようになった。
それから歴史を重ねてWindows 10になり、基本的な構成は「Process」(日本語表記はプロセス)、「Performance」(パフォーマンス)、「App history」(アプリの履歴)、「Startup」(スタートアップ)、「Users」(ユーザー)、「Details」(詳細)、「Services」(サービス)となったが、「Startup」「Users」「Services」は、もともとMMC(Microsoft Management Console)などで提供していた機能を取り込んだもの。
現在「Process」となっているものは、すべてのプロセスをカテゴリに分け、リソースの消費状況などをメインに表示する。これに対して「Details」もすべてのプロセスを表示するが、こちらのほうはプロセス自体の情報をより細かく見ることができる。
Windows 10での変更は、このProcessとPerformanceタブに集中している。たとえば、電力関連のスロットリング(電力制御)や消費電力、外部記憶のデバイス種別や、GPUのパフォーマンスや温度などが表示可能になった。Windows 10で高解像度表示機能が強化されたことにより、プロセスごとに高解像度対応であるかがわかるようになった。そのほか、プロセスをグループ化して表示できるようになったものWindows 10からである。
不思議なことにWindowsでは、プロセス間に「親子」関係を認めていなかった。しかし、多くのOSの手本となったUnixでは、プロセスには明確な親子関係がある。Windows 10のいつ頃からか、Microsoftのドキュメントにプロセスの親子関係を認める表記が入り出し、現在ではCreateProcess関数にもその文言が入っている。
●“CreateProcess 関数は、作成プロセスとは別に実行される新しいプロセスを作成します。 ただし、わかりやすくするために、リレーションシップは親子リレーションシップと呼ばれます。”
https://docs.microsoft.com/ja-jp/windows/win32/procthread/creating-processes
タスクマネージャーがプロセスのグループ表示を可能にしたのは、UWPでプログラムを起動するRuntime Brokerがアプリごとに分離されたWindows 10 Ver.1709のときである。このときから、デスクトップアプリケーションもプロセスが親子関係でグループ化されて表示されるようになった。
また、Windows 10 Ver.1903(19H1)では、既定のタブを設定できるようになった。従来のタスクマネージャーは起動すると必ず「Processes」タブを開いていたが、このバージョンから既定のタブを指定でき、起動時にはそのタブを表示できるようになった。実際の使い方としては、CPUやネットワークのグラフを見たいケースが多いだろう。
Windows 11ではARM版の存在もあり、「Details」タブで実行中プログラムのアーキテクチャーが表示できるようになった。そしてWindows 10時代のWindows Insider ProgramのDev ChannelのBuild 21364でEdgeのプロセス表示が可能になり、これがWindows 11に正式に入った。
もっともこのEdgeのプロセス表示は、タスクマネージャーがEdgeのプロセスだけを特別扱いして表示している。おそらく、Edgeのブラウザータスクマネージャーに相当する情報を得ているのだと思われる。
というのも、Windowsのプロセスには、プロセスの名称や機能を外部から特定する方法がなく、プロセスがどんな処理をするのかを知っているのは、それを起動する親プロセスと子プロセス自身だけだからだ。
なので、他のプロセス、たとえば同等の構造を持つChromeのプロセスはEdgeのように区別されず、単にChrome.exeという実行ファイルの名前が並ぶだけだ。また、プロセスの名称が表示されるのは、「Processes」タブだけで、「Details」タブでは、以前と同じようにすべてmsedge.exeとしか表示されない。
Windows 11でタスクマネージャーの実行ファイルである「C:\Windows\System32\taskmgr.exe」に含まれている文字列を表示させると、Processesタブに表示される、RenderやBrowser、Utilityといった文字列が含まれている。これは、Windows 10のtaskmgr.exeには含まれていない。
なお、Windowsでは、実行ファイルにはオリジナルの英語のみが含まれており、日本語対応などは、MUI(Multilingual User Interface)リソースファイルで別途定義されている。このため、日本語版であっても実行ファイル(Taskmgr.exe)から文字列を取り出すと英語のメッセージしか取り出すことができない。
もちろん機能一点張りのソフトウェアは面白くないし、レンダーやネットワークのプロセスが動いたり、メモリを使う様子を見るのはおもしろい。作った人たちは満足なのかもしれないが、いったい“誰得”な機能のように思える。もちろん、Edgeのプロセス構造をブログ解説したり、それをこうして可視化してくれることは好奇心を満足はさせてくれる。
とはいえ、これを「新機能」であるとか、ソフトウェアの“進化”のように言われても、なにか違うものを感じてしまう。しかし、そんなことよりも、Windows 11では、タスクバーの右クリックメニューからタスクマネージャーが起動できなくなったのが地味に痛かったりする。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ