Linuxでは、kexec jumpを使用して、制御を別のカーネル(つまりプログラム)に完全に転送できます。もちろん、大きな力を借りれば大きな責任があります。割り込みを処理し、古いカーネルのメモリを破壊しないようにすることは、あなた次第です。これを行うために、独自のOSカーネルを書く必要があります。また、カーネルはすべてのハードウェアの初期化を解除し、再開するときに再初期化する必要があるため、制御の転送にかなりの時間がかかります。 kexecジャンプはもともとハイバネーションサポートのために設計されていたので、これは元のコンテキストでは問題ではありませんが、何をしているかによって問題になるかもしれません。
代わりに、OSによって与えられたフレームワーク内で作業することを検討してください。あなたがやっていることのために普通のドライバを書くだけです。
最後にもう1つのオプションは、Linux Real-Time patchsetです。これにより、すべてに静的な優先順位を割り当てたり、ハンドラを中断させたりすることができます。何よりも高い優先度を持つプロセスを実行することで、システムは割り込みをほぼ中断することができますが、タイミング割り込みのような遅延は許されない特定の割り込みだけでなく、あなたがCPUのコントロールを放棄するまで、重い作業は延期されます。
RTパッチセットは仮想メモリなどを停止しないことに注意してください。mlockallは、有効なページのページフォールトを防止します。
また、システムBIOSは、マザーボードモデル固有の方法を除いて、無効にできないSMM trapsを引き続き発生させる可能性があることに注意してください。
なぜこれをやりたいですか?私が考えることができる唯一の理由は、そうでなければ混乱させてはいけないこと(フラッシュBIOSなど)を混乱させることです。 – Powerlord
私はユースケースがあまりにも小さいことを認めます。私の興味は主にパフォーマンスです。この種のものは古い8&16-bitの日には日常的でしたが、知的運動として価値があると思います。おそらく、OSベンダーは、これを不可能にするOSサポートハードウェアを追加するために、チップベンダーに十分な圧力をかけていたと思ったが、人間の創意工夫によって、この禁止を回避する方法が見つかるだろう。ここでいくつかの興味深い答え。 –
OSが復活したときに問題を引き起こすものに踏み込めないように注意する必要があります。カスタムOSに再起動して元のOSに再起動できない理由は何ですか?パフォーマンスは、ほとんどあなたがしないことのための奇妙な理由のようです。 –