AIと戦って、あなたの人生のリスク診断 >>

C++で再起動プログラムを作りたいと
思っています。
具体的には、3.5インチFDDに入れて
パソコンが立ち上がりFDDを読んで
再起動するというものです。
仕組を教えて欲しいのですが、プログラム自体では
なくパソコン内でどういったことで再起動しているのか教えてほしいのですが。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

再起動とは「CPUをリセットする」と言う事です。



CPUやハードウェアを限定せず、一般的なCPUとパソコンの話として解説してみます(8ビットCPUを積んだマイコン等は話が違うので除外します)

電源投入直後、CPUは「リセットベクタ」と言う場所に書かれているアドレスを拾い、そこから実行を開始します。

マザーボードのリセットスイッチを押すとCPUにリセット信号が入り、CPUは今までやっていた事をすべて放り出して、電源投入直後と同じように「リセットベクタ」からアドレスを拾い、そこから実行を開始します(実際には、周辺チップにもリセット信号が入り、周辺チップもリセットされます。

で、再起動の話に戻りますが、上記の「リセットベクタからアドレスを拾い、そこから実行を開始する」と言う、特別な命令コードがあります(リスタート命令などと呼ばれたりします。通常、この命令は特権命令であり、CPUを特権モードに切り替えていないと、特権命令違反などの例外が発生し、命令が実行されません)

実際の再起動処理では、ファイルアクセス、I/Oアクセスをすべて閉じ、必要であれば周辺チップの再初期化を行い、割り込みを禁止してから上記のリスタート命令を実行します(周辺チップの再初期化が必要なのは、リセット信号の入力時と違い、周辺チップにリセットがかかっていないので、プログラムで周辺チップをリセット時と同じ状態にしてあげる必要がある為です)
    • good
    • 0
この回答へのお礼

非常にわかりやすい説明ありがとうございます。
仕事でパソコンのセットアップ業務をしている
のですが、このあたりまで知識がないと
単にリセット出来ないからマザー不良といえないですよね。
本当に助かりました。

お礼日時:2003/11/08 08:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング