Программирование систем реального времени
На архитектуру системы реального времени оказывает влияние язык программирования, который используется для реализации системы. До сих пор жесткие системы реального времени часто программируются на ассемблерных языках. Языки более высокого уровня также дают возможность сгенерировать эффективный программный код. Например, язык С позволяет писать весьма эффективные программы. Однако в нем нет конструкций, поддерживающих параллельность процессов и управление совместно используемыми ресурсами. Кроме того, программы на С часто сложны для понимания. Язык Ada изначально разрабатывался для реализации встроенных систем, а потому располагает такими средствами, как управление процессами, исключения и правила представления. Его средство рандеву (rendezvous) - отличный механизм для синхронизации задач (процессов) [63, 24, 4*]. К сожалению, первая версия языка Ada (Ada 83) оказалась непригодной для реализации жестких систем реального времени. В ней отсутствовали средства, позволяющие установить предельные сроки завершения задач, не было встроенных исключений для случая превышения предельных сроков и предлагался строгий алгоритм обслуживания очереди "первым пришел - первым вышел". При пересмотре стандартов языка Ada [23] главное внимание уделялось именно этим моментам. В пересмотренной версии языка поддерживаются защищенные типы, что позволило более просто реализовывать защищенные разделяемые структуры данных и обеспечивать более полный контроль при выполнении и синхронизации задач. Однако при программировании систем реального времени улучшенная версия языка Ada все-таки не обеспечивает достаточного контроля над жесткими системами реального времени.
Первые версии языка Java разрабатывались для создания небольших встраиваемых систем, таких, например, как контроллеры устройств и приборов. Разработчики Java включили несколько средств для поддержки параллельных процессов в виде параллельных объектов (потоков) и синхронизированных методов. Но поскольку в подобных системах нет строгих временных ограничений, то и в языке Java не предусмотрены средства, позволяющие управлять планированием потоков или запускать потоки в конкретные моменты времени. Поэтому Java не подходит для программирования жестких систем реального времени или систем, в которых имеется строгий временной график процессов. Перечислим основные проблемы Java как языка программирования систем реального времени.
1. Нельзя указать время, в течение которого должен выполняться поток. 2. Неконтролируем процесс очистки памяти – он может начаться в любое время. Поэтому невозможно предсказать поведение потоков во времени. 3. Нельзя определить размеры очереди, связанной с разделяемыми ресурсами. 4. Реализация виртуальной машины Java отличается для разных компьютеров. 5. В языке нет средств для детального анализа распределения времени работы процессоров.
В настоящее время ведется работа по решению некоторых из этих проблем и формируется новая версия языка Java для программирования систем реального времени [256]. Однако не совсем понятно, каким образом эту версию можно отделить от лежащей в ее основе виртуальной машины Java: свойство переносимости языка всегда конфликтовало с характеристиками режима реального времени.
Читайте также: A) Магнітоелектрична система. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|