
- •2. Ядра и операционные системы реального времени
- •2.1. Задачи, процессы, потоки
- •2.2. Основные свойства задач
- •2.3. Планирование задач
- •2.4. Синхронизация задач
- •2.5. Тестирование
- •2.6. Можно ли обойтись без ОС РВ?
- •3. Обзор некоторых операционных систем реального времени
- •3.1. Linux реального времени
- •3.2. Операционные системы реального времени и Windows
- •3.3. Операционная система QNX
- •3.4. Проект Neutrino
- •4.1. Организация промышленных систем
- •4.2. Аппаратная архитектура
- •4.3. Стандарты шин
- •4.4. Технологии VME и PCI
- •4.5. Мезонинные технологии
- •4.6. Полевые системы
- •4.7. Программное обеспечение промышленных систем
- •4.8. Управление производством
- •Часть 2. ПРОЕКТИРОВАНИЕ СРВ
- •5. UML проектирование систем реального времени
- •5.1. Объектно-ориентированные методы и UML
- •5.2. Метод и нотация
- •5.3. Системы и приложения реального времени
- •6. Обзор нотации UML
- •6.1. Диаграммы UML
- •6.2. Диаграммы прецедентов
- •6.3. Нотация UML для классов и объектов
- •6.4. Диаграммы классов
- •6.5. Диаграммы взаимодействия
- •6.6. Диаграммы состояний
- •6.7. Пакеты
- •6.8. Диаграммы параллельной кооперации
- •6.9. Диаграммы развертывания
- •6.10. Механизмы расширения UML
- •7.1. Среды для параллельной обработки
- •7.2. Поддержка исполнения в мультипрограммной и мультипроцессорной средах
- •7.3. Планирование задач
- •7.4. Вопросы ввода/вывода в операционной системе
- •7.6. Технология World Wide Web
- •7.7. Сервисы распределенных операционных систем
- •7.8. ПО промежуточного слоя
- •7.9. Стандарт CORBA
- •7.10. Другие компонентные технологии
- •7.11. Системы обработки транзакций
- •8. Разбиение на задачи
- •8.1. Вопросы разбиения на параллельные задачи
- •8.2. Категории критериев разбиения на задачи
- •8.3. Критерии выделения задач ввода/вывода
- •8.4. Критерии выделения внутренних задач
- •8.5. Критерии назначения приоритетов задачам
- •8.6. Критерии группировки задач
- •8.7. Пересмотр проекта путем инверсии задач
- •8.8. Разработка архитектуры задач
- •8.9. Коммуникации между задачами и синхронизация
- •8.10. Спецификация поведения задачи
- •9. Проектирование классов
- •9.1. Проектирование классов, скрывающих информацию
- •9.2. Проектирование операций классов
- •9.3. Классы абстрагирования данных
- •9.4. Классы интерфейса устройства
- •9.5. Классы, зависящие от состояния
- •9.6. Классы, скрывающие алгоритмы
- •9.7. Классы интерфейса пользователя
- •9.10. Внутренние программные классы
- •9.11. Применение наследования при проектировании
- •9.12. Примеры наследования
- •9.13. Спецификация интерфейса класса
- •10. Детальное проектирование ПО
- •10.1. Проектирование составных задач
- •10.2. Синхронизация доступа к классам
- •10.4. Логика упорядочения событий
- •11.1. Теория планирования в реальном времени
- •11.2. Развитие теории планирования в реальном времени
- •11.5. Пример анализа производительности с помощью анализа последовательности событий
- •11.6. Пример анализа производительности с применением теории планирования в реальном времени
- •11.8. Пересмотр проекта
- •11.9. Оценка и измерение параметров производительности
- •12. ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ

СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
111 |
7. Технологии параллельных и распределенных систем
Рассмотрим технологию (или инфраструктуру) параллельной и распределенной обработки, которая нужна в приложениях реального времени. Инфраструктуру обеспечивают операционная система, вы- числительная сеть и программное обеспечение (ПО) промежуточного слоя.
7.1. Среды для параллельной обработки
Основные среды для параллельной обработки можно отнести к следующим категориям: мультипрограммные среды, симметричные мультипроцессорные среды и распределенные среды.
7.1.1. Мультипрограммная среда. В мультипрограммной (или многозадачной) среде несколько задач разделяют единственный про- цессор. Виртуальный параллелизм обеспечивается операционной системой, которая управляет выделением процессора отдельным за- дачам, так что создается иллюзия, будто у каждой задачи есть свой процессор. Пример мультипрограммной среды приведен на рис. 7.1. Здесь изображены плата процессора (ЦП) и плата памяти (их может быть несколько). В памяти хранятся коды и данные каждой задачи, а также самой операционной системы. Платы соединены между собой системной шиной. В примере система включает также два устройства ввода/вывода, дисплей и датчик, все они подключаются к шине с по- мощью интерфейсных карт, на каждой из которых имеется контрол- лер устройства.
www.pdffactory.com

СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
112 |
Рис. 7.1. Мультипрограммная среда (с одним процессором)
7.1.2. Симметричная мультипроцессорная среда. В симметрич-
ной мультипроцессорной среде есть два или несколько процессоров с общей памятью. Для всех процессоров существует единое физиче- ское адресное пространство, поэтому все процессы находятся в об- щей памяти. В такой среде поддерживается реальный параллелизм, поскольку процессоры работают одновременно. Задачи, исполняемые на разных процессорах, могут обмениваться информацией с помо- щью разделяемой памяти. Мультипроцессорная среда показана на рис. 7.2.
Рис. 7.2. Симметричная мультипроцессорная среда
www.pdffactory.com

СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
113 |
7.1.3. Распределенная среда. На рис.7.3 показана типичная рас- пределенная среда, где есть несколько узлов, связанных между собой сетью. Каждый узел – это компьютер с собственной локальной памя- тью, который обычно представляет собой мультипрограммную (см. рис.7.1) или симметричную мультипроцессорную (см. рис.7.2) среду. Кроме того, в каждом узле имеется сетевая карта. Важным отличием распределенной среды является то, что у узлов нет общей памяти. Следовательно, распределенное приложение состоит из параллель- ных процессов, работающих в разных узлах. Каждый процесс может иметь несколько потоков, исполняемых в том же узле. Поскольку разделяемой памяти нет, то процессы в разных узлах должны обме- ниваться информацией, посылая сообщения по сети.
Рис. 7.3. Распределенная среда
7.2. Поддержка исполнения в мультипрограммной и мультипроцессорной средах
Поддержка исполнения параллельных вычислений реализуется:
§ядром операционной системы. Оно предоставляет сервисы, необходимые для параллельной обработки. В некоторых со-
временных операционных системах минимальную поддержку дает микроядро, а все остальное – системные задачи;
§системой времени исполнения в языке программирования, поддерживающем параллелизм;
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
114 |
§пакетом для поддержки потоков. Предоставляет сервисы, не- обходимые для управления потоками (облегченными процес- сами) внутри тяжеловесного процесса.
Вязыках, ориентированных на последовательное программиро- вание, например С, C++, Pascal и Fortran, нет встроенной поддержки параллелизма. Поэтому при разработке параллельных многозадачных
приложений на этих языках приходится прибегать к помощи ядра или библиотеки потоков.
Впараллельных языках программирования, скажем Ada или Java, имеются конструкции для поддержки взаимодействия и син- хронизации задач. В таком случае система времени выполнения, яв- ляющаяся частью языка, отвечает за планирование задач и предос- тавление необходимых сервисов.
7.2.1. Сервисы операционной системы. Ядро операционной сис-
темы обычно предоставляет следующие сервисы:
§вытесняющее планирование с приоритетами. Задача с наи- высшим приоритетом исполняется, как только она будет го- това, – например, если ее активизирует прерывание вво- да/вывода;
§межзадачную коммуникацию посредством сообщений;
§взаимное исключение с помощью семафоров;
§синхронизацию по событию с использованием сигналов. Вме- сто этого для синхронизации могут применяться сообщения;
§обработку прерываний и базовые сервисы ввода/вывода;
§управление памятью. Эта подсистема отвечает за отображе- ние виртуальной памяти каждой задачи на физическую па- мять.
В качестве примеров широко распространенных систем с под- держкой параллелизма в ядре можно назвать несколько версий UNIX
(в том числе Linux, Solaris и AIX), Windows 98, Windows NT и Windows
2000.
Если имеется поддержка в ядре, то операции send message и receive message для обмена сообщениями, а также wait и signal для син- хронизации по событию реализуются как прямые вызовы ядра. Вза-
имно исключающий доступ к критическим секциям обеспечивается
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
115 |
операциями над семафорами acquire и release, которые также предос- тавляет ядро.
7.2.2. Стандарт POSIX. POSIX (Portable Operating System Interface Standard – стандарт переносимого интерфейса операционной системы) – это стандарт разработки программного обеспечения опе- рационных систем, принятый IEEE. Обычно его называют POSIX 1003. POSIX основан на операционной системе UNIX – наиболее рас- пространенной переносимой ОС. POSIX 1003.1 определяет базовые сервисы операционной системы, POSIX 1003.b – расширения для ре- жима реального времени, а POSIX 1003.1с – расширения для парал- лельной обработки.
Стандарт POSIX 1003.1 задает библиотечные функции, которые должна поддерживать любая POSIX-совместимая система UNIX, на- пример open, read и fork. POSIX 1003.1b определяет стандартный ин- терфейс операционной системы реального времени: системные вызо- вы, списки параметров и информацию о состоянии, возвращаемую каждым вызовом.
В стандарте POSIX 1003.1b указаны следующие сервисы:
1. Сервисы для управления параллельными задачами. Следую-
щие три сервиса предоставляют средства для обмена информацией между задачами и для синхронизации:
§двоичные семафоры;
§сигналы реального времени;
§передача сообщений. Этот сервис позволяет задаче с наи- высшим приоритетом получать процессор по первому запро- су, а значит, гарантирует быструю реакцию для наиболее критичных по времени задач;
§вытесняющее планирование с приоритетами;
2. Сервисы времени.
Следующий сервис важен для реализации событий таймера с высоким разрешением и выполнения измерений в системах реального времени:
§часы и таймеры реального времени; 3. Сервисы управления памятью:
§захват памяти задачей (см. следующий раздел);
www.pdffactory.com
СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ |
116 |
§файлы, проецируемые на память, и разделяемая память; 4. сервисы ввода/вывода:
§синхронный ввод/вывод;
§асинхронный ввод/вывод. Этот сервис необходим для реали-
зации перекрытия между процессорными вычислениями и вводом/выводом.
Стандарт POSIX 1003.1с добавляет к POSIX спецификацию па- раллельных потоков, которые позволяют программе запускать не- сколько экземпляров процедуры, выполняемых в раздельных потоках управления (задачах). Исполняемая программа представляет собой тяжеловесный процесс, имеющий собственное адресное пространст- во. Поток внутри него – это облегченный процесс.
В терминологии POSIX тяжеловесные процессы называются просто процессами, а облегченные процессы – потоками (thread). Все
потоки внутри данного процесса функционируют в одном и том же адресном пространстве.
7.2.3. Операционные системы реального времени. Большинство систем реального времени поддерживают ядро или микроядро. Рас- смотрим требования к операционной системе реального времени. Итак, операционная система реального времени должна:
§поддерживать многозадачность;
§реализовывать вытесняющее планирование с приоритетами. Это означает, в частности, что у каждой задачи должен быть свой приоритет;
§предоставлять механизмы синхронизации и обмена информа- цией между задачами;
§давать задачам возможности захвата памяти. В системах ре- ального времени с жесткими временными ограничениями па- раллельные задачи обычно находятся в памяти целиком. Это устраняет неопределенность и разброс во времени отклика, обусловленные подкачкой страниц. Механизм захвата памяти позволяет задаче с жесткими ограничениями по времени вы- полнения разместиться в оперативной памяти, не опасаясь, что операционная система выгрузит ее;
www.pdffactory.com