コンピューターはどのように再起動しますか?


491

コンピューターはどのように再起動できますか?オフになった後、どのようにして再びオンに戻るように自分自身に伝えるのですか?これを行うことができるのはどのようなソフトウェアですか?


8
@ jer.salamon:実際には完全に異なるパスです。シャットダウンすると、ACPIルーチンが呼び出され、ATX電源に信号が送信され、メイン電圧レールがオフになります。
イグナシオバスケス-エイブラムス

13
これはBIOSによって制御されます-メモリが提供される場合、対象のキーワードはAPMとAPIC
pst

118
再起動時に「オフ」になることはありません。
モアブ

10
愚かな質問はありません。いいえ、おそらくあります-しかし、私はこれが実際に非常に興味深いと思います。今週の候補者の質問として取り上げられました。
-slhck

4
私は、会社のデータセンターにある画面やキーボードのない基本的なPCであるリモートサーバーでテレワークするのが常でした。サーバーは通常、まったくオフになりませんでしたが、WinXPの[スタート]-> [TurnOffComputer]-> [再起動]を使用して、自分のコードをテストすることによって生じる不安定性を整理するために、エンドから再起動することもありました。データセンターが無人のときは、自分で選んだときに仕事をすることがよくありました。最後のオプションとして誤って[オフ]を選択したのは非常に面倒で、2日後までオペレーターが行ってオンスイッチを押すまで待たなければなりませんでした。
FumbleFingers

回答:


599

tl; dr:コンピューターの電源状態は、ACPI(高度な構成と電源インターフェイス)の実装によって制御されます。シャットダウンプロセスの最後に、オペレーティングシステムはACPIコマンドを設定して、コンピューターを再起動する必要があることを示します。それに応じて、マザーボードは、それぞれのリセットコマンドまたはラインを使用してすべてのコンポーネントをリセットし、ブートストラッププロセスに従います。マザーボードが実際にオフになることはありません。さまざまなコンポーネントをリセットするだけで、電源ボタンが押されたように動作します。

長くてとりとめのない、しかし(私の意見では)より興味深い答え:

ソフトパワーとその仕組み

昔(大丈夫、私のような大学生にとっては90年代は昔でした)、ATパワーを備えたAT(Advanced Technology)マザーボードがありました管理。AT電源システムは非常にシンプルでした。コンピューターの電源ボタンはハードウェアのトグルで(おそらくケースの背面にあります)、120vacの入力はそのまま通されました。物理的に電源の電源をオン/オフし、このスイッチがオフの位置にあると、コンピューターのすべてが完全に停止しました(これにより、CMOSバッテリーが非常に重要になりました。クロックカチカチ)。電源スイッチは物理的なメカニズムであるため、電源をオンまたはオフにするソフトウェアの方法はありませんでした。Windowsには有名な「コンピューターの電源を切るのは安全です」というメッセージが表示されます。これは、すべてが駐車されて電源を切る準備ができているにもかかわらず、OSが実際に電源スイッチを切り替えることができないためです。この構成は、ハードパワー、それはすべてのハードウェアだから。

最近では、ATXマザーボードとATX電源の不思議さにより、状況は異なります(追跡している場合、それはAdvanced Technology eXtendedです)。他の多くの進歩(ミニDIN PS / 2、誰か?)とともに、ATXはソフトパワーをもたらしました。ソフト電源とは、コンピューターへの電源をソフトウェアで制御できることを意味します。これにより、インポートの変更がいくつか行われました。

  • スタンバイ電源:電源装置のピン配列に「5v SB」または「5v standby」コネクタのラベルが付いている場合があります。スタンバイ電源マザーボードへの5vラインは、コンピューターの電源がオフの場合でも常にオンになっています。最新のコンピューターを保守するときは、PSUハードスイッチ(ある場合)を抜くかオフにすることが重要です。なぜなら、電源が切れていても5v SBをショートさせてマザーボードを損傷する可能性があるからです。これは、CMOSバッテリーがもはやそれほど重要ではなくなった理由でもあります。電源に主電源が供給されているときは常に、5v SBがCMOSバッテリーを交換するために使用されます。5v SBラインにより、コンピューターのコンポーネント(最も重要なのはBIOSとネットワークアダプター)がコンピューターの電源がオフになっていても、いくつかの簡単なソフトウェアを実行し続けることができます。
  • インテリジェントな電源制御。あなたは電源のマザーボード(P1)コネクタのピン配置を見れば、次の2本のピン典型的には標識に気づくでしょうPS_ONPS_RDYを。これらは「電源オン」および「電源準備完了」の略です。実験したい場合は、コンピューターにない電源を取り、プラグを差し込み、グランドライン(黒​​いワイヤーの1つ)をPS_ONライン(緑のワイヤー)に慎重に短絡します。電源が目に見える状態でオンになり、ファンが回転します。+ 5v SBで動作するマザーボードのコンポーネントは、PS_ONピンに電源を接続することにより、実際に電源をオンまたはオフにします。電源には充電に少し時間がかかるコンデンサやその他のコンポーネントがあるため、電源のメイン出力からの電圧は、PSUがオンになった直後に安定しない場合があります。これがPS_RDYピンの目的です。電源の内部ロジックが電源が「準備完了」であり、安定した電力を供給すると判断したときに点灯します。

したがって、電源スイッチはコンピューターを「オン」にすることはありません。代わりに、マザーボードの基本コントローラーに接続され、ボタンが押されたことを検出し、電源を使用できるようにPS_ONを点灯するなど、いくつかの手順を実行してシステムを準備します。電源ボタンは、起動プロセスをトリガーする唯一の方法ではありません。拡張バス上のデバイスもトリガーできます。これは重要です。なぜなら、コンピューターの電源が切れているときにイーサネットネットワークアダプターが実際にオンのままで、「マジックパケット」と呼ばれる特定のパケットを探すからです。MACアドレス宛のこのパケットを検出すると、起動プロセスがトリガーされます。これが「Wake-on-LAN」(WoL)の仕組みです。クロックはブートを開始することもできます(ほとんどのBIOSでは、コンピューターが毎日ブートする時間を設定できます)。

電力制御について

それで、私はそれがおもしろいと思うので(私が物事を説明する主な理由である)、そしてあなたのコンピューターの電源と実行/オフ状態がすべてソフトウェアによってどのように制御されるかを理解できるので、私はSoft Powerの事を説明します。現在のほとんどのコンピューターでは、このソフトウェアシステムはAdvanced Configuration and Power Interface(ACPI)の実装です。ACPIは、ソフトウェアがコンピューターの電源システムを制御できるようにする標準化された統合システムです。ACPIの電源状態について聞いたことがあるかもしれません。電源制御の基本的なメカニズムはこれらの「電源状態」です。オペレーティングシステムは、スイッチ(電源が実際にオフになる前に発生するシャットダウン/休止プロセス)を準備し、マザーボードに電源状態を切り替えるように命令することで電源モードを切り替えます。電源状態は次のようになります。

  • G0:動作中(コンピューターの「オン」状態)
  • G1:スリープ(コンピューターのスタンバイ状態、Sサブ状態に分割)
    • S1:CPUとRAMの電源はオンのままですが、CPUは命令を実行していません。周辺機器の電源がオフになっています。
    • S2:CPUの電源がオフになり、RAMが維持されます
    • S3:RAMと再開をトリガーするデバイス(キーボード)を除くすべてのコンポーネントの電源が切れます。OSに「スリープ」を指示すると、プロセスが停止し、このモードに入ります。
    • S4:冬眠。絶対にすべてがオフになります。オペレーティングシステムにHibernateを指示すると、プロセスを停止し、RAMの内容をディスクに保存してから、このモードに入ります。
  • G2:ソフトオフ。これはコンピューターの「オフ」状態です。起動をトリガーできるデバイスを除き、すべての電源がオフになっています。
  • G3:機械的オフ。

リセットが実際に行われる方法

リブートはこれらの状態の1つではないことがわかります。それでは、コンピューターが再起動したときに実際に何が起こるのでしょうか?電源管理の観点からはほとんど何もないため、答えは驚くかもしれませんACPIリセットコマンドがあります。オペレーティングシステムを再起動するように指示すると、通常のシャットダウンプロセス(すべてのプロセスの停止、少しのメンテナンスの実行、ファイルシステムのマウント解除など)が行われ、その後、マシンを電源状態にする代わりに最終ステップとしてG2(単にシャットダウンするように指示した場合のように)Resetコマンドを設定します。これは一般に「リセットレジスタ」と呼ばれます。これは、ほとんどのACPIインターフェイスと同様に、リセットを要求するために特定の値を書き込む必要があるアドレスにすぎないためです。2.0の仕様を引用して引用します。

オプションのACPIリセットメカニズムは、完全なシステムリセットを提供する標準メカニズムを指定します。実装されると、このメカニズムはシステム全体をリセットする必要があります。これには、プロセッサ、コアロジック、すべてのバス、およびすべての周辺機器が含まれます。OSPMの観点からは、リセットメカニズムのアサートは、マシンの電源を入れ直すことと論理的に同等です。リセット後に制御を取得すると、OSPMはコールドブートと同様の方法でアクションを実行します。

そのため、リセットレジスタを設定すると、いくつかのことが順番に発生します。

  • すべてのロジックがリセットされます。これは、それぞれのリセットコマンドをCPU、メモリコントローラー、周辺コントローラーなどを含むさまざまなハードウェアに送信することを意味します。ほとんどの場合、これは、AndrejaKoが上に示したように物理RSTワイヤを点灯することを意味します。
  • その後、コンピューターはブートストラップされます。これは「コールドブートと同じようにアクションを実行する」部分です。マザーボードは、電源ボタンを押した後、電源装置が準備完了になった場合と同じ手順を実行します。

これらの2つのステップ(実際にはさらに多くのステップに分解されます)の最終結果は、コンピューターが起動したばかりのように見えますが、実際には常に電源が入っていることです。これは、シャットダウンして起動するのに必要な時間が短くなることを意味し(電源の準備が整うまで待つ必要がないため)、オペレーティングシステムのシャットダウンによって起動を開始できることが重要です。これは、別のスタートアップトリガー(WoLなど)を使用する必要がないことを意味し、ブートをトリガーする方法がない場合、システムをリモートでリセットする効果的な方法としてRebootを使用できます。


それは長い答えでした。でもね、今はコンピュータの電源管理についてもっと知っているといいですね。私は確かにこれを研究するいくつかのことを学びました。


3
+1。非常に有益で有用な答え。ワンポイント-PS_ONはアクティブLowです。つまり、+ 5VSBではなく0Vに切り替えてメイン出力をオンにします。
MikeJ-UK

2
ブートをトリガーするUSB​​デバイスの場合、一部のBIOSには、ダブルクリックまたはキー押下でコンピューターを起動するオプションがあります。また、一部のMacキーボードには電源ボタンがあります(伝統は元に戻りました)。
スチュアートP.ベントレー

1
素晴らしい答え、私は確かに多くを学びました。ただし、マザーボードの観点から見ると、S4状態とG2状態の違いは何ですか?RAMのディスクへの保存はOSによって行われるため、S4はハードウェアの「ソフトオフ」のように聞こえます。
EMP

1
S4は機能的にはG2と同等ですが、違いは保存されます。一部のBIOSは、S4から起動すると「クイックPOST」を実行しますが、G2から起動すると完全なPOSTを実行します。ただし、人々がS4の再開を速くしたいということ以外には、これには理由はないと思います。
jcrawfordor

1
それは実際には少し単純化されています。コンピューターをリブートする(多くの)非ACPIの方法があり、時にはACPIだけでは機能しない場合があります
東武

81

出発点は次のとおりです。

通常、チップはオフになってからオンになりません。代わりに、通常はすべてのメモリがクリアされ、プロセッサの電源が入ったばかりのように見えるときに、プロセッサをいわゆるリセット状態にするリセットラインがあります。そのピンがHigh(またはプロセッサによってはLow)に保持されている間、プロセッサはリセットされます。ピンがリリースされると、初めてオンになった場合と同じように、ピンは通常どおり起動し続けます。これのポイントは、停電自体がないことです。

では、これは現代のPCのような大規模システムにどのように拡張されるのでしょうか?現代のコンピューターは、コンピューター自体で作られていることもあります。したがって、コンピューターをリセットするように設定すると、コンピューターを作成する「コンピューター」は、状態の保存を開始します(リセットが制御されている場合)、または単にリセットピンを引っ張ります。

一部のプロセッサおよびマイクロコントローラ(通常、最新のデスクトップコンピュータより20年遅れの小型の内蔵型コンピュータ)は、内部スイッチを使用して自分自身をリセットできます。前述したように、リセットを生成する信号がなくなると、コンピューターが起動します。したがって、質問の前提は完全に正しいわけではありません。コンピューターはいつ電源を入れるべきかを知りません。「オフ」またはリセットする必要があるとき、およびそれを保持する信号がなくなると、それはオンになります。

この動作は、特定の時間またはネットワークなどでオンに設定できる現代のコンピューターでは奇妙に見えるかもしれません。私が言ったように、コンピューターはコンピューターでできています。そのため、メインプロセッサはオフになっている場合がありますが、内部には他にも多数のチップやマイクロコントローラがオンになっている場合があります。最も明らかなケースは、多くの場合バッテリー駆動のリアルタイムクロックです。その後、他のチップをオンにして、他のチップをオンにし、コンピューター全体がオンになるまで連鎖反応を続けます。今日のコンピューターには、+ 5 VDCスタンバイ電圧と呼ばれるPSUラインがあります。コンピューターが「オフ」のときにオンになっているさまざまなデバイスに約50 mWの電力を供給します。

ちょっとした雑学:Intel 386 EXプロセッサーのリセットピンはピン番号110です。

386EXデータシートの図2

Intel i7-900では、ランド番号はAL39です。

それは非常に複雑なシステムなので、誰かが物事が高レベルの観点からどのように機能するかを説明する答えを提供できることを願っています。


うわー、徹底的な答え。
セスカーネギー

13
@Seth Carnegieそれはそれほど素晴らしいことではありません。冷蔵庫の中からPCまで、ほとんどのコンピューターに当てはまる低レベルのものに触れました。ACPI、APM、その他の最新の電源システムや、キーボードがプロセッサーをリセットできるIntel 8042マイクロコントローラー、POSTの動作、ベクターのリセットなど、古いPCでの方法についても言及しませんでした。
-AndrejaKo

1
@netvope想像しすぎです。おそらくマウスに少なくとも1つ、キーボードに1つ、マザーボードの最も基本的な部分に10個以上(高度に統合された「チップセット」を考慮しても)、電源ユニットに少なくとも1つ、各ドライブ(おそらく2〜3)、各拡張カードにいくつか...モニターも深刻なビジネスであり、私のプリンターは私の最初のデスクトップコンピューターよりも多くのRAMを持っています。
AndrejaKo

4
メモリについて言えば、いくつかの新しいHDDとCPUのキャッシュは、最初に使用したコンピューターのRAMよりも大きくなりました。Windows 95を完全にL2キャッシュで実行し、システムパーティション全体をドライブキャッシュに保持できるようになりました!
netvope

27

このブログ投稿では、Linuxがリブートをトリガーする方法について説明しています。

抜粋:

Linuxには、x86をリセットするさまざまな方法があります。それらのいくつかは32ビットのみであるため、正直に言うと、あなたは自分の人生で何をしているのかを無視するつもりです。また、彼らは恐ろしいです。そのため、5つが残ります。

  • kbd-キーボードコントローラーを介して再起動します。元のIBM PCでは、CPUリセットラインがキーボードコントローラーに接続されていました。適切なマジック値を書き込むと、回線がパルスされ、マシンがリセットされます。これは非常に簡単です。ただし、最新のマシンにはキーボードコントローラーがなく(実際には組み込みコントローラーの一部です)、さらに最新のマシンにはキーボードコントローラーのふりもありません。現在、組み込みコントローラーはソフトウェアを実行しています。そして、誰もが知っているように、ソフトウェアは恐ろしいものです。しかし、さらに悪いことに、組み込みコントローラー上のソフトウェアはBIOS作成者によって作成されています。したがって、これがこれまでに機能しているふりは、何らかの手の込んだフィクションです。一部のマシンは、Windowsがプログラムするのとまったく同じ状態のハードウェアについて非常にうるさいです。一部のマシンは、10回のうち9回動作してから、何らかの奇妙なタイミングの問題のためにロックします。そして、他の人はまったく機能しません。ハラー!

  • triple-トリプルフォールトの生成を試みます。これは、空の割り込み記述子テーブルをロードしてから、int(3)を呼び出すことによって行われます。割り込みは失敗し(IDTはありません)、障害ハンドラーは失敗し(IDTはありません)、CPUは理論的にはリセットをトリガーする必要がある状態に入ります。ただし、これが発生する必要はないようで、多くのマシンでは機能しません。

  • pci-実際にはpciではありません。従来のPCI構成スペースアクセスは、32ビット値をioポート0xcf8に書き込んで、バス、デバイス、機能、および構成レジスタを識別することによって実現されます。ポート0xcfcには、問題のレジスタが含まれます。ただし、適切なマジック値のペアを0xcf9に書き込むと、マシンは再起動します。素晴らしい!また、何らかの方法で標準化されていないため(確かにPCI仕様の一部ではないため)、チップセットごとに要件が異なる場合があります。ブー

  • efi-EFIランタイムサービスは、マシンを再起動するためのエントリポイントを提供します。通常はそれでも動作します!EFIランタイムサービスがまったく機能している限り、これは大幅に増加する可能性があります。

  • acpi-ACPI仕様の最近のバージョンでは、アドレス(通常はメモリまたはシステムIOスペース)とそこに書き込む値を指定できます。この考え方は、アドレスに値を書き込むとシステムがリセットされるというものです。そうすることはしばしば失敗することがわかります。PCIの再起動方法には値のペアが必要で、ACPIには1つの値しか与えられないため、ACPIを介してPCIの再起動方法を表すこともできません。


15
これは関連性がありますが、他のページの情報の抜粋をここに入力すると、答えがより便利になります。
calvinf

1
tl; dr再起動する方法はたくさんあります。一部のボードはひどく壊れているため、Windowsのふりをすることができます。これは、数回の試行と少しのスリープを含むヒューリスティックな方法が唯一の方法です。
東武

10

I / Oロケーションをフロップし、データラインをLowにします。これにより、CPUに、実行中の処理を停止し、BIOSの特定のロケーションからコードの実行を開始するよう指示します。


...その場所は、再起動システムコールに渡されるコードで指定されていますか?
ナイトサマー

1
@ナイトサマール:いいえ。I / Oの場所は、一般的にはカーネルが知っているアーキテクチャ定数です。これは、たとえばarch / x86 / kernel / reboot.cなどのLinux再起動コードで確認できます。
sleske

誰もがその問題についてさらに読むための良いリソースを持っていますか?
マティアスクル

@ mugen.kenichiとすべて、友人がhowstuffworks.com/bios.htm/printable
ナイトサマー


10

もちろん、電源管理の前の昔に、コンピューターはもちろん自分で再起動することができました。(プログラムを凍結したためにCtrl + Alt + Deleteを使用してコンピューターを再起動する必要があったことを覚えている人はいますか?)

私の古い486では、アセンブリ言語コマンドJMP FFFF:0000(つまり、CPUの命令ポインターを上記のアドレスに設定)によってコンピューター全体が再起動しました。言い換えれば、FFFF:0000は、コンピューターが最初に起動したときに実行する必要がある指示を含むBIOS内の場所に対応します。AndrejaKoの答えで説明されているリセットピン、または電源管理前のリセットボタンは、命令ポインターを同じアドレスに強制するものと思われます。

JMP FFFFのためのGoogle検索:0000はこのことについて多くの興味深いページを明らかにする。


3
また、コールドブート(0x0000)かウォームブート(0x1234)かを判断するために、0040:0072に特定の値を書き込む必要がありました。
Synetech

9

ウォッチドッグと呼ばれるものもあります。このデバイスは、デッドマンのスイッチとして機能します。コンピューターは、ウォッチドッグに1分ごとにウォッチドッグに信号を送り、まだ生きていることを知らせます。無限ループに陥ることなどによりコンピューターがクラッシュすると、ウォッチドッグが意図したとおりに実行中であることをウォッチドッグに通知できず、その場合、ウォッチドッグはハードウェアリセットを実行します。これは、ロボットが高電圧の電力サージによってノックアウトされたターミネーターの人気のあるtvシリーズで実証されました。2分でリセットされます。


2
これは正しいですが、実際には質問に答えません。
sleske

4
実際にコンピューター全体を再起動するウォッチドッグはありますか?コンピューター内部のさまざまなマイクロコントローラーに使用されることもありますが、コンピューター全体にマイクロコントローラーはありますか?私の個人的な経験からノーと言うようになりましたが、賛否両論の証拠は歓迎されます。
-AndrejaKo

5
@AndrejaKo:私は以前、通信サーバー(基本的にはモデムが接続されたブレードサーバー)を作った会社で働いていました。マザーボードのリセットピンに接続されたウォッチドッグタイマーがありました。タイマーは、マザーボードで実行されているバックグラウンドユーティリティによって定期的にバンプされたため、プロセッサがハングした場合、ウォッチドッグは最終的にリセットボタンを押します。マザーボードが再起動する間、電話回線をビジーにする回路に結び付けられていました。
ロバートハーヴェイ

4

古いIBM PC-1に戻ると、奇妙なことに、キーボードコントローラーが再起動を処理しました。IBMは、キーボードを処理するために小さなマイクロプロセッサーを組み込み、予備のI / Oラインをいくつか持っていたため、それらのラインの1つを使用してメインCPUのリセットラインを駆動しました。キーボードコントローラーに送信されたコマンドは、電源がオンになった直後のようにCPUをリセットします。

この伝統は「AT」時代にまで続き、今日のACPIにはその痕跡が残っていると思います。

追加:上記のリセットスキームについて興味深い詳細があります。初期のブートシーケンス中に、コードは、以前に実行したコードによって設定された可能性のあるRAM内の特定のパターンを探しました。このコードが存在する場合、POST(電源投入時自己診断)診断の一部がスキップされました。パターンは「ウォーム」ブートにのみ存在します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.