При «разветвлении» процесса, почему ядро ​​Linux копирует содержимое таблицы страниц ядра для каждого вновь созданного процесса?

Обсуждение ниже относится к 32-битному ядру ARM Linux.

Я заметил, что в процессе разветвления ядро ​​Linux копирует содержимое таблицы страниц ядра (таблицы основных страниц, т.е.swapper_pg_dir) в таблицу страниц каждого вновь созданного процесса.

Вопросы:

Зачем это делать?Почему все процессы не могут совместно использовать одну копию таблицы страниц ядра (более высокая часть 1G для 32-битной ARM Linux) вместо memcpy таблицы страниц подкачки для каждого вновь созданного процесса?Это пустая трата памяти?

Связанный исходный код («->» обозначает вызов функции):
do_fork -> copy_process -> copy_mm -> dup_mm -> mm_init -> mm_alloc_pgd -> pgd_alloc ->

/*
* Copy over the kernel and IO PGD entries
*/
init_pgd = pgd_offset_k(0);

memcpy(new_pgd + USER_PTRS_PER_PGD, init_pgd + USER_PTRS_PER_PGD,
       (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t));

Ответы на вопрос(2)

Ваш ответ на вопрос