メモリアドレスが並べ替えられたり、誤って並べられたりする時期について

メモリアドレスが並べ替えられたり、誤って並べられたりする時期について

pppドライバがソートされていないアドレス(ソートされていないアドレスを指すポインタがある)にアクセスしようとしたため、カーネルエラーが発生します。ソートされていないアドレスが何を意味するのかわかりません。これは、複数ではない、4つではない、またはRAMの範囲を超えていることを意味しますか?自分のシステムに32ビット幅のバスがある場合、アドレスが指定されているとソートされているかどうかを確認できますか?

ベストアンサー1

簡単に言えば、ソートされていないアドレスは(通常)1バイトより大きく、読みたいデータ型のサイズに分割できない単純型(整数または浮動小数点変数など)です。

Address % Size != 0

次のメモリ範囲があり、4バイトを読み込んだとします。

                           +---------- 8 % 4 = 0, OK
                           |
                     ______+______
                    |             |
 ... 4   5   6   7   8   9   10  11  12  13  14  15  16  17 ...
 --+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--
 * | @ | @ | @ | @ | * | * | * | * | @ | @ | @ | @ | * | * | *
 --+---+---+---+---+---+---+---+---+---+---+---+---+---+---+--
                            |_______.______|
                                    |
                                    +--- 10 % 4 = 2, Unaligned

この問題の詳細については、次を参照してください。docs/unaligned-memory-access.txt

おすすめ記事