2016-04-13 9 views
0

私はIntel Quark SoCを使用しており、3重障害が発生した後にRAMからデータを読み取ろうとしています。私は、リセットが発生する前にいくつかのデータを保存していて、プログラムの再起動後にそれを読みたいと思っています。これは可能ですか?またはRAMがクリアされていますか?リセット後にx86 "32ビット"のソフトリセットが解除されますか?

+6

はい、可能です。また、OS/2の時代には、プロテクトモードからトリプルフォールトによってリアルモードに切り替えるのと同様のテクニックを使用しました(8042キーボードコントローラによるリセットよりも高速でした)。そのトリックは、RAMを破壊しないウォームリセットを強制したいとシステムに指示しなければならないということです。オンラインで文書化されたBDA(http://stanislavs.org/helppc/bios_data_area.html)、特にメモリアドレス0x40:0x72または物理アドレス0x472を使用して行うことができます。私は、この技術はまだ三重の故障でも現代のハードウェアで動作すると信じていますが、私はしばらく試していません。 –

+0

あなたは答えとして@MichaelPetchを書くべきです。 –

+0

@DavidHoelzer:答えを書こうとする人は誰でも可能です。私はこれがまだ機能しているとは確信できません。私はいくつかのVMがそれを尊重していないことを知っています。彼らは今かもしれませんが、私は実際にはわかりません。私の知るところにはギャップがあり、私のコメントは、昔に働く可能性がより高いものに設定されています。私の気持ちは、おそらくXYの問題です。 –

答えて

-3

オペレーティングシステムによって異なります。 Linuxでは、解放されたときにメモリをクリアできるPaXのようなパッチがあります。コンピュータ自体は何も消去しないので、可変の初期値を信頼できません。 http://tdistler.com/2008/02/21/data-in-ram-can-be-recovered-after-power-off

固定された物理アドレスを使用して情報を格納することができる場合は、再起動するとそのデータを回復することができます。 ring0レベル(カーネルドライバ権限)を持たないOS(Windowsのような)の中で実行している場合、再起動する前にデータが保存されていた場所を見つけることができません。

例を挙げると、プレイステーション3のハックの1つは、コンソールの再起動後のメモリ内の変更の存続に依存していました。

+0

元の質問から、オペレーティングシステムは関係ありません。ブートセクタのトラブルシューティングのように聞こえる。 –

+0

コンピュータは通常、再起動時にPOSTの一部としてメモリをテストするときにメモリ自体をクリアします。 –

+0

私はdownvotersの1つです。私はあなたが答えを出す時間を取ったことに感謝しますが、私は必ずしもこの質問に答えるとは思わない。 –

関連する問題