1

qemu -enable-kvm の上で Linux ゲストを実行しています。既知の物理メモリの場所を使用して、Linux と qemu の間にバック チャネルを作成しようとしています。カーネルが決して誰にも割り当てないメモリ アドレスを使用するために、1024M 物理 RAM を使用してゲストを起動しました。ゲストで、2GB 番目のバイト (2*1024*1024*1024) にアクセスしようとしています。カーネルを再コンパイルすると、新しいカーネルで再起動できなくなります。

私のコードは次のとおりです..

/** in context_switch() function of  kernel/sched.c */
#define PID_ADDR ((int *)((unsigned long)2 * (unsigned long)1024 * (unsigned long)1024 * (unsigned long)1024))
int* pid_addr = phys_to_virt(PID_ADDR);

*pid_addr = next->pid //next is the task-struct ptr of the next process that is going to run.

ゲストに割り当てられた物理メモリを kvm がどのように使用するか説明できますか??

4

0 に答える 0