このページの本文へ

前へ 1 2 次へ

Windows Info 第438回

Windowsはなぜ再起動が必要になるのか?

2024年06月30日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windowsでは、Windows Updateの直後やアプリケーションなどのインストール後に再起動が要求されることがある。以前に比べると、再起動にかかる時間は短縮されたものの、開いているプログラムを閉じてファイルを保存する必要があるなど、ちょっと面倒ではある。

Windowsの再起動

毎月の「累積的なアップデート」や、Windows Insiderのプレビュー版の更新では、再起動を要求される

 なお、システムの再起動は、何も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の再起動

testProg.exeは起動するとキーを待ち受けるだけのプログラム。起動中には実行ファイルがロックされて削除できない

 しかし、プログラムを終了させると、実行ファイルの削除ができる。

Windowsの再起動

プログラムが実行を終えると、削除できる。これは、Windowsが起動中の実行ファイルをロックしていることを意味する

 Windows 2.xは、8086 CPUでも動作するため、仮想記憶を利用できないが、メモリ中のコードブロックを廃棄可能とすることで、メモリ領域を空けることができた。廃棄されたコードブロックは、必要になったときに実行ファイルから読み直される。このため、プログラムの実行中は実行ファイルを残しておかねばならない。

 Windows 11での明確なドキュメントを見つけることはできなかったが、こうした仕組みが今でも残っている可能性はある。仮想記憶が使える現在でも、コードブロックをスワップアウトする時間を短縮でき、スワップ領域の利用率を下げることができる。Windowsには実行ファイルをロックしなければならない何らかの事情があることだけは確かだ。

 なおLinuxでは、実行ファイルはプログラムを起動してもロックされず、実行ファイルを削除することができる。これは偶然の産物ではない。そのための仕組みがあり、削除されるのはファイル自体ではなく、ディレクトリ内のファイルエントリだけのようだ。この機能のおかげで、カーネルやシステム側のファイルを起動中に差し替えることが可能になる。

 とはいえ、まったく再起動が不要というわけでもない。ファイルを差し替えることができても、該当のプログラムを実行させるには、既存のプロセスを停止して、新しい実行ファイルを起動する必要がある。たとえば、カーネルはプロセスとして常に動いている。これを差し替えるには、一回停止する必要がある。Linuxカーネルを停止することは、システムの停止を意味する。通常、カーネルを差し替えたあとは、再起動処理をする。

 Linuxカーネルを使うChromebookも稼働中にシステムファイルを書き換えることはできるが、更新されたOSを有効にするためには、再起動する必要がある。

 それぞれ事情は異なるが、OSに属するファイルの更新、特にカーネルの更新では、何らかの再起動はつきものである、と言えるだろう。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン