いくつかのプログラムを実行すると、仮想アドレスは常に4の倍数(32ビットの仮想アドレスを仮定)であることに気付きました。例: xfff58f80 0xfff58f84 xff86c930 0xff86c934 ... その差は常に4です: int main()
{
int a = 7;
int b = 10;
printf("%p %p", &a, &b);
}
できるだけ多くの初期化されていないメモリをダンプするC/C++プログラムを作成しようとしています。 プログラムはローカルユーザー、つまりユーザーモードで実行する必要があります。 それはmalloc関数を使用して動作しません: Why does malloc initialize the values to 0 in gcc? 目標は、ランダム性のシードとしてこのデータを使用することではありません。
メインメモリにアクセスするために仮想アドレスを物理アドレスに変換する方法を理解しています。私はまた、キャッシュメモリがどのように機能するかも理解しています。 私の問題は、2つの概念をまとめて、プロセスがメモリにアクセスする方法と、キャッシュミスが発生した場合に起こることを大きく理解することです。ので、私は私を助けるこの図は、次の質問を持っている: click to see the image (a