Ограничение доступа к памяти - PullRequest
0 голосов
/ 17 ноября 2018

Как мы на самом деле ограничиваем доступ к памяти машины, если в программном коде есть инструкция, которая работает с прямыми адресными битами, и порядок процессора для доступа к ограниченной области?

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

1 Ответ

0 голосов
/ 25 декабря 2018

Для управления привилегиями обычно требуется аппаратная поддержка в ЦП. В случае программной эмуляции эмулятор будет необходим для обеспечения соблюдения надлежащих уровней привилегий.

MMU - это компонент, который (помимо прочего) контролирует доступ к памяти. Некоторые области памяти могут быть помечены как читаемые, записываемые и исполняемые. MMU проверит все обращения к памяти и вызовет какую-то ошибку при несанкционированном доступе. Это предотвращает чтение / запись / выполнение ЦП в произвольных местах памяти.

Многие процессоры имеют разделение привилегий, встроенное в сам процессор. Он будет иметь концепцию уровней привилегий (например, звонки в x86, биты режима в ARM) и проверяет, разрешена ли выполняемая инструкция в пределах текущего уровня привилегий. Это не позволяет коду, выполняющемуся в непривилегированном режиме, выполнять привилегированные инструкции.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...