Отчасти само собой разумеется, что, если Вы копируете и восстанавливаете все, затем все будет там. Также cpio
нечетный выбор, tar
лучше.
Технически, "process1" не знает это. Существует ряд таблиц страниц для каждого процесса. Ядро знает, какой процесс оно переключит на и передвинет таблицы страниц. Часть этих таблиц страниц является ядром, которое совместно используется ВСЕМИ процессами (так, определенная часть диапазона адресов, обычно в диапазоне 0xc0000000 к 0xffffffff - хотя не ВСЕ те страницы будут присутствовать). Как правило, этот общий раздел достигается путем простого высказывания всего мнения наборов таблицы страниц в том же общем разделе "битов таблицы страниц ядра".
Совместное использование этого разделяет, позволяет вызовам ядра, прерываниям и прерываниям входить в ядро, неважно, какой процесс в настоящее время работает, или что делает тот процесс.
Точно то, как это работает, зависит от архитектуры, для которой создается ядро, но например в x86 (32 и 64 бита), CR3 является регистром, который указывает на текущую таблицу страниц. Таким образом для каждого процесса, существует указатель на таблицу страниц, и это загружается в CR3 как часть переключателя к новому процессу, точно так же, как значения регистра (по крайней мере, указатель вершины стека) восстанавливаются для процесса 1, когда это переключается в.
Вопрос о конфликте страницы, когда переключение контекста двух процессов, а не о адресе виртуальной памяти Пространство (адресное пространство виртуальной памяти уникально для каждого процесса, это не новости.). Эта ссылка на переполнении стека имеет точно такой же вопрос и точный ответ. https://stackoverflow.com/questions/16581490/how-does-kernel-know-which-pages-in-the-virtual-address-space-Correspons-to-As?lq=1