В настоящее время я пытаюсь выяснить, как ядру Linux удается предотвратить удаление выделенных областей памяти в распределителе мембран при настройке партнера и распределителя slab.
Пример: в этом вопрос здесь , ответ объясняет, что массив struct page
s выделяется с помощью распределителя памяти (alloc_node_mem_map
).Однако в функции page_alloc_init_late
в этой конкретной строке ядро освобождает всю выделенную память от распределителя памяти.
Поскольку struct page
s доступны практически в любое время,ядро должно было бы перераспределить все структуры страниц в какой-то момент, прежде чем освободить все выделенные блоки.Как именно ядро все еще хранит ссылки на выделенные структуры страниц и где это происходит?