Linuxカーネルスケジューラを変更して、既知の物理メモリの場所にある次のプロセスのPIDを表示します。 mmapはユーザー空間プログラムに使われていますが、ioremapはページをキャッシュ不可能なものとしてマークし、プログラムの実行を遅くします。私は、既知の物理メモリにすばやく書き込むことを望みます。 phys_to_virtは私が実現可能と考えるオプションです。別のテクニックのアイデア。ioremapやmmapを使わずにLinuxカーネルのキャッシュ可能な物理アドレスに書き込む
PS:私はqemuの上にこのlinuxカーネルを実行しています。 qemuはゲストカーネルが送信した情報を読み取るために物理アドレスを使用します。デバイスにアクセスするたびにこのIOデバイスをサポートするデバイスコードが呼び出されるため、既知のIOポートへの書き込みは実行できません。
EDIT:pidの物理アドレスの場所を安全にしたい。カーネルが使用している物理アドレスがどのプロセスにも割り当てられていないことを確認する方法を教えてください。私の知る限りでは、ioremapはページをキャッシュ可能とマークし、そのためにはあまり役に立ちません。
しかし、kmallocは私に常に同じ物理アドレスを与えません。 qemuでは、私は既知の物理アドレスを想定しています。エミュレートされたioデバイスを使ってpidの物理アドレスを何とかqemuに伝えることができれば、私はまだあなたのソリューションを使うことができます。既知の物理アドレスを使用する方法を教えてください。 kmalloc/reserve(物理アドレス)のようなもの? –
私の編集した回答を参照してください... – Roland