Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ АСУ ТП.doc
Скачиваний:
140
Добавлен:
28.05.2015
Размер:
869.38 Кб
Скачать

10.7. Языки программирования и операционные системы реального времени

10.7.1. Требования к языкам и операционным системам реального времени

Программирование в реальном времени требует специальных средств, которые не всегда встречаются в обычных языках последовательного программирования. Язык или операционная система для программирования в реальном времени должны пре­доставлять следующие возможности:

  • описание параллельных процессов;

  • переключение процессов на основе динамических приоритетов, которые могут изменяться, в том числе и прикладными процессами;

  • синхронизация процессов;

  • обмен данными между процессами;

  • функции, связанные с часами и таймером, абсолютное и относительное время ожидания;

  • прямой доступ к внешним аппаратным портам;

  • обработка прерываний;

  • обработка исключений.

Немногие языки обеспечивают все эти возможности. Большинство имеет лишь часть из них, хотя для определенных приложений этого оказывается достаточно. Неко­торые компании разработали специальные языки для поддержки своих собственных аппаратных средств. Эти языки не претендуют на универсальность и ориентированы скорее на конкретные ЭВМ и их интерфейсы. Обычно они базируются на существую­щих языках — FORTRAN, BASIC — с расширениями, включающими функции реаль­ного времени, о чем свидетельствуют их названия типа "Process BASIC" и "Real-time FORTRAN". Некоторые языки не поддерживают программирования в реальном вре­мени в строгом смысле, но они легко расширяются, например С и С++.

В 1970-е годы широкую поддержку получила концепция единого переносимого мно­гоцелевого языка программирования. В результате был разработан язык ADA. Его глав­ная идея состоит в том, что среда программирования, т. е. язык, должна быть полностью отделена от аппаратных средств. Программист не должен сталкиваться с деталями машинного уровня, а работать только в терминах абстрактных структур и типов данных.

Опыт показал нереалистичность такого подхода. Универсальные, сильно типизи­рованные языки программирования гарантируют определенный уровень надежности программы, но в то же время ограничивают гибкость. Быстрое развитие технических средств предъявляет новые требования, которые не могли быть предусмотрены в сущеествующих языках, и многие программисты чувствуют ограничения, используя не самые современные языки программирования. Цена надежности языка — слож­ность и громоздкость, а генерируемый при этом компилятором код — избыточен и малоффективен. Открытый язык типа С, основаный на ограниченном количестве базовых идей, обладает большей гибкостью и предоставляет опытному программисту больше возможностей. Не существует наилучшего языка - для каждого приложе­ния и среды необходимо подбирать свои средства и при этом учитывать квалификацию и предпочтения разработчиков.