Возможно ли микроядро без MMU?

По следующей ссылке; https://www.openhub.net/p/f9-kernel Микроядро F9 работает на Cortex M, но серия Cortex M не имеет MMU. Мои знания о MMU и виртуальной памяти ограничены, поэтому у меня есть следующие вопросы.

  1. Как предотвращается видимость всей физической памяти для каждого процесса без MMU?
  2. Можно ли добиться изоляции с некоторыми настройками статической памяти без MMU. (с достаточным количеством оперативной памяти на чипе для запуска моего приложения и ядра, тогда просто разные жестко закодированные области памяти для моих ограниченных процессов). Но все же я не предотвратит ли это доступ?

person sniper    schedule 23.01.2017    source источник


Ответы (2)


В процессорах ARM Cortex-M отсутствует MMU, а в некоторых реализациях, таких как серия STMicroelectronics STM32F, есть дополнительный блок защиты памяти (MPU).

В отличие от других ядер L4, микроядро F9 разработано для сред только с MPU, оптимизировано для Cortex M3/M4, где Поддерживается модель архитектуры защищенной памяти ARMv7 (PMSAv7). Системное адресное пространство системы, совместимой с PMSav7, защищено MPU. Кроме того, доступная оперативная память обычно невелика (около 256 Кбайт), но с помощью бит-бэндинг.

Память, защищенная микропроцессором, разделена на набор областей, количество поддерживаемых областей ОПРЕДЕЛЕНО РЕАЛИЗАЦИЕЙ. Например, STM32F429 предоставляет 8 отдельных областей памяти. В PMSAv7 минимальный размер области защиты составляет 32 байта, а максимальный — до 4 ГБ. MPU обеспечивает полный доступ к:

  • Область защиты
  • Перекрывающаяся область защиты
  • Права доступа
  • Экспорт атрибутов памяти в систему

Несоответствия MPU и нарушения разрешений вызывают обработчик ошибок MemManage с программируемым приоритетом.

Управление памятью в микроядре F9 можно разделить на три концепции:

  1. пул памяти, который представляет собой область PAS с определенными атрибутами (жестко запрограммированными в таблице карты памяти).
  2. адресное пространство - отсортированный список fpages, связанных с определенными потоками.
  3. гибкая страница - в отличие от традиционных страниц в L4, вместо этого fpage представляет область MPU.
person jserv    schedule 05.02.2017
comment
Если адресное пространство разделено на задачи, то это не микроядро, верно? coz, например, скажем, задача вызывает как вызовы драйверов, так и вызовы ядра (одно и то же адресное пространство), тогда вызов драйверов все равно может повредить память ядра, поскольку у него есть доступ. Как предотвратить повреждение ядра другими модулями только с помощью защиты задач? - person sniper; 08.02.2017
comment
Изоляция программных сбоев (SFI) и микроядро — это действительно разные концепции. С точки зрения дизайна системы, мы должны предотвратить доступ драйвера устройства к области памяти, специфичной для задачи/потока, с помощью эффективного IPC или механизма совместного использования ресурсов на основе возможностей. - person jserv; 10.02.2017

Да, но ....

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

person Axel Heider    schedule 28.11.2018