Что такое функционирование в «Реальном масштабе времени»
Download 1.86 Mb. Pdf ko'rish
|
Луканов А.С. Системы реального времени 2020
ProcNto
также добавляет в микроядро вызов для создания новых нитей в контексте другого процесса, чего Neutrino самостоятельно делать не может, поскольку оно было сознательно лишено возможности манипулировать чужим адресным пространством. Аналогичные расширения ProcNto делает для обеспечения передачи сообщений между процессами, работающими в защищенных виртуальных адресных пространствах. 77 Neutrino также содержит специальную точку входа, через которую нити, исполняющиеся в адресном пространстве микроядра, могут передавать ему адреса функций. Затем микроядро вызывает эти функции со своим контекстом. Этот механизм используется менеджерами сети для того, чтобы выполнять манипуляции объектами микроядер на различных узлах от их собственного имени. Это и позволяет добиться полной прозрачности сетевого взаимодействия в QNX/Neutrino, поскольку исчезает разница между локальным и удаленным исполнением программы. Сеть Neutrino превращается в "виртуальный компьютер", позволяя создавать высокопроизводительные кластерные SMP-системы. Наконец, привилегированные нити могут определять и регистрировать в микроядре новые системные вызовы, расширяя его функциональные возможности. Управление процессами и памятью. Как уже отмечалось, управление процессами и памятью не является, строго говоря, функцией Neutrino – это функция менеджера процессов ProcNto, который, кроме этого, занимается поддержкой пространства имен ввода/вывода и еще рядом "мелочей". Однако обзор был бы неполным без рассмотрения данного вопроса. Прежде чем управлять процессами, необходимо иметь возможность загружать их с какого-либо носителя. С этой целью в состав ProcNto также входят "нить загрузчика" и "нить терминатора". Нить загрузчика обеспечивает загрузку исполняемых модулей в формате ELF, QNX4 и shell-скриптов. Формат ELF (известный также как Evil Linkage Format J) является для Neutrino стандартным, поскольку он обеспечивает ряд преимуществ, таких как поддержка динамического связывания, и, что очень важно для встроенных систем, совместим со спецификацией XIP (eXecute-In-Place), предусматривающей исполнение кода прямо из ROM, без загрузки в RAM. Нить терминатора обеспечивает "уборку мусора" после завершения процессов на тот случай, если они не смогли сделать это сами. 78 Еще одна функция ProcNto – поддержка виртуальной файловой системы, встраиваемой в двоичный загружаемый образ системы. Для встраиваемых систем, не требующих хранения данных, этот вариант очень привлекателен, поскольку он упрощает структуру системы, снижает требования к памяти и стоимость лицензии. И все же самое интересное – это управление памятью. Данный вопрос является достаточно болезненным, поскольку от его решения зависит очень многое. Решение, примененное в QNX, не было достаточно гибким. QNX всегда использует виртуальную память, что не позволяет делать этого на некоторых типах Intel- совместимых процессоров, довольно широко применяемых во встроенных сиcтемах, например производства National Semiconductor или AMD, поскольку они не содержат Paged-MMU (устройство управления виртуальной памятью). Кроме того, зависимость микроядра от специфичной для x86 аппаратуры MMU затрудняет перенос системы на другие платформы. В результате Neutrino принимает соломоново решение – предоставить выбор модели защиты памяти разработчикам. Код Download 1.86 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling