2017-01-23 3 views
0

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

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

ответ

1

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

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

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

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

MPU несоответствие и нарушение прав доступа ссылаться на программируемый приоритет MemManage обработчик ошибок.

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

  1. памяти пула, который представляет собой область PAS с определенными атрибутами (HARDCODED в МОС таблице карты).
  2. адресное пространство - отсортированный список fpages, привязанных к определенным темам (-ам).
  3. гибкая страница - в отличие от традиционных страниц в L4, fpage представляют собой область MPU.
+0

Если адресное пространство разделено типом задачи, то это не микро-ядро. Например, можно сказать, что задача вызывает как драйверы, так и вызовы ядра (одно и то же адресное пространство), тогда вызов драйверов может по-прежнему повреждать память ядра, поскольку он имеет доступ. Как предотвратить повреждение ядра другими модулями только с защитой задач? – sniper

+0

Изоляция программного обеспечения (SFI) и микроядро - это действительно разные понятия. С точки зрения проектирования системы мы должны запретить драйверу устройства получать доступ к области памяти, зависящей от конкретной задачи/потока, с помощью эффективного IPC или механизма совместного использования ресурсов на основе возможностей. – jserv

Смежные вопросы