Физический адрес адреса, возвращаемого kmalloc

Я немного запутался в адресах, которые мне возвращает kmalloc. Согласно карте виртуальной памяти, адреса, которые я получаю, находятся в ffff880000000000 - ffffc7ffffffffff диапазон, так что "прямое отображение всей физ. памяти". Как работает это отображение? Я уверен, что kmalloc не просто возвращает физический адрес.

1 ответ

Решение

Ты прав, kmalloc возвращает виртуальный адрес, а не физический. Карта памяти, с которой вы связаны, описывает карту виртуальной памяти, а не карту физической памяти.

Виртуальный адрес обычно преобразуется MMU в физический адрес при доступе к данным по адресу. То, на что преобразуется виртуальный адрес, зависит от карты памяти, указанной ядром.

Карта памяти, с которой вы связаны, показывает, как Linux выполняет сопоставление. Это говорит, если у вас есть виртуальный адрес между 0xffff880000000000 а также 0xffffc7ffffffffff, он отображается где-то в физической памяти (мы не знаем, где именно, и нам все равно, если мы не делаем DMA).

Другие вопросы по тегам