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.