2017-10-24 8 views
1

mlock()関数を使って物理メモリに変数を格納させることが可能です。変数をどこにでも置くことができます(スワップ領域、ディスク)。物理メモリにはありません

void *buffer = malloc(buf_size); 
mlock(buffer, buf_size); 
// If there is no error when executing these instructions, 
// On First Write to buffer, the buffer will be stored in physical memory 

ただし、変数が物理メモリに決して存在しないようにする場合はどうすればよいですか。それは可能ですか?もしそうであれば、Linuxはこれをユーザー空間でどのように行うことができますか?

答えて

0

何かがディスクに書き込まれると、ディスクコントローラはファイルの内容をDMAで読み込みます。 DMAは、ダイレクトメモリアクセスの略で、であり、ここでは「メモリ」という用語が重要です。メモリにアクセスします。これはハードウェアで実装されているため、OSにも依存しません。

system("wget http://example.com/?x=2+2"); 

これはなく、あなたのPCのRAMに、私のウェブサーバ上4の値を持つ変数xを格納します。このような極端な例を除いて、私はどんな解決策も考えることはできません。

関連する問題