Защита памяти без MMU - PullRequest
       1

Защита памяти без MMU

6 голосов
/ 28 августа 2011

Хотелось бы узнать, как можно защитить память без поддержки MMU.Я пытался гуглить, но не видел никаких полезных статей или исследований по этому вопросу.А те, которые имеют дело с этим, имеют дело только с ошибками, такими как неинициализированные указатели, а не повреждение памяти из-за мягкой ошибки, то есть из-за аппаратного временного сбоя, повреждающего инструкцию, которая записывает в область памяти.* Причина, по которой я хочу это знать, заключается в том, что я работаю на проприетарной многоядерной платформе без какой-либо защиты памяти.Теперь мой вопрос: можно ли использовать программное обеспечение для защиты памяти, особенно для диких записей из-за программных ошибок (в отличие от ошибок программиста).Любая помощь в этом была бы очень признательна.

Ответы [ 4 ]

5 голосов
/ 28 августа 2011

Если вы ищете защиту памяти во время выполнения, единственной опцией является аппаратная поддержка. Аппаратные средства - единственный способ вмешаться в плохой доступ к памяти, прежде чем это может привести к повреждению. Любое программное решение будет уязвимо к тем самым ошибкам памяти, от которых оно пытается защититься.

С программным обеспечением вы могли бы реализовать схему проверки / обнаружения. Вы можете периодически проверять части памяти, которые не должны иметь доступ к запущенной в данный момент программе, и видеть, изменились ли они (возможно, путем CRCing этих областей). Но, конечно, если мошенническая программа повреждает область, в которой хранятся контрольные суммы, или там, где хранится код программы проверки, все ставки отменяются.

Даже это решение для проверки программного обеспечения было бы скорее средством отладки, чем постоянной защитой во время выполнения. Вполне вероятно, что устройство без MMU - это небольшое встроенное устройство, у которого не будет запасных циклов для постоянной проверки памяти устройства.

Обычно устройства без MMU предназначены для запуска одной программы без ядра или чего-либо еще, поэтому защищать нечего. Если вам нужно запустить несколько программ и вы чувствуете, что нуждаетесь в защите, вам, вероятно, понадобится более совершенное аппаратное обеспечение, которое поддерживает требуемые функции.

2 голосов
/ 28 августа 2011

Если вам нужна защита памяти, реализованная программным обеспечением, вам потребуется поддержка вашего компилятора и связанных с ним библиотек.Я ожидаю, что на этой платформе есть только один компилятор, поэтому вам следует обратиться к поставщику.Я бы не надеялся на положительный ответ.Даже если бы у них были такие инструменты, я бы ожидал, что производительность защиты программной памяти будет неприемлемой.

1 голос
/ 05 октября 2013

MMU меньше систем присутствуют в нескольких встроенных решениях.

Память управляется кодом ядра.Вся память (куча) разделена на списки кучи различных размеров (списки кучи могут иметь размеры 4 байта, 8 байтов, 16 байтов ... до 1024 байтов), и к каждому блоку кучи присоединен заголовок, который сообщает,конкретный блок кучи берется или нет.Таким образом, когда вам нужно назначить новый блок кучи, вы можете просмотреть списки кучи и увидеть, какие блоки кучи свободны, и можете назначить их запрашивающему приложению.И то же самое происходит, когда вы освобождаете блок кучи определенного размера, заголовки этого блока обновляются, чтобы отразить, что он был освобожден.

Теперь эта реализация должна позаботиться о сценарии, когда приложениезапросил определенный размер блока кучи, и этот размер списка кучи заполнен.В этом случае вы разбиваете блок из следующего размера списка кучи или объединяете блоки кучи меньшего размера и добавляете его в запрошенный список кучи.

Реализация намного проще, чем кажется.

0 голосов
/ 10 июля 2012

Зависит от того, какая платформа приложения будет работать.Существует технология под названием Type-Safe Language (например, ATS), которая может защитить от программных ошибок.И такие языки могут иметь хорошую производительность (например, снова ATS).

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