Я читаю об управлении памятью Linux. Я знаю, что
Ядро Linux отвечает за создание и поддержку таблиц страниц, но использует модуль управления памятью процессора (MMU), чтобы перевести обращения виртуальной памяти к процессу в соответствующие обращения к физической памяти.
Но я также знаю, что ядро может использовать некоторые свои функции для управления памятью, например virt_to_phys()
, virt_to_page()
, __pa()
,...
Пример:
static inline unsigned long virt_to_phys(volatile void *address)
{
return __pa(address);
}
используется для перевода виртуального адреса на физический адрес.
Я очень смущен ими. Пожалуйста, помогите мне показать отношения между переводом MMU и переводом ядра и отличить их?