シャットダウン時のコンピュータ内部の動作について

このQ&Aのポイント
  • シャットダウン時のコンピュータ内部の動作について調査しました。システムをシャットダウンすると、コンピュータ内部では特定の順番で複数の処理が行われます。
  • また、シャットダウン処理にはメモリの解放も含まれており、これはメモリリークを防ぐための設計上の理由です。
  • さらに、シャットダウンに関する情報を探す際は、特定のOSに偏ったものではなく、システム全般に言える再起動の意味を理解するために幅広い情報を参考にすることがおすすめです。
回答を見る
  • ベストアンサー

シャットダウン時のコンピュータ内部の動作について

システムをシャットダウンすると、コンピュータ内部では どういう順番(シーケンス)で、何が起きるのでしょうか。 システムをシャットダウンするとは、コンピュータにとって、 どういう処理をするプロセスなのでしょうか。 なぜ、使用していたメモリを解放するのでしょうか。 メモリリークを防ぐための、設計上の理由でしょうか。 そうだとしたら、メモリーリークを防ぐために、 シャットダウンしたときにメモリーを解放する。みたいな 説明が書いてある書籍や、URLをご存知の方、 いらっしゃいましたら、ご教授お願いします。 ソフト的な分野も絡むので、カテゴリをOSにしようか 迷いましたが、私が知りたいのは、特定のOSに偏った ものではなく、システム全般に言える、コンピュータに とっての再起動の意味です。 以上 よろしくお願いします。

noname#255642
noname#255642

質問者が選んだベストアンサー

  • ベストアンサー
  • parts
  • ベストアンサー率62% (6364/10149)
回答No.2

Q/システムをシャットダウンするとは、コンピュータにとって、どういう処理をするプロセスなのでしょうか。 A/仮想メモリの情報で必要なものを、ハードディスクやSSDに書き出す。レジストリやイベント情報の更新を行う。物理的に電源の遮断を行うという手順のみです。 Q/なぜ、使用していたメモリを解放するのでしょうか。 A/その発想は正直なかったです。きっとACPIやAPMのルールが確立してから質問者様はPCを触られたのでしょう。基本的に、メモリを解放するというのは、電源が入っているときに、強制的にソフトウェアまたはハードウェアの手段によって、メモリ上のデータを別の場所に移したり、廃棄する場合を厳密には解放といいます。もちろん、それを理解した上で、再起動すると解放する。電源をいれば解放されるという言い方をすることはありますが、ソフトウェアだけの概念で答えると解放の条件は一般に再起動やシャットダウンは含まれません。これらは、ハードウェア起因の解放ですから・・・。 では、何故ハードウェア起因なのかというと、一般にメモリと呼ばれる媒体は正式に日本語で言うと主記憶装置と言いますが、このメモリーはDRAMだからです。Dynamic Random Access Memoryの略で、日本語で直訳すると「随時記憶保持動作が必要なメモリ」を意味します。製造は比較的安価で、大容量で高速な記録装置となるのが特徴ですが、とてもMemory(記憶装置)としては大きな欠陥があり、電気が流れていないと一定の間隔で、そこにあるデータを別の回路の一時的に循環させ元の保存場所に戻さないと、データが消えるという特徴があります。(これをリフレッシュという) これを行うのに、電気が必要で電気の供給がとぎれると、保存されているデータは全て失われます。 その代わり補助記憶装置(電源が切れてもデータが保持できる記録装置)より劇的に高速にデータのやりとりができます。 電源が切れると、一般にメモリが解放されますが、それはソフトウェアによって行われるのではなく、ハードとして消えるから、当然意図しなくとも解放されてしまうのです。 では、休止状態などで電源が切れているのに何故、途中の状態から開始できるかというと、OSにこれは電源を切るのではなく、途中から開始しますよというメッセージを残し、起動のステートに組み込みます。そして、メモリに保存している内容を、丸ごと補助記憶装置(HDDやSSD)に移して保管します。 電源が入ると、OSのブート領域は途中開始のメッセージを読み取り、ハードディスク上に保存されたメモリのバックアップを、DRAMに移すよう指示します。そして、移し終わったらメモリをロードします。 そうやって、休止前に戻すのです。 コンピュータの再起動やシャットダウンでは、メモリ内容を残すような指示は送られません。そのため、メモリはハードウェア(物理)的にクリアされます。そのため、リークを防ぐという意味はなく、仕様上消去されるのです。 ちなみに、メモリリーク(メモリ漏れ)は、意図せず発生するメモリの不正な浪費を意味します。 一般に、100MBしか日頃消費しないソフトが、500MB消費するといった現象がそれになります。リークを防ぐという概念は、一般にハードウェア理論ではなく、ソフトウェアの理論であり、どのようにアプリケーションまたはオペレーティングシステムがメモリを管理、解放するかという点と、それに対して、どういう場合に解放しないようにするかというルールの矛盾点が重なったときに発生します。 例えば、Aというソフトが1つ起動したときに100MB消費します。 2つ起動すると合わせて150MB、3つ以降は200MB、250MBと50MBずつ増えます。 OSの管理は、これに対して、ソフトウェアが求めるならそのソフトが完全に終了するまでは、ソフトが必要としたメモリ領域の最大量を常に保持するというルールだとしましょう。 同じソフトが4つのウィンドウで起動すると、250MB消費します。しかしそのうち3つを閉じると、実質で使われるのは100MBです。 ただ、OSが250MBの最大値を保持するとしていると、残りの150MBはAというソフトの予約として割り当てられ続けます。これを、リークといいます。 一般にリークを防ぐというのは、一般にOSとアプリケーションの関係から成立するもので、アプリケーションが使っていない領域をいつOSが解放するか、そしてその正確性がどれほどあるかによって、リークが少ないか多いかが決まります。 厳密にはリークを防ぐために再起動やシャットダウンをするというのは、正しい解釈ではなく、リークが起きるからシャットダウンせざる終えないまたは、再起動せざる終えないという解釈になります。 再起動しないと、解決しないようなリークが発生する素行の悪いアプリケーションやOSの場合は、それが必要になるのです。 尚、その昔コンピュータは、電源ボタンとリセットボタンを搭載していました。 電源ボタンは今でもありますけど、昔のコンピュータはブレーカーのように電源のオンとオフのスイッチが厳密にあったのです。OSはあくまで、ソフトを動かすための道具でしかなく、作業の途中でリセットしても、電源を切っても、影響はさほど無かったのです。 何故なら、コンピュータ1台で出来るソフトウェアでの作業は、1つだったからです。 要は、一つのソフトを1台のコンピュータで動かすシングルタスクでした。だから、ソフトが終了すればもちろんOSも終了する。別のアクセスが生まれることもありません。電源を切ってメモリリークを防ぐような状況なら、ソフトの設計を見直した方が効率的でした。 リセットボタンがあったのは、上記のようにスイッチでリセットしても動作上問題がないこと。また、仕組みとしてボタン制御の方が容易だったからです。OSがある程度進化しACPIやAPMといったローレベルプログラムでの制御コマンドが生まれてから、今のようにOSで全て制御できるようになりました。 そして、ソフトウェアの発展によりプリエンティブマルチタスクと呼ばれる時間単位(ミリ秒単位)でCPUやメモリの扱いなどをコントロールする技術が生まれたことで、現在でいうメモリリーク(OSや必要なソフトが必要なメモリを確保できなくなる現象)が起きるようになりました。 その際に、再起動すれば、電源を切れば改善するという言い回しが、質問者様のようにリークを防ぐためにわざわざ搭載されていると考える人も出てきたのです。 厳密には、当初から電源を切ればメモリ上のデータは消え、リセットボタンでもメモリ上のデータは消えたのです。そして、リークを防ぐ技術はソフトウェアの改善以外に昔からないのです。あくまで、ソフトの改善はソフトウェアの開発者にしかできないため、苦肉の策として電源を切ったり、再起動するという手段が使われているに過ぎないのですよ。 これが重要です。

noname#255642
質問者

お礼

お返事ありがとうございました。 かなり細かい情報まで教えて頂きまして、 ありがとうございました。 正直全部は理解し切れませんので、 少しずつ必要なところから、吸収していこうと 思います。 回答ありがとうございました。

その他の回答 (5)

回答No.6

>何と何の、どんな関係に従っているのか、 それぞれのシステムによって異なります。 データをHDDに書き込んでいる最中に、HDD書き込みプログラム(ファイルシステム)を止めることはできません。 等々

noname#255642
質問者

お礼

追加質問にご返信いただきまして、ありがとうございました。 他の皆さんと同様、今後の参考にさせて頂きます。

  • wellow
  • ベストアンサー率46% (892/1932)
回答No.5

訂正 >>なぜ、使用していたメモリを解放するのでしょうか。 >#1の方の回答を参照。 シャットダウンはプロセスの終了を伴いますが、プロセスの終了に伴い解放されるメモリは解放されます。メモリリークはバグなので、プロセスの終了では解放されません。 電源を切れば、#1の方の仰る通り、メモリリークも解消されます。再起動により、IPLからOSをロードしてもメモリは初期化されますので、メモリリークも解消されます。 何故、こういった訂正をしたかというと、シャットダウンという処理には電源断を含まないからです。シャットダウンは安全にシステムを停止し、管理者が安全に電源を切ることができる状態にまで持っていくシーケンスです。 「電源断までがシャットダウンだ」というなら、AT電源のPCではシャットダウン手前までしかできないということになります。現にwindows95の頃は「コンピュータの電源を切断しても安全です」というメッセージが出てから、電源を切ったものです。 今のPCはACPIを実装していますので、こういうメッセージは出ません。

noname#255642
質問者

お礼

>現にwindows95の頃は「コンピュータの電源を >切断しても安全です」というメッセージが出てから、 >電源を切ったものです。 私はWindows95からのPCユーザーですが、そんな感じでしたか。 完全に忘れていたため、勉強になりました。 ありがとうございます。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.4

>システムをシャットダウンするとは、コンピュータにとって、 >どういう処理をするプロセスなのでしょうか。 「システムをシャットダウンする」という意味では単に電源を切るというだけです。 ポイントはHDDやSSD、CF、SDカードと言った補助記憶装置を使うか使わないかです。補助記憶装置を使わないコンピュータでは、いきなりブチンと電源を切ります。それで問題ないからです。例えば、ファミコンなんかは補助記憶装置を使わないコンピュータに当たります。 一方、補助記憶装置を使うコンピュータでは、プロセスが起動中に電源が切られると、補助記憶装置への書き込み中であればファイルが破損する事になりますし、保存すべき情報が保存されていない不正な状態で終了する事になりえます。すると、次回起動時にファイルの破損等により不具合が発生したり、最悪の場合システムが起動しないことも発生しえます。 そのようなことを防ぐため、「システムを【安全に】シャットダウンする」ために、プロセスを終了しているのです。決してメモリを開放することを目的としているわけではありません。

noname#255642
質問者

お礼

>ポイントはHDDやSSD、CF、SDカードと言った >補助記憶装置を使うか使わないかです。 >いきなりブチンと電源を切ります。それで問題ないからです。 なるほど。 ソフトからのシャットダウンと、ハードからの シャットダウン(電源ボタンを落とす)との違い (ポイント)について教えていただきまして、 ありがとうございました。 私の質問は、ソフトからのシャットダウンの流れ (シーケンス)について、大枠を教えて頂いた上で、 それぞれのプロセスが、なぜシャットダウンという シーケンスの中に組み込まれているのか、 そのプロセスがないと、どうなってしまうのか、とか、そういうことが聞きたかったのですが、 これはこれで大変参考になる情報でした。 知識として、記憶しておきます。 回答ありがとうございました。

  • wellow
  • ベストアンサー率46% (892/1932)
回答No.3

>システムをシャットダウンするとは、コンピュータにとって、 >どういう処理をするプロセスなのでしょうか。 プロセスを停止させ、デバイスのバッファを吐き出したりクローズ処理を行い停止させることです。 プロセスの停止に伴いユーザはログオフされ、ネットワークセションはそのプロトコル手順(FINとかRST)に従って解放され、ディスクはwriteキャッシュはディスクに書き込まれた後にアンマウントされ、、といった感じになります。 >なぜ、使用していたメモリを解放するのでしょうか。 #1の方の回答を参照。 >メモリリークを防ぐための、設計上の理由でしょうか。 「今の生活をぶち壊して、生まれ変わってやり直したい」みたいな発想ですね。もう、メモリリークでも何でも「あり」まくりなシステム前提のようですが、それでは短期間で再起動を求められます。そんなものは誰も欲しくないですね。 >私が知りたいのは、特定のOSに偏った >ものではなく、システム全般に言える、コンピュータに >とっての再起動の意味です。 動的な組み込みや取り外しができる機能は良いのですが、そうでないものはOSの起動時に組み込んだり、メモリを確保しなければなりません。それができるのは起動時で、OS起動後のOS起動は、いわゆる再起動ということになります。

noname#255642
質問者

お礼

お返事ありがとうございました。 >プロセスを停止させ、デバイスのバッファを >吐き出したりクローズ処理を行い停止させることです。 もう少し詳しい情報が欲しかったです。 でもその他、大変参考になる情報ありがとうございました。

回答No.1

一般的なメモリに使用されるDRAMは電源が止まると記録内容を保持できないためです。 シャットダウン時には依存関係に従いプロセスを停止してメモリを開放します。 その対必要なデータは電源供給が必要ないHDD等に保存します。 DRAMに電源供給し続けるのは、windowsで言えばスリープモードです

noname#255642
質問者

補足

早速、回答いただきまして、ありがとうございました。 >依存関係に従い とありますが、何と何の、どんな関係に従っているのか、 お手数ですが、その辺の説明をお願いします。

関連するQ&A

  • windowsでのプログラミングについてなんですけど。

    UNIXの本を読んでると、プログラムはexitシステムコールが呼ばれると、 freeregを呼び出し、malloc済みメモリをすべて開放し、共有メモリについても 参照が0になったら解放するようになっていて、仮にメモリリークする プログラムで会ってもプロセスを殺せば、そのプログラムのリークした分は すべて解放されるんですよ~~~それと同じ感覚で、windowsでプログラム やってる友達に聞いたら、プロセスを殺してもnewでリークしたのしっぱなしに なるっぽいよ~って言ってたんですよ。それって本当なんですか? てか本当ならあえてそうしてるメリットってあるんでしょうか?

  • 突然シャットダウンします

    突然画面に、 「システムプロセス  C:window\system32\lsass.exe  は状態コード1073741819  で突然終了しました。   システムをシャットダウンします。」  とでて終了します。 エクセルやワードのときはでませんが、ネットサーフ してるときにでます。 当方 NECバリュースターNX OS:winXP メモリ500MB    CPU400Mhz 困っていますよろしくお願いします。

  • シャットダウン時にIPアドレスを開放する方法

    OSはW2Kで、シャットダウン時(”スタート”→”シャットダウン”→”コンピュータをシャットダウンする”を選択)に、IPアドレスを開放する方法はありますでしょうか?現在はコマンドプロンプト上でipconfig/releaseという方法で解放してから、シャットダウンをしていますが、ユーザが異なっても自動的に解放される手段を取りたいのですが。また、XPおよびW98のOSについても手段があったら、よろしくお願い致します。

  • コンピュータが突然、シャットダウンします。

    コンピュータが突然、シャットダウンします。 IE8でWEBブラウジングをしていたり、Google Earthをしているとコンピュータがハングアップ(操作を受け付けない)やシャットダウンします。(頻度、1週間に1,2回) 環境 コンピュータ:Acer Appire M5802(CPU:Intel Core Quad ,memory:4GB) OS:Windowd7 Pro 64bit AntivirusSoft:Ms Security Essentials 昨年購入したばかりで、スペックとして低いわけではないと思いますがあまりにもハングアップが多くて何とかしたいと思っています。 Acerに問い合わせたところ、同機器でこのような現象の報告は聞いていないといわれました。 イベントログを見ると、 Application Hang: プログラム iexplore.exe バージョン 8.0.7600.16385 は Windows との対話を停止し、終了しました。問題に関する詳細な情報があるかどうかを確認するには、アクション センター コントロール パネルで、問題の履歴をクリックしてください。 Service Control Manager: Network List Service サービスは、次のエラーが原因で開始できなかった Network Location Awareness サービスに依存しています: 依存関係サービスまたはグループを起動できませんでした。 が多く出ています。他、 Bonjour Serviceのエラーが1日に20回ほど出ています。 質問 何が原因と思われますか?(グラフィックボード、AntivirusSoft、Ie8、Memory不足?、64Bit) どのような対処をすればいいでしょうか?(Acerに預ける、グラフィックボードのドライバの更新、メモリの追加?)もしかしたらこのPCそのものがもともと不具合を持っているのでしょうか? 対応の仕方や参考になるようなURLなど何かお分かりの方がいましたら教えてください。よろしくお願いします。

  • シャットダウンしない

    コンピュータ検査後のアクションで「シャットダウン」を選択したのに検査終了後のカウントダウンが0秒になるとアクション選択の窓が「なし」に変わり、コンピュータはシャットダウンしません。どうすればシャットダウンできるようになりますか。 OSはwindows7です。メモリーは2GB(最大)にしています。 対処方法をご教授願います。 ※OKWAVEより補足:「ESETセキュリティ ソフトウェア シリーズ」についての質問です。

  • シャットダウンできない

    ここ最近、次のような文章でて、すんなりシャットダウンできません。以下のように文章が出ます ウィンドウステーションがシャットダウン中であるためにアプリケーションソフトが初期化に失敗しました。 0x58731531の命令が0x00000014のメモリを参照にしました。メモリがreadになることができません。 とでます。 これはどういうことなのでしょうか。 NEC LL550GD OS   XP HomeEdition SP2 メモリー1GB HD  80  です。 買ったのは先月の27日です。 どうしたらすんなりシャットダウンできるようになるのでしょうか、

  • PCのシャットダウン動作が出来なくなりました。

    昨日から突然パソコンのシャットダウン動作が実行出来なくなり従って 強制的に「コンセント」を抜き終了させております。 [現象] (1) 電源ボタンからのシャットダウン(強制終了では無く) 強制終了    でも不能。 (2) 終了オプションからの「電源を切る」不能   (3) まれに、正常に「シャットダウン」が出来ることもある    上記の3項目が動作不良の現象です。  システムの修復を実行したのですが改善されません。  ハ-ド的な問題なのか原因が特定できません  ご教授をお願いします。 [動作環境] (OS) Windows XP (PC) VALUESTAR VS5007D 尚、HDDとメモリは今年になってから交換しております。

  • シャットダウン出来ない、アプリが動作しなくなる

    Windows7の64bitを使っています。 1、2ヶ月前からWindowsが正常に動作しなくなりました。PC購入後まだ2年ほどです。 1日連続で起動しているとログオフ、シャットダウンが出来なくなり(シャットダウン中です のまま)、 アプリの設定変更、新規起動が出来なくなり、終了してプロセスを見てみるとプロセスからアプリが消えておらずプロセスの終了をしてみるとCPU0%のまま変動しなくなりました。 使用中のアプリは動作しているのですが、ネットブラウザ(Chromeを使用中)で一部のサイトへのアクセスが出来なくなります。 アクセス不可の確認出来たのはTwitterとHotmailで、「このウェブページにアクセスできません」というメッセージが出ます。 ルーターは使っておらず、セキュリティソフトはNortonの最新版を使っています。(Nortonを無効にしてもアクセス不可) 今までは1日の連続起動でこういった症状が出ていたのですが、今日は半半日でこの症状が出ました。 アプリの更新をした記憶も、新しいアプリを入れた記憶も無く、唯一思い当たる節はWindows Updateくらいです。 何が原因なのか全く解らず2ちゃんねるのWindows Updateスレを見てみると数人同じ症状の方が居て、OSの入れ直しや初期化、復元をしてみても解決出来なかったとのことでした。 私は強制終了ソフトと強制終了コマンド(C:\Windows\System32\shutdown.exe /s /f /t 1)を試してみたのですがシャットダウン出来ませんでした。 つまりアプリが原因ではないということですかね。 調べてみるとwin7の初期からずっとある不具合のようで、やはり解決策が見つかりませんでした。 報告はされているそうですがマイクロソフトは放置しているようです。 PCを買い換える以外にどうしたら正常に戻るでしょうか? PCに詳しい方、助けてください。

  • シャットダウン時に必ずブルー画面

    シャットダウン時に必ずブルー画面になります。 イベントログには以下の2件がいつも書き込まれております。 「次のブート開始ドライバまたはシステム開始ドライバを読み込むことができませんでした:CTSYN」 「Computer Browser は次のサービス固有のエラーで終了しました: 2550 」 このブルー画面の対処方法を教えてください。 OSはWin2000SP3です。

  • システムのシャットダウン

    WindowsXPSP2を、使用していますが、 一昨日あたりから下記のようなエラーメッセージが表示されシャットダウンしてしまいます。 「システムはシャットダウンされます。進行中の作業をすべて保存し、ログオフしてください。保存されていない情報は失われます。シャットダウンはNT AUTHORITY\SYSTEMによって開始されました。 シャットダウンまで(時間を表示) メッセージ システム プロセス 'C:\WINNT\system32\services.exe'は状態コード203で突然終了しました。 システムをシャットダウンし、再起動します。 ↓は最初の表示が出た時のエラー報告に含まれるデータの 参照に書いてあったものです C:\DOCUME~1\ユーザー名~1\LOCALS~1\Temp\WER31aa.dir00\services.exe.mdmp C:\DOCUME~1\ユーザー名~1\LOCALS~1\Temp\WER31aa.dir00\appcompat.txt 教えてgooにも、過去に同じような質問が見受けられますが、OSがWin2000のものばかりです。 果たして、XPでも起こり得ることなのでしょうか? 起こりうるのであればその対処法を是非教えていただきたく思います。 よろしくお願いいたします。