誰かが割り当てメモリアドレスへの書き込みを検出する方法を知っているかどうか尋ねたい.
最初に、sigaction と一緒に mprotect を使用して、書き込み/読み取り操作が行われたときにセグメンテーション違反を強制しました。
いくつかの中で、このアプローチの2つのマイナス要因:
- セグメンテーションフォールトを通過するのが難しい
- mprotect のメモリ アドレス パスは、ページ境界に揃える必要があります。つまり、このメモリ アドレスを単純な malloc で処理することはできません。
問題を明確にするには:
クラスター環境用に C でアプリを構築します。ある時点で、ローカルホストでバッファを呼び出してデータを割り当てるメモリを割り当てます。このバッファはリモート ノードに送信され、同じ手順になります。同じ時点で、このバッファはリモート ノードで書き込み/読み取りが行われますが、いつ (DMA を使用してバッファの書き込み/読み取りを行うか) はわかりません。ローカル ホストには、バッファの変更について通知する必要があります。上で言ったように、私はすでにいくつかのメカニズムを使用しましたが、それらのどれも何らかの能力でそれを処理することはできません. 今のところ、アイデアが欲しいだけです。
ここでのさまざまなアイデアは大歓迎です。
ありがとう