Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Древс Системы реалного времени технические и программные средства 2010

.pdf
Скачиваний:
237
Добавлен:
16.08.2013
Размер:
20.14 Mб
Скачать

Опасны для работоспособности систем пыль и песок. Попадая в подвижные части, они вызывают повреждения. Кроме того, пыль способствует увеличению электростатических зарядов, что приводит к росту помех, а в отдельных случаях к взрывам.

Кнаиболее характерным факторам воздействия биологической среды на конструкции систем относятся грибковые образования (плесень), особенно интенсивно развивающиеся при повышенной

влажности неподвижного воздуха (более 85%) и температуре от 20 до 30 0С. Некоторые виды насекомых, например, термиты, пожирают органические материалы, особенно изоляционные; в этом отношении опасны и грызуны.

Значительное влияние на работу систем оказывает радиоактивное излучение. Это влияние особенно сильно проявляется в воздействиях на материалы кристаллической структуры, воздух, изоляцию, стекло и электролиты. Радиация ионизирует воздух, уменьшает проводимость между точками монтажа и может нарушить нормальную работу систем.

Механические воздействия – ускорения, вибрации и удары могут действовать как отдельно, так и в совокупности. Амплитуда вибраций может составлять до нескольких десятков миллиметров на частотах от 5 до 150 Гц, ускорения – до 30g.

Квнутренним факторам относятся старение, износ, перегрев и паразитные связи.

Субъективные факторы – это факторы, связанные с особенностями обслуживания: условия хранения и эксплуатации, квалификация обслуживающего персонала, уровень профилактики и ремонта и условия работы операторов.

Технической основой специализированных ЭВМ являются промышленные компьютеры – изделия с повышенной устойчивостью

квоздействиям внешней среды. Для борьбы с пылью создают избыточное давление внутри системного блока, а всасывающие вентиляторы снабжают сменными пылеулавливающими фильтрами. В моделях для пультового монтажа применяется брызгозащита по лицевой панели. С вибрациями и ударами борются, применяя прочные шасси и корпуса, закрепляя платы расширения дополнитель-

261

ными амортизирующими скобами и размещая дисковые накопители на специальной виброударостойкой подвеске.

В клавиатурах предусматривается пылевлагозащита; ответственные кнопки типа «сброс» и «выключение питания» прячут за запираемыми на ключ дверцами.

Контрольные вопросы и упражнения

1.Нарисуйте структурную схему системы питания. Повторите назначение отдельных блоков.

2.Повторите требования к системе питания.

3.Почему опасно повышение и понижение напряжения питания относительно номинальных значений?

4.Почему габариты и вес импульсных стабилизаторов оказываются меньше, чем у обычных?

5.Как подразделяются системы реального времени в зависимости от режима эксплуатации?

6.Почему старение, износ, перегрев и паразитные связи относят к внутренним факторам?

7.Как изменяются условия эксплуатации для наземных, судовых, авиационных и космических систем?

8.Как изменяются требования, предъявляемые к системам разового действия, дежурным системам и системам непрерывного использования?

262

Рис. 10.1

10. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СИСТЕМ РЕАЛЬНОГО ВРЕМЕНИ

10.1. Операционные системы

Операционные системы реального времени (ОС РВ) характеризуются тем, что значение времени принятия решения используется как одна из переменных, от которых зависит результат. То есть при опоздании результатов они либо могут быть бесполезными, либо ущерб в результате опоздания может быть бесконечно велик. Основная задача операционных систем общего назначения – эффективное разделение ресурсов ЭВМ между несколькими одновременно выполняющимися программами. Операционные системы реального времени разрабатываются в расчете на наличие внешних источников данных. Основная задача ОС РВ – своевременно обработать запрос; все остальные аспекты функционирования ЭВМ отходят на второй план.

Напомним, что существуют системы «мягкого» и «жесткого» реального времени. Поэтому иногда говорят, что та или иная ОС «мягкая» или «жесткая». Нет «мягких» и «жестких» ОС. Одна и та же ОС РВ может лишь служить основой для построения таких систем.

По своей внутренней структуре ОС можно условно разделить на монолитные ОС, ОС на основе микроядра (модульные) и объ- ектно-ориентированные ОС.

В монолитных ОС (рис. 10.1)

все обрабатывающие программы сосредоточены вместе в едином процессе, которое исполняется в едином адресном пространстве.

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

263

следующие части: интерфейс между приложениями и ядром, собственно ядро и интерфейс между ядром и оборудованием (драйверы устройств). Интерфейс в таких системах играет двойную роль:

-управление взаимодействием функциональных задач с операционной системой;

-обеспечение непрерывности выполнения программ операционной системы.

Основное преимущество монолитной архитектуры – относительная быстрота работы по сравнению с другими архитектурами за счет написания значительных частей системы на языке ассемблера.

Недостатки монолитной архитектуры:

системные вызовы, требующие переключения уровней привилегий (от пользовательской задачи к ядру), должны быть реализованы как прерывания или специальный вид исключения, что сильно увеличивает время их работы;

ядро не может быть прервано пользовательской задачей; это может приводить к тому, что высокоприоритетная задача может не получить управления из-за работы низкоприоритетной;

сложность переноса системы на новые архитектуры процессора из-за значительных ассемблерных вставок;

недостаточная гибкость и сложность развития: изменение части ядра требует его полной перекомпиляции.

Поскольку в такой системе невозможно выполнение системных вызовов в то время, когда реализуется какой-либо поток ядра, режим реального времени невозможен.

Модульная (микроядерная) архитектура (рис. 10.2) является альтернативой классическому способу построения ОС. Она была разработана с целью убрать интерфейс между приложениями и ядром и облегчить модернизацию системы и перенос ее на новые процессоры. В микроядерных ОС в привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром. При такой структуре микроядро выполняет две основные функции:

-управление взаимодействием частей системы (например, менеджеров процессов и файлов);

264

- обеспечение непрерывности выполнения ядра ОС (то есть отсутствие переключения задач во время выполнения микроядра).

Рис. 10.2

Микроядерные ОС удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью (легкостью переноса с одной аппаратной платформы на другую), расширяемостью (добавление и изменение функций), надежностью (защита серверов ОС друг от друга) и создавая хорошие предпосылки для поддержания распределенных приложений. За эти достоинства приходится платить снижением производительности, что является основным недостатком микроядерной архитектуры.

В микроядерной архитектуре ядро отвечает только за базовые примитивы ОС (создание и уничтожение потоков, диспетчеризация и синхронизация потоков, поддержка механизма прерываний, часов и таймеров). Это действительно микроядро, так как его объем, например, в системе QNX, всего 12 Кбайт. Все остальные компо-

265

ненты системы: драйверы, файловые системы, стеки протоколов, пользовательские приложения – выполняются вне пределов ядра как отдельные процессы, каждый в своем защищенном адресном пространстве. Программы, реализующие эти сервисные функции, называются администраторами ресурсов. Все эти компоненты используют для общения друг с другом единый, четко детерминированный механизм – обмен сообщениями. Он образует между компонентами системы виртуальную «программную шину», позволяющую подключать к ней или, наоборот, отключать любой компонент на лету. Связь между микроядром и администраторами ресурсов осуществляется с помощью администратора процессов.

Недостатки модульной структуры фактически те же, что и у монолитной. Проблемы перешли с уровня интерфейса на уровень микроядра. Системный интерфейс по-прежнему не допускает переключения задач во время работы микроядра, только сократилось время пребывания в этом состоянии, проблемы с переносимостью ядра уменьшились (в связи с сокращением его размера), но остались.

Вобъектно-ориентированной ОС (рис. 10.3) все системные процессы распределены по отдельным администраторам, которые включаются менеджером прерываний и менеджером задач.

Объектная архитектура строится на основе объектовмикроядер. В ней интерфейс между приложениями и ядром отсутствует вообще. Взаимодействие между компонентами системы (микроядрами) и пользовательскими процессами осуществляется посредством обычного вызова функций, поскольку и система, и приложения написаны на одном языке. Это обеспечивает максимальную скорость системных вызовов. Фактическое равноправие всех компонент системы обеспечивает возможность переключения задач в любое время. Объектно-ориентированный подход обеспечивает модульность, безопасность, легкость модернизации и повторного использования кода.

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

266

имеющегося микроядра. Поскольку разные приложения разделяют одинаковые микроядра, то они должны работать в одном адресном пространстве. Следовательно, система не может использовать виртуальную память и поэтому работает быстрее, так как исключаются задержки на трансляцию виртуального адреса в физический.

Рис. 10.3

При описании работы программного обеспечения важное значение имеет понятие задачи. Задача – это набор операций, предназначенный для выполнения логически законченной функции системы. Задача конкурирует с другими задачами за получение контроля над ресурсами вычислительной системы. Различают две разновидности задач: процессы и потоки.

Процесс – это отдельный загружаемый программный модуль (файл), который во время исполнения имеет в памяти свои незави-

267

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

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

Процесс является, по сути дела, контейнером потоков и содержит как минимум один поток.

Кпреимуществам потоков можно отнести:

-экономию ресурсов как внешней, так и внутренней памяти, так как множество потоков может размещаться внутри одного ЕХЕ-модуля;

-использование потоками общей области памяти, что позволяет эффективно организовать межзадачный обмен сообщениями (достаточно передать указатель на сообщение). Процессы не имеют общей области памяти, поэтому ОС должна либо целиком скопировать сообщение из области памяти одной задачи в область памяти другой (что для больших сообщений весьма накладно), либо предусмотреть специальные механизмы, которые позволили бы одной задаче получить доступ к сообщению из области памяти другой задачи;

-меньше время переключения между задачами-потоками, чем между задачами-процессами, так как, как правило, контекст потоков меньше, чем контекст процессов;

-значительное упрощение использования программотладчиков, так как все потоки, а иногда и само ядро ОС РВ размещаются в одном ЕХЕ-модуле.

Кнедостаткам потоков можно отнести то, что:

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

268

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

- потоки имеют доступ к областям данных друг друга, это может привести к ситуации, когда некорректно работающий поток способен испортить данные другого потока. В отличие от этого процессы защищены от взаимного влияния, а попытка записи в «не свою» память приводит, как правило, к возникновению специального прерывания по обработке «исключительных» ситуаций.

10.2. Основные свойства задач

Как правило, вся важная с точки зрения ОС информация о задаче (имя и номер задачи, верхняя и нижняя границы стека, ссылка на очередь сообщений, статус задачи, приоритет и т.п.) хранится в унифицированной структуре данных – управляющем блоке (Task Control Block – TCB).

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

истатической приоритетностью. В первом случае приоритет задач меняется в процессе исполнения, во втором – жестко задается на этапе разработки или во время начального конфигурирования системы.

Контекст задачи набор данных, содержащий всю необходимую информацию для возобновления выполнения задачи с того места, где она была ранее прервана. Часто контекст хранится в ТСВ

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

269

исполнению. Такое переключение контекстов и является, по существу, основным механизмом ОС РВ при переходе от выполнения одной задачи к выполнению другой.

Состояние (статус) задачи режим использования задачи: активная задача – задача, выполняемая системой в данный момент времени; готовая задача – задача, готовая к выполнению и ожидающая у планировщика своей очереди; блокированная задача – задача, выполнение которой приостановлено до наступления определенных событий (освобождение ресурса, поступление ожидаемого сообщения, завершение интервала ожидания и т.п.).

Пустая задача – задача, запускаемая самой ОС, когда в системе нет готовых для выполнения задач. Пустая задача запускается с самым низким приоритетом и, как правило, представляет собой бесконечный цикл «ничего не делать». Наличие пустой задачи представляет ОС удобный механизм отработки ситуаций, когда нет ни одной готовой к выполнению задач.

Как правило, многозадачные ОС позволяют запускать несколько копий одной и той же задачи. При этом для каждой такой копии создается свой ТСВ и выделяется своя область памяти. В целях экономии памяти может быть предусмотрено совместное использование одного и того же исполняемого кода для всех запущенных копий. В этом случае программа должна обеспечивать повторную входимость (реентерабельность). Кроме того, программа не должна использовать временные файлы с фиксированными именами и должна корректно осуществлять доступ к глобальным ресурсам.

Повторная входимость (реентерабельность) позволяет без негативных последствий временно прервать выполнение какой-либо функции или подпрограммы, а потом вызвать эту функцию или подпрограмму снова. Частным случаем реентерабельности является рекурсия, когда тело подпрограммы содержит вызов самой себя. Классическим примером нереентерабельности является DOS, а типичной причиной нереентерабельности служит использование глобальных переменных.

Предположим, что у нас есть функция, реализующая запись на диск, и пусть она использует глобальную переменную WRITE_SECTOR, которая устанавливается в соответствии с пара-

270