Windowsでは、Windows Updateの直後やアプリケーションなどのインストール後に再起動が要求されることがある。以前に比べると、再起動にかかる時間は短縮されたものの、開いているプログラムを閉じてファイルを保存する必要があるなど、ちょっと面倒ではある。
なお、システムの再起動は、何もWindowsだけでなく、Linuxなど他のプラットフォームでも必要になることはある。とはいえ、ちょっとしたアプリケーションのインストールやアップデートの後に再起動が要求されるなど、頻度が高い気がしないでもない。今回は、この再起動について調べる。
Windows Updateが再起動を要求するとき
Windows Updateの場合、再起動が必要になるのは大きく2つの理由がある。1つはWindows自体の更新で、このときにWindowsのインストールイメージが作られて再起動。Windowsの再インストールが実行される。Windows 10の初期には、再インストール作業は、Windowsのインストーラー(setup.exe)同様、インストールイメージの作成などをWindowsの停止状態でしていた。
最近のWindowsでは、ほとんどの処理をWindowsが起動している間に済ませてしまう。具体的にはWindowsを停止している間に以下のことをする。まず、インストールイメージからWindows自体を更新する。そして、デバイスを探索して、ドライバ環境を構築する、などだ。そのためWindowsを停止している時間が短縮され、数分でWindowsを起動できるようになった。
Windows Updateによる再起動のあとに「デバイスのセットアップを完了しましょう」といったウェルカム画面が表示されるのは、Windowsが更新され、再インストールがされたことを示す。なお、このウェルカム画面は「設定」→「システム」→「通知ページ」の一番下にある「追加の設定」にある、「更新後およびサインイン時にWindowsのウェルカム エクスペリエンスを表示して新機能と提案を表示する」をオフにすると、表示されなくなる。
もう1つは、Windowsが起動している間は止めることができないプログラムの実行ファイルや、利用しているファイルなどを差し替える場合だ。こちらは、インストールイメージを作成することはなく、Windowsをシャットダウンして、目的のファイルを差し替えたら、すぐにWindowsを起動する。こうした理由で再起動をするものに.NET/.NET Framework関連のアップデートがある。
.NETや.NET Frameworkのアップデートでは、プログラム実行に利用するCLR(Common Language Runtime)や、標準のクラスなどが差し替わる。このとき、Windows側に.NETや.NET Frameworkで動作するプログラムがあれば止めることができない。そこでWindowsを再起動してファイルを差し替える。
Windowsには、こうした場合に利用するMoveFileEx APIやレジストリキーが用意されている。これらで可能な作業は、ファイルの削除もしくは移動(単純なリネームを含む)である。
Windowsは実行ファイルをロックする
実行ファイルの更新に、再起動して削除などの面倒な作業が必要になるのは、Windowsでは、起動中の実行ファイルがロックされるからである。以下の画面は、作成したプログラム(testProg.exe)起動しているときに実行ファイルを削除しようとしたもの。アクセスが拒否され、削除できない。
しかし、プログラムを終了させると、実行ファイルの削除ができる。
Windows 2.xは、8086 CPUでも動作するため、仮想記憶を利用できないが、メモリ中のコードブロックを廃棄可能とすることで、メモリ領域を空けることができた。廃棄されたコードブロックは、必要になったときに実行ファイルから読み直される。このため、プログラムの実行中は実行ファイルを残しておかねばならない。
Windows 11での明確なドキュメントを見つけることはできなかったが、こうした仕組みが今でも残っている可能性はある。仮想記憶が使える現在でも、コードブロックをスワップアウトする時間を短縮でき、スワップ領域の利用率を下げることができる。Windowsには実行ファイルをロックしなければならない何らかの事情があることだけは確かだ。
なおLinuxでは、実行ファイルはプログラムを起動してもロックされず、実行ファイルを削除することができる。これは偶然の産物ではない。そのための仕組みがあり、削除されるのはファイル自体ではなく、ディレクトリ内のファイルエントリだけのようだ。この機能のおかげで、カーネルやシステム側のファイルを起動中に差し替えることが可能になる。
とはいえ、まったく再起動が不要というわけでもない。ファイルを差し替えることができても、該当のプログラムを実行させるには、既存のプロセスを停止して、新しい実行ファイルを起動する必要がある。たとえば、カーネルはプロセスとして常に動いている。これを差し替えるには、一回停止する必要がある。Linuxカーネルを停止することは、システムの停止を意味する。通常、カーネルを差し替えたあとは、再起動処理をする。
Linuxカーネルを使うChromebookも稼働中にシステムファイルを書き換えることはできるが、更新されたOSを有効にするためには、再起動する必要がある。
それぞれ事情は異なるが、OSに属するファイルの更新、特にカーネルの更新では、何らかの再起動はつきものである、と言えるだろう。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第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の新機能を見る - この連載の一覧へ