Каждый процесс будет иметь набор таблиц страниц, которые он использует. На x86 это означает каталог страниц с некоторыми таблицами страниц. Адрес к каталогу страницы будет в регистре CR3. Каждому набору таблиц страниц будет сопоставлено ядро (с разрешениями ядра), поэтому при выполнении системного вызова ядро может получить доступ к своим собственным страницам. Пользовательские процессы не могут получить доступ к этим страницам. Когда вы делаете переключение контекста, вы меняете адрес в регистре CR3 на таблицы страниц процесса, который будет выполняться. Поскольку у каждого процесса свой набор таблиц страниц, у каждого из них будет свое представление о памяти. Чтобы убедиться, что никакие два процесса не имеют доступа к одной и той же физической памяти, у вас должен быть какой-то менеджер физической памяти, который можно запросить для совершенно новой области памяти, которая еще не отображена ни в одной другой таблице страниц.
Таким образом, пока каждая структура процесса отслеживает свою собственную структуру таблицы страниц, единственной структурой данных уровня ЦП, которую вам придется изменить, является регистр CR3.