Сравнение производительности ОЗУ в режиме пользователя и в режиме ядра

В отличие от режима ядра, режим пользователя использует трансляцию адресов из-за использования виртуальной памяти. Таким образом, кажется, что должен существовать компромисс для перевода адресов памяти, когда происходит доступ (даже если нет пропуска TLB).

Поскольку режим ядра обращается к оперативной памяти напрямую без какой-либо трансляции адресов, есть ли какой-либо выигрыш в производительности в оперативной памяти, если мы запускаем код в режиме ядра, а не в режиме пользователя?

1 ответ

Есть ли какой-либо выигрыш в производительности в ОЗУ, если мы запускаем код в режиме ядра, а не в режиме пользователя?

Возможно нет. MMU всегда используется. Он просто настроен по-разному для режима ядра и пользовательского режима (поэтому "преобразование адреса" для кода ядра может быть некоторой функцией "идентификации").

А соображения о кеше процессора важнее, чем MMU. потеря кеша может стоить несколько сотен циклов или наносекунд (чтобы получить данные из ваших модулей ОЗУ). Кроме того, переключение контекста является дорогостоящим.

Но вам нужно сравнить. Смотрите окончательный разделОтветы на странице P.Norvig.

(действительно, адресное пространство ядра не имеет каких-либо серьезных сбоев страниц; я думаю - но на самом деле не знаю - что на некоторых аппаратных средствах оно может иметь незначительные сбои страниц)

Читайте также о подходе Unikernel.

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