Как операционные системы изолируют процессы друг от друга? - PullRequest
0 голосов
/ 30 апреля 2020

Предполагается, что процессор находится в защищенном режиме:

Когда ядро ​​ring-0 устанавливает процесс пространства пользователя ring-3, какую структуру данных уровня CPU он должен изменить, чтобы указать, какое виртуальное адресное пространство этот спецификатор c процесс может получить доступ?

Он просто устанавливает бит привилегий всех других сегментов памяти в таблице глобальных дескрипторов на (Ring) 0?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

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

Таким образом, пока каждая структура процесса отслеживает свою собственную структуру таблицы страниц, единственной структурой данных уровня ЦП, которую вам придется изменить, является регистр CR3.

0 голосов
/ 30 апреля 2020

Похоже, что Глобальная таблица дескрипторов (GDT) предоставляет механизм сегментации, который может использоваться вместе с пейджингом, но теперь считается устаревшим.

При загрузке адреса каталога страницы в CR3 регистр управления, процесс Ring 3 ограничен линейной памятью, определяемой механизмом пейджинга. CR3 может быть изменен только с звонка 0:

enter image description here

В защищенном режиме 2 бита CPL в регистре CS указывают, какой звонок / уровень привилегий ЦПУ

Подробнее здесь:

...