を使用すると、shmget
あるshmat
プログラムに保存されているデータに別のプログラムからアクセスできます。コードの要点は次のとおりです。
key=ftok("shared.c",'c');
shmid=shmget(key,1024,0644|IPC_CREAT);
data=shmat(shmid,(void *)0,0);
printf("Enter the data");
gets(data);
同様に、別のプログラムを作成してshmat
それを使用してデータにアクセスできます。
さて、ホストOSからアクセスする方法を知りたいです。ホストメモリでは共有メモリIDが異なるためshmat
動作しません。ホストから共有メモリにアクセスするには?
私たちはこれを行うことができますか?我々は、ハイパーバイザーのすべてのオペレーティングシステムに対して論理アドレスを物理アドレスにマッピングするページテーブルがあり、ハイパーバイザの物理アドレスをホスト物理アドレスの物理アドレスにマッピングするpmapテーブルがあることを知っています。 、論理ゲストアドレスをホスト物理アドレスにマッピングするシャドウページテーブルもハイパーバイザーに存在します。オペレーティングシステムに合ったシャドウページテーブルまたはページテーブルにアクセスする方法はありますか?
ベストアンサー1
実際にはそうすることができますが、組み込みソフトウェア開発の経験が必要であり、ホストとゲストが仮想PCIデバイスを使用できるようにすることによって達成される仮想マシン間通信の概念を使用できます。以下でいくつかの詳細を確認することもできます。 [アップデート]https://github.com/qemu/qemu/blob/master/docs/specs/ivshmem-spec.txt
役に立ったことを願っています!ありがとう