Распределенные системы реального времени: теория и практика
Покупка
Тематика:
Прикладное программное обеспечение
Издательство:
ДМК Пресс
Автор:
Эрджиес Кайхан
Перевод:
Яроцкий Владимир Александрович
Год издания: 2020
Кол-во страниц: 382
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-852-4
Артикул: 748337.01.99
Доступ онлайн
В корзину
В книге описываются разработка и реализация программного обеспечения распределенных систем реального времени с использованием подхода «снизу вверх». В начале каждой главы обсуждаются основные концепции, представлен обзор соответствующих методов и доступного ПО. Затем рассматривается реализация концепций в образце ядра, сопровожденная исполняемым кодом. В завершение главы приводится обширный код на языке С, многочисленные примеры, реализующие описанные методы.
Издание предназначено студентам, инженерам, разработчикам ПО, имеющим базовый опыт работы в области компьютерной архитектуры и операционных систем
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Интернет-магазин: www.dmkpress.com Оптовая продажа: КТК «Галактика» books@alians-kniga.ru www.дмк.рф Рассматриваемые темы: • основы систем реального времени, включая архитектуру реального времени и распределенные системы реального времени; • операционная система реального времени, охватывающая концепции задач, памяти и управления вводом/выводом; • подробное пошаговое построение ядра операционной системы реального времени, которое затем используется для тестирования различных реализаций более высокого уровня; • периодическое и апериодическое планирование, управле ние ресурсами и распределенное планирование; • процесс разработки приложений – от методов проектиро вания высокого уровня до деталей проектирования и реа лизации низкого уровня; • языки программирования в реальном времени и методы отказоустойчивости. Распределенные системы реального времени Теория и практика 9 785970 608524 ISBN 978-5-97060-852-4 Распределенные системы реального времени Данная книга описывает разработку и реализацию программного обеспечения распределенных систем реального времени с использованием подхода «снизу вверх». Освещаются проблемы, встречающиеся в программных проектах систем реального времени; представлен новый метод простого и эффективного выполнения всех этапов разработки программного обеспечения. Кайхан Эрджиес
Кайхан Эрджиес Распределенные системы реального времени Теория и практика
Distributed Real-Time Systems Theory and Practice Kayhan Erciyes
Распределенные системы реального времени Теория и практика Кайхан Эрджиес Москва, 2020
УДК 004.45 ББК 32.973 Э75 К. Эрджиес Э75 Распределенные системы реального времени. Теория и практика / пер. с анг. В. А. Яроцкий. – М.: ДМК Пресс, 2020. – 382 с.: ил. ISBN 978-5-97060-852-4 В книге описываются разработка и реализация программного обеспечения распределенных систем реального времени с использованием подхода «снизу вверх». В начале каждой главы обсуждаются основные концепции, представлен обзор соответствующих методов и доступного ПО. Затем рассматривается реализация концепций в образце ядра, сопровожденная исполняемым кодом. В завершение главы приводится обширный код на языке C, многочисленные примеры, реализующие описанные методы. Издание предназначено студентам, инженерам, разработчикам ПО, имеющим базовый опыт работы в области компьютерной архитектуры и операционных систем УДК 004.45 ББК 32.973 First published in English under the title Distributed Real-Time Systems; Theory and Practice by K Erciyes, edition: 1 Copyright © Springer Nature Switzerland AG, 2019 * This edition has been translated and published under licence from Springer Nature Switzerland AG. Springer Nature Switzerland AG takes no responsibility and shall not be made liable for the accuracy of the transl Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN (анг.) 978-3-030-22569-8 © Springer Nature Switzerland AG 2019 ISBN (рус.) 978-5-97060-852-4 © Оформление, издание, перевод, ДМК Пресс, 2020
Посвящается памяти профессора Синана Йылмазу, который был прекрасным педагогом и глубоким исследователем систем реального времени, а также профессору Невзет Тархану, приверженному науке и научному поиску
Оглавление Предисловие от автора ........................................................................................ 15 Предисловие от издательства .......................................................................... 18 ЧАСТЬ I. ВВЕДЕНИЕ ........................................................................................... 19 Глава 1. Введение в системы реального времени ............................... 21 1.1. Введение ....................................................................................................................... 21 1.2. Что такое система реального времени ....................................................................... 22 1.3. Базовая архитектура .................................................................................................... 23 1.4. Характеристики систем реального времени .............................................................. 25 1.5. Классификация систем реального времени ............................................................... 25 1.6. Пример системы: конвейер бутылок ...........................................................................27 1.7. Обзор книги .................................................................................................................. 29 1.8. Контрольные вопросы ................................................................................................. 29 1.9. Примечания к главе ..................................................................................................... 30 Справочные материалы ..................................................................................................... 30 Глава 2. Аппаратура ................................................................................................. 31 2.1. Введение ....................................................................................................................... 31 2.2. Архитектура процессора .............................................................................................. 32 2.2.1. Шина данных с одним циклом ............................................................................ 33 2.2.2. Канал передачи данных многими циклами ....................................................... 38 2.2.3. Конвейер ............................................................................................................... 40 2.2.3.1. Риски ...................................................................................................43 2.2.4. Микроконтроллеры .............................................................................................. 46 2.3. Память........................................................................................................................... 46 2.3.1. Интерфейс процессора ..........................................................................................47 2.3.2. Кеш ......................................................................................................................... 48 2.4. Доступ к вводу/выводу ................................................................................................. 50 2.4.1. Интерфейс устройства ввода ............................................................................... 51 2.4.2. Интерфейс устройства вывода ............................................................................ 52 2.4.3. Отображение в память и изолированный ввод/вывод ...................................... 53 2.4.4. Программный интерфейс ввода/вывода ............................................................ 54 2.4.4.1. Опрос ...................................................................................................54 2.4.4.2. Ввод/вывод с прерыванием ...............................................................55 2.4.4.3. Прямой доступ к памяти ....................................................................56 2.4.4.4. Исключения ........................................................................................ 57 2.4.4.5. Таймеры .............................................................................................. 57 2.5. Многоядерные процессоры ......................................................................................... 58 2.6. Мультипроцессоры ...................................................................................................... 59 2.7. Контрольные вопросы .................................................................................................. 60 2.8. Примечания к главе ..................................................................................................... 61 2.9. Упражнения .................................................................................................................. 62 Справочные материалы ..................................................................................................... 62
Глава 3. Распределенные системы реального времени .................. 63 3.1. Введение ....................................................................................................................... 63 3.2. Модели .......................................................................................................................... 64 3.2.1. Распределение по времени и событию ............................................................... 64 3.2.2. Конечные автоматы .............................................................................................. 65 3.3. Распределенные операционные системы реального времени и промежуточное программное обеспечение .................................................................. 68 3.3.1. Промежуточное программное обеспечение ....................................................... 69 3.3.2. Распределенное планирование ........................................................................... 69 3.3.3. Динамическая балансировка нагрузки ............................................................... 71 3.4. Связь в реальном времени .......................................................................................... 72 3.4.1. Трафик в реальном времени ................................................................................ 72 3.4.2. Модель взаимосвязи открытых систем ............................................................... 73 3.4.3. Топология .............................................................................................................. 74 3.4.4. Уровень канала передачи данных ....................................................................... 76 3.4.4.1. Протоколы доступа к среде ................................................................ 77 3.4.5. Протокол контроллерной сети ..............................................................................77 3.4.6. Протокол запуска по времени ............................................................................. 79 3.4.7. Сеть реального времени Ethernet ........................................................................ 80 3.4.8. Стандарт реального времени IEEE 802.11 ........................................................... 80 3.5. Проблемы в распределенных системах реального времени со встроенными элементами ............................................................................................. 81 3.6. Примеры распределенных систем реального времени ............................................ 82 3.6.1. Современный автомобиль ................................................................................... 82 3.6.2. Беспроводная мобильная сенсорная сеть ........................................................... 83 3.7. Контрольные вопросы .................................................................................................. 84 3.8. Примечания к главе ..................................................................................................... 85 3.9. Упражнения .................................................................................................................. 86 Справочные материалы ......................................................................................................87 Часть II. СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ .......... 89 Глава 4. Операционные системы реального времени ...................... 91 4.1. Введение ....................................................................................................................... 91 4.2. Общие операционные системы и операционные системы реального времени ..... 92 4.3. Управление задачей ..................................................................................................... 93 4.3.1. Задача управления в UNIX ................................................................................... 95 4.3.2. Синхронизация задач ............................................................................................97 4.3.3. Межзадачные коммуникации .............................................................................. 98 4.3.4. Межпроцессорное взаимодействие в UNIX ...................................................... 101 4.4. Потоки ......................................................................................................................... 102 4.4.1. Управление потоками ........................................................................................ 102 4.4.2. Потоки POSIX ...................................................................................................... 103 4.4.2.1. Взаимное исключение .....................................................................104 4.4.2.2. Синхронизация .................................................................................105 4.4.2.3. Связь ..................................................................................................106 8 Оглавление
4.5. Управление памятью ................................................................................................. 108 4.5.1. Статичное распределение памяти .................................................................... 108 4.5.2. Динамическое распределение памяти ............................................................. 108 4.5.3. Виртуальная память ........................................................................................... 108 4.5.4. Управление памятью в реальном времени ....................................................... 109 4.6. Управление вводом/выводом .................................................................................... 110 4.6.1. Управляемый прерываниями ввод/вывод ........................................................ 110 4.6.2. Драйверы устройств ........................................................................................... 111 4.7. Обзор операционных систем реального времени ................................................... 112 4.7.1. Операционная система с открытым кодом RTOS ............................................. 113 4.7.2. Операционная система VxWorks ........................................................................ 113 4.7.3. Сиcтема реального времени Linux .................................................................... 113 4.8. Контрольные вопросы ............................................................................................... 114 4.9. Примечания к главе ................................................................................................... 115 4.10. Упражнения по программированию ...................................................................... 115 Справочные материалы ................................................................................................... 116 Глава 5. Проектирование экспериментального распределенного ядра реального времени ...........................................117 5.1. Введение ......................................................................................................................117 5.2. Стратегия дизайна ..................................................................................................... 118 5.3. Функции ядра нижнего уровня ................................................................................. 119 5.3.1. Структуры данных и операции с очередями .................................................... 119 5.3.1.1. Тип блока данных .............................................................................120 5.3.1.2. Тип данных блока управления задачами .......................................121 5.3.2. Планировщик с несколькими очередями ......................................................... 123 5.3.3. Обработка прерываний и управление временем ............................................. 126 5.3.3.1. Дельта-очередь ................................................................................. 127 5.3.4. Управление состоянием задачи ......................................................................... 128 5.3.4.1. Программа обработки прерываний по времени ............................129 5.3.5. Управление вводом/выводом ............................................................................ 130 5.4. Функции ядра верхнего уровня ................................................................................ 132 5.4.1. Синхронизация задач ......................................................................................... 132 5.4.2. Коммуникация задач .......................................................................................... 136 5.4.3. Управление верхней памятью с использованием пулов ................................. 139 5.4.4. Управление задачей. ........................................................................................... 140 5.5. Инициализация .......................................................................................................... 142 5.6. Тестирование DRTK .................................................................................................... 144 5.7. Контрольные вопросы ................................................................................................ 145 5.8. Примечания к главе ................................................................................................... 145 5.9. Проекты программирования .................................................................................... 146 Справочные материалы ....................................................................................................147 Глава 6. Операционные системы реального времени и промежуточное программное обеспечение ..................................... 148 6.1. Введение ..................................................................................................................... 148 Оглавление 9
6.2. Распределенные операционные системы реального времени .............................. 149 6.2.1. Интерфейс транспортного уровня .................................................................... 150 6.2.2. Интерфейс уровня канала передачи данных.................................................... 151 6.3. Промежуточное программное обеспечение реального времени ........................... 153 6.3.1. Группы задач в реальном времени ................................................................... 154 6.3.2. Синхронизация часов ......................................................................................... 155 6.3.2.1. Логические часы ...............................................................................156 6.3.2.2. Векторные часы ................................................................................ 157 6.3.2.3. Протокол сетевого времени .............................................................158 6.3.2.4. Алгоритм Беркли ..............................................................................160 6.3.2.5. Синхронизация часов в беспроводных сенсорных сетях ..............160 6.3.3. Алгоритмы выбора ............................................................................................. 162 6.3.3.1. Выбор в однонаправленном кольце ................................................162 6.3.3.2. Выборы в беспроводных сенсорных и мобильных специальных сетях ........................................................................................163 6.4. Реализация DRTK ....................................................................................................... 165 6.4.1. Инициализация сети .......................................................................................... 165 6.4.2. Интерфейс транспортного уровня .....................................................................167 6.4.3. Задачи интерфейса канального уровня передачи данных .............................. 171 6.4.4. Групповое управление ....................................................................................... 173 6.4.5. Алгоритм синхронизации часов ........................................................................ 175 6.4.6. Выбор лидера в кольце ....................................................................................... 176 6.5. Контрольные вопросы ............................................................................................... 178 6.6. Примечания к главе ................................................................................................... 178 6.7. Проекты программирования ..................................................................................... 179 Справочные материалы ................................................................................................... 179 ЧАСТЬ III. ПЛАНИРОВАНИЕ И РАСПРЕДЕЛЕНИЕ РЕСУРСОВ ................................................................................................................. 181 Глава 7. Задача планирования однопроцессорной независимой задачи ............................................................................................. 183 7.1. Введение ..................................................................................................................... 183 7.2. Предпосылки .............................................................................................................. 184 7.2.1. Тест планируемости ............................................................................................ 185 7.2.2. Применение......................................................................................................... 186 7.3. Политики планирования ........................................................................................... 186 7.3.1. Приоритетное или неприоритетное планирование ........................................ 186 7.3.2. Статичное или динамичное планирование ...................................................... 188 7.3.3. Независимые или зависимые задачи ............................................................... 189 7.4. Таксономия алгоритмов планирования в реальном времени ................................ 190 7.5. Потактовое планирование ......................................................................................... 191 7.5.1. Планирование на основе таблиц ....................................................................... 191 7.5.2. Циклическое выполнение .................................................................................. 193 7.6. Приоритетное планирование .................................................................................... 195 10 Оглавление
7.6.1. Монотонное планирование ................................................................................ 195 7.6.2. Планирование с первым самым крайним сроком ............................................197 7.6.2.1. Апериодический алгоритм EDF .......................................................198 7.6.2.2. Периодический алгоритм EDF .........................................................199 7.6.3. Алгоритм наименьшего времени незанятости ................................................ 201 7.6.4. Анализ времени отклика .................................................................................... 202 7.7. Апериодическое планирование задач ...................................................................... 203 7.7.1. Основные методы................................................................................................ 204 7.7.2. Периодические серверы ..................................................................................... 206 7.7.2.1. Сервер опроса ....................................................................................206 7.7.2.2. Отложенный сервер .......................................................................... 207 7.7.2.3. Спорадический сервер ...................................................................... 207 7.7.2.4. Серверы с динамическим приоритетом ......................................... 207 7.8. Планирование спорадических задач ........................................................................ 208 7.9. Реализация в DTRK ..................................................................................................... 210 7.9.1. Планировщик монотонного рейтинга .............................................................. 210 7.9.2. Планировщик самого раннего первого срока .................................................. 212 7.9.3. Планировщик первой наименее занятой задачи ............................................. 212 7.9.4. Сервер опроса ...................................................................................................... 214 7.10. Контрольные вопросы .............................................................................................. 214 7.11. Примечания к главе .................................................................................................. 215 7.12. Упражнения ...............................................................................................................217 Справочные материалы ................................................................................................... 218 Глава 8. Планирование однопроцессорной зависимой задачи .................................................................................................. 219 8.1. Введение ..................................................................................................................... 219 8.2. Планирование зависимых задач ............................................................................... 220 8.2.1. Aлгоритм первым последний конечный срок .................................................. 220 8.2.2. Модифицированный алгоритм первым ранний конечный срок .................... 221 8.3. Планирование задач при совместном использовании ресурсов ............................ 223 8.3.1. Случай марсианского зонда ............................................................................... 226 8.3.2. Основной протокол наследования приоритетов ..............................................227 8.3.3. Протокол приоритетного потолка ..................................................................... 231 8.4. Реализация DRTK ....................................................................................................... 233 8.4.1. Зависимое планирование задач LDF ................................................................. 234 8.4.2. Протокол приоритетного наследования ........................................................... 235 8.5. Контрольные вопросы ................................................................................................237 8.6. Примечания к главе ....................................................................................................237 8.7. Упражнения ................................................................................................................ 238 Справочные материалы ................................................................................................... 239 Глава 9. Планирование многопроцессорных распределенных задач реального времени ......................................... 240 9.1. Введение ..................................................................................................................... 240 9.2. Многопроцессорное планирование .......................................................................... 241 Оглавление 11
9.2.1. Раздельное планирование ................................................................................. 242 9.2.1.1. Распределение задач ........................................................................242 9.2.1.2. Алгоритм балансировки использования с EDF ..............................243 9.2.1.3. Алгоритмы ........................................................................................244 9.2.1.4. Алгоритм EDF с упаковкой первое соответствие ...........................246 9.2.1.5. Монотонный алгоритм первое соответствие (RM-FF) ...................246 9.2.2. Глобальное планирование ..................................................................................247 9.2.2.1. Глобальный монотонный алгоритм ................................................248 9.2.2.2. Аномалии ..........................................................................................249 9.2.2.3. Пропорциональный алгоритм справедливого планирования ......249 9.3. Распределенное планирование ................................................................................. 249 9.3.1. Балансировка нагрузки ...................................................................................... 250 9.3.1.1. Центральная балансировка нагрузки .............................................250 9.3.1.2. Распределенная балансировка нагрузки ........................................251 9.3.2. Метод целенаправленной адресации и назначения ставок ............................ 252 9.3.3. Алгоритм Buddy .................................................................................................. 253 9.3.4. Планирование сообщений ................................................................................. 254 9.4. Реализация DRTK ....................................................................................................... 255 9.4.1. Центральные задачи балансировки нагрузки .................................................. 255 9.4.2. Задача балансировки распределенной нагрузки ..............................................257 9.5. Контрольные вопросы ............................................................................................... 259 9.6. Примечания к главе ................................................................................................... 259 9.7. Упражнения ................................................................................................................ 260 Справочные материалы ................................................................................................... 260 ЧАСТЬ IV. ПРИКЛАДНОЕ ПРОЕКТИРОВАНИЕ ........................... 263 Глава 10. Разработка программного обеспечения систем реального времени .............................................................................. 265 10.1. Введение ................................................................................................................... 265 10.2. Жизненный цикл разработки программного обеспечения .................................. 266 10.2.1. Пошаговая модель Waterfall ..............................................................................267 10.2.2. V-модель ............................................................................................................ 268 10.2.3. Спиральная модель Spiral Model ...................................................................... 268 10.3. Разработка программного обеспечения систем реального времени ................... 269 10.4. Анализ требований и спецификация ..................................................................... 270 10.5. Временной анализ.................................................................................................... 271 10.6. Структурное проектирование с диаграммами потоков данных .......................... 272 10.7. Объектно-ориентированное проектирование ....................................................... 274 10.8. Методы реализации в реальном времени .............................................................. 275 10.8.1. Еще о конечных автоматах .............................................................................. 275 10.8.1.1. Параллельные иерархические конечные автоматы .................... 277 10.8.2. Временны́е автоматы ....................................................................................... 278 10.8.3. Сети Петри ........................................................................................................ 279 10.8.3.1. Временны́е сети Петри ...................................................................282 10.9. Унифицированный язык моделирования в реальном времени ........................... 283 10.9.1. UML-диаграммы ............................................................................................... 283 10.9.2. Функции реального времени ........................................................................... 285 12 Оглавление
10.10. Метод практического проектирования и реализации ........................................ 286 10.11. Контрольные вопросы ............................................................................................287 10.12. Примечания к главе ............................................................................................... 288 10.13. Программирование проектов ............................................................................... 289 Справочные материалы ................................................................................................... 290 Глава 11. Языки программирования в реальном времени ........ 291 11.1. Введение ................................................................................................................... 291 11.2. Требования ............................................................................................................... 292 11.3. Приложение в реальном времени ........................................................................... 293 11.4. Операционная система C/POSIX в реальном времени .......................................... 293 11.4.1. Инкапсуляция данных и управление модулями ............................................ 294 11.4.2. Управление потоком POSIX ............................................................................. 295 11.4.2.1. Управление временем ....................................................................296 11.4.2.2. Синхронизация потоков и связь ................................................... 297 11.4.2.3. Сигналы ........................................................................................... 297 11.4.2.4. Взаимное исключение ....................................................................298 11.4.2.5. Условная синхронизация ...............................................................299 11.4.2.6. Семафоры ........................................................................................299 11.4.3. Обработка исключений и низкоуровневое программирование ................... 300 11.4.4. Реализация управления процессом C/POSIX в реальном времени............... 300 11.5. Ада ............................................................................................................................. 302 11.5.1. Параллелизм ..................................................................................................... 303 11.5.1.1. Управление временем ....................................................................304 11.5.1.2. Periodic Tasks ...................................................................................304 11.5.1.3. Приоритеты задач ..........................................................................305 11.5.1.4. Синхронизация задач и связь ........................................................305 11.5.2. Обработка исключений .................................................................................... 306 11.5.3. Реализация управления процессами на языке ADA ....................................... 308 11.6. Язык программирования Java ................................................................................. 309 11.6.1. Потоки Java ........................................................................................................ 310 11.6.2. Синхронизация потоков .................................................................................. 311 11.6.2.1. Управление временем и расписание ............................................311 11.6.3. Обработка исключений .................................................................................... 312 11.7. Контрольные вопросы .............................................................................................. 312 11.8. Примечания к главе ................................................................................................. 313 11.9. Упражнения по программированию ...................................................................... 314 Справочные материалы ................................................................................................... 314 Глава 12. Отказоустойчивость ........................................................................ 315 12.1. Введение ................................................................................................................... 315 12.2. Понятия и терминология ......................................................................................... 316 12.3. Классификация неисправностей .............................................................................317 12.4. Резервирование ........................................................................................................ 318 12.4.1. Аппаратное резервирование ........................................................................... 318 12.4.2. Избыточность информации ............................................................................. 320 12.4.2.1. Кодирование ...................................................................................320 Оглавление 13
12.4.3. Резервирование времени ................................................................................. 322 12.4.4. Резервирование программного обеспечения ................................................. 323 12.4.4.1. Методы с одной версией ................................................................323 12.4.4.2. Многократное резервирование .....................................................324 12.5. Отказоустойчивые системы реального времени ................................................... 325 12.5.1. Статичное планирование ................................................................................. 326 12.5.2. Динамическое планирование .......................................................................... 326 12.6. Отказоустойчивость в распределенных системах реального времени.................327 12.6.1. Классификация отказов ....................................................................................327 12.6.2. Пересмотр состава целевых групп .................................................................. 328 12.6.2.1. Надежная многоадресная связь ....................................................328 12.7. Реализация DRTK ...................................................................................................... 331 12.8. Контрольные вопросы ............................................................................................. 334 12.9. Примечания к главе ................................................................................................. 335 12.10. Упражнения ............................................................................................................ 335 Справочные материалы ................................................................................................... 336 Глава 13. Тематический пример: мониторинг окружающей среды по беспроводной сенсорной сети ................................................ 338 13.1. Введение ................................................................................................................... 338 13.2. Вопросы проектирования ........................................................................................ 339 13.3. Требования к спецификации .................................................................................. 339 13.4. Временно́й анализ и функциональные характеристики ...................................... 340 13.5. Связующее дерево и кластеризация ....................................................................... 341 13.6. Вопросы проектирования ........................................................................................ 345 13.7. Листовой узел ........................................................................................................... 346 13.7.1. Дизайн высокого уровня ...................................................................................347 13.7.2. Детальная разработка и реализация ............................................................... 349 13.8. Промежуточный узел ............................................................................................... 355 13.8.1. Дизайн верхнего уровня................................................................................... 355 13.8.2. Детальное проектирование и реализация ...................................................... 356 13.9. Узел управления кластером ..................................................................................... 360 13.9.1. Дизайн высокого уровня .................................................................................. 361 13.9.1. Дизайн верхнего уровня................................................................................... 361 13.10. Приемник ................................................................................................................ 364 13.10.1. Дизайн высокого уровня ................................................................................ 364 13.11. Тестирование .......................................................................................................... 365 13.12. Альтернативная реализация с потоками POSIX ...................................................367 13.13. Примечания к главе ................................................................................................367 13.14. Упражнения по программированию .................................................................... 368 Справочные материалы ................................................................................................... 368 Приложение А. Соглашение о псевдокоде ............................................. 369 Приложение В. Функции нижнего ядра ................................................... 374 Предметный указатель ....................................................................................... 378 14 Оглавление
Предисловие Распределенные системы реального времени со встроенными элементами присутствуют повсюду – от производственных площадок заводов до автомобилей и авионики. Распределенные системы реального времени характеризуются числом вычислительных элементов, объединенных в сеть и выполняющих задачи в реальном времени. Задачи реального времени имеют конечные сроки, и многие применения требуют получения решения до их истечения. Современные технологические достижения привели к значительному увеличению числа элементов в распределенных системах реального времени, что, в свою очередь, вызвало необходимость разработки соответствующего программного обеспечения. Элементы распределенных систем реального времени имеют вычислительные мощности и обычно связаны с внешним миром при помощи датчиков и исполнительных механизмов. Не все системы со встроенными элементами работают в режиме реального времени, и мы будем использовать термин распределенная система реального времени только для таких распределенных систем, которые характеризуются работой в реальном времени. Эта книга — о разработке и внедрении программного обеспечения для распределенных систем реального времени с использованием метода восходящего проектирования. На протяжении нескольких десятилетий я читал соответствующие курсы бакалаврам и магистрам и принимал участие в крупных программных проектах систем реального времени, что дало мне возможность наблюдать основные узкие места, которые встречаются при разработке и проектировании таких систем. Прежде всего разработчик или проектировщик часто сталкивается с проблемой сопряжения приложения с некоторой коммерческой операционной системой или промежуточным программным обес печением реального времени и иногда вынужден писать патчи к ним. Это требует глубокого понимания концепций как аппаратного обеспечения, так и операционной системы, обеспечивающих обработку в реальном времени, и поэтому часть книги посвящена системному программному обеспечению. Первая часть книги состоит из трех глав. В первой главе мы рассматриваем основные концепции операционных систем реального времени. Затем, во второй главе, мы строим с нуля экспериментальное ядро распределенной операционной системы реального времени (experimental distributed real-time operating system kernel, DRTK), раскрывая все необходимые детали. Далее, в последней главе этой части книги, рассматриваются концепции связи распределенной операционной системы реального времени и промежуточного программного обеспечения и рассказывается, как спроектировать
сетевые коммуникации, чтобы в режиме реального времени ядра могли взаимодействовать и иметь распределенный системный программный фрейм. Постепенно мы превращаем экспериментальное ядро в ядро распределенной операционной системы реального времени со связанным промежуточным программным обеспечением, показывая в последующих разделах книги все детали реализации. Вторая проблема – это, конечно же, планирование задач, которое обеспечивает выполнение всех конечных сроков. Задачи в системе реального времени можно в широком смысле классифицировать как жесткие, мягкие и твердые задачи, которые могут быть также периодическими и апериодическими и требующими различных стратегий планирования. Более того, они могут быть независимыми или зависеть от каждого из необходимых средств синхронизации задач. Вместе с тем нам нужно обеспечить такое сквозное планирование задач, чтобы сроки были соблюдены, а нагрузка распределялась между элементами распределенной системы реального времени равномерно. Еще одной связанной с этим проблемой является управление ресурсами в сети. Все эти проблемы исследуются во второй части, и всегда имеются в виду методы их реализации. Наконец, перед разработчиком стоит задача выполнения всех этапов разработки программного обеспечения, начиная с определения требований и разработки общего плана и до последующей детальной разработки и кодирования. Именно здесь встречается большинство затруднений. Мы предоставляем новый метод для простого и эффективного выполнения всех этапов. В книге есть глава о проектировании верхнего уровня и детальной разработке с использованием конечных автоматов, которые могут быть реализованы с применением потоков в операционной системе. В системе реального времени для предотвращения катастрофических событий обязательна отказоустойчивость, и в книге есть глава на эту тему. Также рассматриваются различные языки программирования в реальном времени, включая C/POSIX, Ada и Java. Наконец, в последней главе представлено тематическое исследование режима реального времени, включающее все методы, которые были рассмотрены и разработаны, начиная с проектирования верхнего уровня с последующей подробной разработкой и кодированием. В каждой главе мы сначала рассматриваем концепции, а затем описываем методы разработки и реализации необходимого программного обеспечения, давая краткое описание коммерчески доступного программного обеспечения. В главах второй части книги, где это целесообразно, мы показываем, как реализовать описанные концепции в экспериментальном образце ядра, отображая исполняемый код. Обычно эти части в каждой главе называются «Реализация DRTK», и их можно пропустить вместе с главой 5, которая описывает DRTK, если книга используется для курса с ограниченным охватом систем реального времени. Наконец, мы включили обзорные вопросы, а затем и краткое примечание к главе, подчеркивая основные моменты, давая современный обзор соответствующей литературы и возможные открытые для исследований области. 16 Предисловие
О ядре распределеннОй ОперациОннОй системы реальнОгО времени Основные модули DRTK, рассмотренные в деталях в главе 5, тестированы при обучении студентов на различных курсах по обработке в реальном времени. Однако материал глав этой части книги, следующих за этой главой и относящихся к распределенной обработке, не полностью тестирован и с некоторой вероятностью может иметь синтаксические или другие ошибки при реализации. Я буду сохранять домашнюю страницу книги по адресу http://akademik. ube.ege.edu.tr/*erciyes/DRTS для кода DRTK, учебных слайдов и ошибок. Приветствуются любые изменения в коде DRTK в надежде сделать его практическим экспериментально распределенным ядром реального времени, которое может затем быть исследовано на соответствующих учебных курсах. Целевой аудиторией книги являются студенты и выпускники старших курсов, проектировщики и исследователи электротехники и вычислительной техники, информатики и машиностроения в целом, все, имеющие базовый опыт работы в области компьютерной архитектуры и операционных систем. Текст содержит значительное количество кода Cи в примерах реализации DRTK и других различных примерах. Я хотел бы поблагодарить студентов и аспирантов различных университетов, включая (в хронологическом порядке) Университет Эге, Университет штата Орегон, Калифорнийский государственный университет Дэвис, Калифорнийский государственный университет Сан-Маркос, Измирский Технологический институт, Измирский университет и Ускюдарский университет, в которых я преподавал курсы «Системы реального времени», «Встроенные системы», «Современные операционные системы» или другие аналогичные курсы, за их ценную обратную связь, когда различные части включенных в книгу материалов излагались во время лекций, а образец ядра тестировался в лабораторных работах. Я также хотел бы поблагодарить главного редактора издательства Springer Уэйна Уилера (Wayne Wheeler) и помощника редактора Саймон Рис (Simon Rees) за их постоянную поддержку в процессе написания книги. Стамбул, Турция К. Эрджиес (K. Erciyes) Предисловие 17
Доступ онлайн
В корзину