Густав Олссон, Джангуидо Пиани - Цифровые системы автоматизации и управления (1087169), страница 113
Текст из файла (страница 113)
Стиль программирования прицбретаег особое значения при сопровождении программ: плохо написанная и эткомментированная программа на С вЂ” такая же загадка, как и ассемблерский код. язык С регламентирован международным стандартом !80 9899. Язык С предпочтителен для написания программ с обращениями к функциям оперцгнонной системы, так как он обладает отличной совместимостью между логикой определения переменных и синтаксисом обращения к системе.
Поскольку наиболее распространенные операционные системы в приложениях автоматического управления процессами основываются на 1!Н!Х, язык С является почти вынужденным выбором сри разработке программ. Почти все примеры в современной технической литературе представлены на С, а для примеров в настоящей книге принят Разса(-подобный синцхсис, посколысу по сравнению с Сего легче читать неспециалистам. Язык С+-ь представляет собой значительно более могцный инструмент, чем С, на эснове которого он создан. В Сз.э значительно улучшена абстракция данных с помоцыо понятия класса, похожего на абстракгный тип данных с четким разделением между данн нами и операциями.
Классы С+в значительно легче использовать на практике, зем аналоги гные понятия в других языках, поскольку Сз-+ поддерживает объектно'Риентированное программирование и поэтапное уточнение типов данных. Главным преимуществом языка С+з-является его способность поддерживать разМотку легко используемых библиотек программ.
Программирование в реальном 'ревени непосредственно в Сев не поддерживается, но может быть реализовано с ~овощью специально разработанных программных модулей и библиотек классов. 10,7 4 ВАВ1О Язык ВАЯС является простейшим среди языков программирования высокого уг "ня. Этот язык был создан в 1964 году для поддержки интерактивной разработки Фовн,— "Рог '!замм с удаленных терминалов. Из-за своей простоты ВА81С часто критикуется зцыт„ ными программистами, и несомненно, что этот язык не является хорошим средцвом и для создания болыцих структурированных систем.
С другой стороны, небольеве П хзь!ка "риложения на ВЛ81С можно разработать значительно быстрее, чем на других ках, Кроме того, ВЛЗ!С имеется почти па всех мини- и микрокомпьютерах. ц . Программа на ВА8!С может компилироваться, но чаще опа интерпретируется, т. е. ьххцая команда транслируется в машинные колы только в момент ее выполнения. 1Л8 !С улобен для разработки неболыцих приклалоых задач в составе крупных сисцо его не следует использовать для приложений порядка 500 — 1000 строк или бо- !0 7, языки программирования и операционные системы 459 Рпава 10, Программирование систем реального врем 458 лее.
Тем не менее ВА81С является наилучшим средством для непрофессионал „ х программистов, которым тре у буется быстро решить частную задачу. Командные основанные на ВА81С, ются во многих системах промышленной автоматики О , име применяются для написания р н я простых программ управления без обращения к б сложным средствам программи раммирования, требующим компиляции и загрузки. 10.7.5.
РОВТР(А(з! ЕОКТКА(л( — это первый язык программирования высокого уровня, которыя, и видимому, спосо ствовал, о б л, более чем какой-либо другой язык, распространению „ практическому применению нению ЭВМ. Выпушенный в !957 году, он до сих пор щиро используется, в осо енности дл б ти для математических вычислений. В целом ЕОКТКАл( имеет ограниченные возможно , меж ности определения типа, весьма сложный способ работы с нечисловьтми данными и не с и не содержит многих важных функций языков реального времени, чтобы его серьезно ассма но рассматривать для этой цели. Новые версии БОКТКАК заимствовали некоторые возмож с.
можности из других языков и поддерживают более развитые структуры данных. этом смы . В ом смысле различия между ГОКТКАЫ и другими языками сглаживаются, Благода я том что язык имеет устойчивое применение в научных приложениях, иезедко данные в системах реального времени обрабатываются сушествующиыа редко данные в системах ГОКТКА)л(-п ограммами, а новые программы анализа и с ут. и статистики пип~утся ва ЕОКТКАЫ. В подобных случаях основной проблемой является координация передача икл ными модулями, иапиинформации з между базами данных реального времени и пр ад,, у пе ационнойсистесанными на ЕОКТКАЫ. Такая координация обычно выполняется операци в ст оиств или модулеина мой.
ГОКТКАЫ не рекомендуется для написания драйверов устройств или м о ятд еязыки. уровне операционной с ой системы, так как для этой цели лучше подход руги 10.7.6. Рааса( и Мог(и1а-2 ласом Ви том (Ыйг1ацз 'ллг(гг(з) в 1971 году Рааса! был разработан швейцарцем Николасом иртом (. ка д к идактический язык для обучения хорош " ей технике программирования.
в ь е, льз ется во мзотро перерос свои первоначальные р, е амки и в настояшее время испо у ВА81С, основав аз жестве разнообразных приложений. Успех а ех Разса!, как в случае н ши око исраспространении микро- и персональных р ных компьютеров, на которых он широк специально пользуется.
Язык Мог(п!а-2 был разработа ' б тан тем же автором в 1975 году спев слительных сис' для программирования встроенных промы смышленных и научных вычислитель и ст ктуре, хо™ Мойц1а-2 весьма похожи по стилю и струк тем реального времени. Раэса1 и Мо ц м ф нкций и синтаксических ко нструкци Мос(ц1а-2 обладает большим количеством фу ется в огра' В Рааса! и Мог(ц!а-2 предполагается, что р р что п ог аммист постоянно остаетс й тств ет реально ог аммой, что совсем ие соответствует Р '. ниченной среде, предоставляемой про р о ые программ ования несколько выше, если некоторые п практике. Гибкость их использова й айверы устройств, обраоотчики прерь для специальных приложений (драй Р б .
Оба языка поддерживают подключение внеш . б . 1 . М й 1 -2 вляются хорошим средством для рк р саны наязыкеассем лера. а з абот леи на ассемблер . 1 . М . б е. Рааса(иМо ца- я иы еииых систем, но пе подходят для сложны пр х вриложеиий в распределен очи аз ия на структуру делает программы хорошо еииж гомпью р злв фактором для последующего сопровожден таемыми, что является существенным факто о д. 10.7.7. Операционная система 0Й(Х Операционная система 1)Х1Х представляет собой многозадачную, многопользовательскую операционную систему и является в настоящее время одной из наиболее вспрострапенных в мире.
Она была первоначально разработана в 1970-е годы в лтх,Т ВеП ЕаЬогагог(ез, Особое внимание к переносимости, интерфейс пользоватея построенный на немногих базовых принципах, и возможность объединения различных 1ЛлПХ-систем в сети независимо от аппаратной платформы очевидным образом способствовали успеху и распространению 1)Ы1Х.
С момента своего появления система 1Л~11Х непрерывно развивалась и в настояв!ее время существует в нескольких модификациях. Основными ее распространителями являются компании АТйТ ВеП (.аЬогагог!ез и Вег(ге1еу 8ойзчаге 0(зьВЬпгюп. Почти все производители вычислительной техники предлагают НЫ1Х либо как коммерческий продукт третьих фирм, либо как специально адаптированную версию для собственной аппаратной платформы. Некоторые специальные вредложения отличазотся скорее особенностями лицензирования, а не различием в выполняемых ими функциями.
Кроме того, для сохранения савместилюсти и переносимости версии 1ЛлПХ разных производителей не могут слишком сильно отливаться друг от друга. В ()Ы1Х были введены средства, которые впоследствии были позаимствованы другими операционными системами. На базе П(л(1Х была разработана операционная система 08Р/! (Раздел!0.7.8), а многие функции были включены в лзГ(пс(озгз ЫТ (рзздел 10.7.9), УН1Х также явилась основной базой для разработки важных коммуникационных интерфейсов, в частности протокола ТСР/1Р 1раздел 9 4.9) и протоком пользовательского терминала Х Ю(пс(овг 1раздел 11.6). ()Ы1Х состоит из небольшого ядра, управляющего системными ресурсами гпровессор, память и ввод/вывод), а остальная часть процедур операционной системы, и в частности управление файловой системой, работают как пользовательские процесвьь Типичная операционная система 1) Ы1Х содержит 10 000-20 000 строк на языке С "!000-2000 строк машинно-ориентированных программ на ассемблере, которые вззрабатываются отдельно для каждой аппаратной платформы.
Ядро представляет 'сбой единую резидентную программу размером от 100 Кбайт до 1 Мбайт в зависи"всти от платформы и выполняемых функций. При переносе системы ()(л(1Х на коих ветиую платформу требуется, вообще говоря, переписать заново только машиннозав 'ввисимую часть ядра. Это означает, что 1ЗН1Х может работать на многих '"паратных платформах с идентичным системным интерфейсом.
Ядро.1)Ы!Х имеет недостаточно продуманную структуру. Это следствие ее быстизго успеха и распространения, поскольку каждая новая версия должна была быть сва аместима с предыдущими, Первоначально система ПЫ1Х была разработана как чног огопользовательская, а не для приложений реального времени. Из-за того что под""о Рограммы операционной системы работают как пользовательские процессы, но с ваи ивысшим приоритетом, назначенным системой, невозможно прерывать также те вас стсмные вызовы, выполнение которых занимает много времени, что увеличивает вре Рвмя реакции системы.
Это явля~тел сугцествениым недостатком для задач реальво го времени, особенно управляел'ых "Рерывапиями. В ()Х1Х используется довольвв в сложное описание контекста "'г увеличивает время переключения процессов. а, что вел ((3-за того что в 1)Ь(1Х все оперев"и каналом построены на основе переключения 480 Глава 10. П рограммирование систем реального «роцессов, применение этогоиеханизма для связи между процессами в прило . женин «сального времени может приводить к задержкам. Стандартно процессы в 1!19!Х протекают с разделением времени.
Для того, чтобы зать всем процессам возможность исполняться, применяется динамическое р "«ред« ,"ение приоритетов, Процессу, ггвтовому для исполнения, сначала присваивзе сн его номинальный приоритет. Во время исполнения значение этого приоритета ум ныпз пся до тех пор, пока он не станов ится меньше приоритета следующего из ожидз, юв«н« «роцессов, который после этого выбирается для исполнения. В результате прщ! ессы с галсе высоким начальным приоритетом получают большую полю процессорног~ о нрн. «ени, и при этом все процессы в«е1«иолы чески исполняются. Системные абра« «ннхронизированы с вызывающим процессом — он должен ждать, пока запроше «перация пе выполнится и ему не будет возвращено управление. Важной особенностью, реанизованной в 1Л~1Х, является одинаковая трактов«а з !стройств. Внешние устройства в вола/вы вода рассматривщотся как файлы.