ウェブブラウジングができるようになってある程度満足したのか、ゆかさんからの連絡は減っていた。 また連絡があったのは、随分たったある夕方のことだった。
「はい、お久しぶりです。調子はどうですか?」
『結構いい感じに使えてると思うんですけど、ときどき再起動しろって言われたり、再起動させられたりして困ってます』
「ん?アップデートのときですかね。」
『アップデートってなんですか?すごく困るんですけど…』
私の場合、基本的にラップトップであってもコンピュータは「使用終了したら停止する」という前提があるのだが、最近の人はそうでもないのでそこからだろう。 スマートフォンのアップタイムは恐ろしいことになっている人は多いし。
「まず、シャットダウン、ホールト、スリープの違いについてお話しましょう。まずゆかさんは普段パソコンの終了はどうやっていますか?」
『え、蓋を閉じています』
「なるほど。スリープについては2種類の表し方があります。わかりづらいので、表を共有しますね」
スリープレベル | 状態 | 呼び方 |
---|---|---|
S0 | 通常稼働 | アップ |
S1 | CPUの動作を停止 | |
S2 | CPUに給電停止 | |
S3 | メモリ以外に給電停止 | スリープ, スタンバイ, サスペンド |
S4 | メモリのデータを退避した上で給電停止 | 休止状態, ハイバネーション |
S5 | システムを完全に停止、電源断 | シャットダウンされた状態 |
『S1とS2、S4とS5の違いがわからないんですけど…』
「S1は停止しているだけで電気は流れています。S2は電気が流れていないので停止しています。S1のほうがすぐに動き出せる状態ですが、その分電気も使います。」
『へぇ…S1はCPUがスタンバイしているんですね』
「そうなんですけど、スタンバイっていう言葉は別のところで使うんですよね… S4とS5の違いですが、S4は終了手順を経て止めるのではなく、メモリにある情報を永続性ストレージに書き出して止めます。このため次に起動したら停止したときの状態に戻ります。S5の場合は終了手順を経て停止します。なので、次に起動したら起動手順を経て起動します」
『終了手順ってなんですか?』
「裏で動いているプログラムも含めてすべて停止して、一時ファイルも削除したりします。逆に起動手順はコンピュータが動くのに必要なプログラムを起動させたりします」
『S4は違うんですか?』
「今コンピュータが動いている状態はメモリの中にあります。ですからS3ではメモリだけ通電して今の状態を保存しています。S4ではメモリへの通電もやめてしまうためにメモリの内容をハードディスクやフラッシュストレージに書き出してしまいます。次に起動したときにこれをメモリに戻すために読み込むわけです」
『どうするのがいいんですか?』
「どうするのがいい、というよりもS5は別枠になっています。そして、S4に向かって、より電気を使わないけれど使い始めるのにも時間がかかる状態になります。ウィンドウズ10の場合、蓋を閉じたり、時間切れでスリープになるとS1になり、時間と共に徐々にS4に向かって深くなっていきます」
『へぇ…それで時間がたつと起動遅くなるんですね』
「スリープを選んだ場合はS3になります。これも時間がたつとS4になります。休止状態を選んだ場合には最初からS4になります。ただし、S5にはなりません」
『S5にするにはどうするんですか?』
「シャットダウンを選びます。シャットダウンはS5のことではなくて、S5にすることの動詞なんですけどね。また、再起動した場合にはS5にした後S0に戻します。ACPIによる用語ではないんですが、S6なんて呼んだりしますね」
『ふぅん…よくわからないですね。どうせ電気とめるならS4でよくないですか?』
「コンピュータは動かしている間に変わっていきますから、うまく動かなくなることがあるんですよ。特に更新した場合は内部的に整合性がとれませんし、特にウィンドウズの場合は更新を全く使われていない状態のときに行う必要がある設計になっています。 そのために終了手順を経るのです。更新時などに再起動を求められるのは、電源を切ることが重要なわけではなく、このように一旦すべてのプログラムを停止してまっさらにしてからもう一度全部起動し直すためです。」
この違いは小さいように見えるが、理解する上では重要である。
「起動」とは決められた手順で決められたプログラムを実行することであり、「終了」とはそれらも含めて全てのプログラムを停止することである。 「電源を切る」という動作は終了したあとに行われるものだし、実際にかつては「終了したら電源を手動で切る」ものだった。 また、起動時に電源を投入するのも電源を投入したから起動されるのではなく、起動するために通電しなければいけないのでまず電源を入れるのである。
『再起動ってしないといけないものなんですか?』
意図はしていないだろうけれども、なかなか闇深いところを突いた質問だ。
「建前上は、システムを更新した場合などでなければ必要ないはずなのですが、実際は稼働中に何らかの不整合を起こすことがあります。あるいは、不整合でなくともプログラムの不備でメモリを掴んだまま解放しないようなことも起こります。これを『ダーティな状態』と表現したりします。うまく動かない、バッテリー消費が激しい、フリーズする、エラーになる、動作が重いといった症状は再起動することで改善する可能性があります」
授業的にはこの説明は不十分で、「ダーティ」という場合には、いくつかの意味がある。メモリ上にあるキャッシュとディスクの内容が異なる、実行されているプロセスがロードしているものと、そのプログラムがロードされるべきライブラリが異なる、本来と違うファイルを指している、などなど。基本的には「整合性がとれていればクリーン、とれていなければダーティ」という概念だ。
『じゃあ、なんかおかしかったりしたら再起動したらいいってことですか?』
「もちろんとりあえず再起動したらなんとかなるかもしれない、という感覚は有効ですね。そうでなくても、時々は再起動したほうがいいですけど。スマホでも」
『でもめんどくさいですね。なんとかならないんですか』
「ウィンドウズ98が何時間かに一回再起動してたことを思えばずいぶん改善したと思います。一切再起動しなくて良い設計にするのは、あまりメリットもないので多分実現しないと思いますけど」
実際、可能な限り再起動したくないサーバーですら再起動したほうが話は早いケースが多い。
『そもそもアップデートってなんなんですか。めんどくさいしなんとかならないんですか』
「いや、それはなんともなりませんね。コンピュータは日進月歩ですし、日々変化します。改善もされますし、問題が発見されれば修正もされます。それを日々反映していかなければならないのです。ウィンドウズアップデートには改善の余地があるとは思いますけど、アップデート自体は必要なものです」