1. Проектування систем
У процесі проектування системи ухвалюються рішення про те, які властивості будуть реалізовані програмною частиною системи, а які - апаратними засобами. Тимчасові обмеження і інші вимоги передбачають, що деякі функції системи, наприклад обробку сигналів, необхідно реалізувати на спеціально розробленому устаткуванні. Таким чином, процес проектування систем реального часу містить у собі проектування устаткування (апаратури) спеціального призначення і проектування програмного забезпечення.
Апаратні компоненти забезпечують більш високу продуктивність, чим еквівалентне їм (по виконуваних функціях) програмне забезпечення. Апаратним засобам можна доручити “вузькі” місця системної обробки сигналів і, таким чином, уникнути дорогої оптимізації ПЗ. Якщо за продуктивність системи відповідають апаратні компоненти, при проектуванні ПЗ основну увагу можна приділити його переносимості, а питання, пов'язані із продуктивністю, відходять на другий план.
Рішення про розподіл функцій по апаратним і програмним компонентам слід ухвалювати якнайпізніше, оскільки архітектура системи повинна складатися з автономних компонентів, які можна реалізувати як апаратно, так і програмно. Саме така структура відповідає цілям розробника, що проектує зручну в обслуговуванні систему. Отже, результатом процесу проектування високоякісної системи повинна бути система, яку можна реалізувати і апаратними і програмними засобами.
Відмінності процесу проектування систем реального часу від інших систем полягає в тому, що вже на перших етапах проектування необхідно враховувати час реакції системи. У центрі процесу проектування системи реального часу - події (вхідні сигнали), а не об'єкти або функції. Процеси проектування таких систем складається з декількох етапів.
Визначення безлічі вхідних сигналів, які будуть оброблятися системою системних реакцій, що і відповідають їм, тобто відповідних сигналів.
Для кожного вхідного сигналу і відповідного йому відповідного сигналу обчислюються тимчасові обмеження. Вони застосовуються до обробки як вхідних, так і відповідних сигналів.
Об'єднання процесів обробки вхідних і відповідних сигналів у вигляді сукупності паралельних процесів. У коректній моделі системної архітектури кожний процес пов'язаний з певним класом вхідних і відповідних сигналів (як показано на рис. 8.2).
Розробка алгоритмів, що виконують необхідні обчислення для всіх вхідних і відповідних сигналів. Щоб одержати представлення про обсяги обчислювальних і часових витрат у процесі обробки сигналів, розробка алгоритмів зазвичай проводиться на ранніх етапах процесу проектування.
Розробка тимчасового графіка роботи системи.
Складання системи, що працює під управлінням диспетчера керуючої програми.
Зазвичай, описаний процес проектування є ітераційним. Як тільки визначена структура обчислювальних процесів і часовий графік роботи, необхідно зробити всебічний аналіз і провести імітацію роботи системи, щоб упевнитися в тому, що вона задовольняє тимчасовим обмеженням. У результаті аналізу може виявитися, що система не відповідає тимчасовим вимогам. У такому випадку для підвищення продуктивності системи необхідно змінити структуру обчислювальних процесів, алгоритм, що управляє керування програми або всі ці компоненти разом.
В системах реального часу складно аналізувати тимчасові залежності. Через непередбачену природу аперіодичних вхідних сигналів розробники змушено робити деякі попередні припущення щодо ймовірності появ аперіодичних сигналів. Зроблені припущення можуть виявитися невірними, і після розробки системи її показники продуктивності не будуть задовольняти тимчасовим вимогам.
Усі процеси в системі реального часу повинні бути скоординовані. Механізм координації процесів забезпечує виключення конфліктів при використанні загальних ресурсів. Коли один процес використовує загальний ресурс (або об'єкт), інші процеси не повинні мати доступ до цього ресурсу. До механізмів, що забезпечують взаємне виключення процесів, відносяться семафори, монітори і метод критичних областей.
Моделювання систем реального часу
Системи реального часу повинні реагувати на події, що відбуваються через нерегулярні інтервали часу. Такі події (або вхідні сигнали) часто приводять до переходу системи з одного стану в інший. Тому одним зі способів опису систем реального часу може бути модель кінцевого автомата і відповідна діаграма станів.
У моделі кінцевого автомата в кожний момент часу система знаходиться в одному зі своїх станів. Одержавши вхідний сигнал, вона переходить в інший стан. Наприклад, система керування клапаном може перейти зі стану “Клапан відкритий” у стан “Клапан закритий" після одержання певної команди оператора (вхідний сигнал).
На рис. 8.3 показана модель кінцевого автомата для звичайної мікрохвильової печі, обладнаної кнопками включення живлення, таймера і запуску системи. Стани системи позначені округленими прямокутниками, вхідні сигнали, що викликають перехід системи з одного стану в інший, показані стрілками. На діаграмі показані всі стани печі, також названі дії виконавчих механізмів системи або дії по виводу інформації.
Переглядати послідовність роботи системи потрібно зліва направо. У початковому стані Очікування, користувач може вибрати режим повної або половинної потужності. Наступний стан наступає при натисканні на кнопку таймера і установці часу роботи печі. Якщо двері печі закриті, система переходить у станДія.
У цьому стані йде процес готування їжі, після завершення якого стан пективертається в станОчікування.
Моделі кінцевого автомата - гарний спосіб представлення структури систем реального часу. Тому такі моделі є невід'ємною частиною методів проектування систем реального часу. Метод Харела (Harel), що базується на діаграмах станів, спрямований на рішення проблеми внутрішньої складності моделей кінцевого автомата. Діаграма станів структурує моделі таким чином, що групи стану можна було б розглядати як єдині сутності. Крім того, за допомогою діаграм станів паралельні системи можна представити у вигляді моделі станів. Моделі станів підтримуються також UML.
Рис. 8.3. Модель кінцевого автомата для мікрохвильової печі
Програмування систем реального часу
На архітектуру системи реального часу впливає мова програмування, яка використовується для реалізації системи. Дотепер тверді системи реального часу часто програмуються на асемблерних мовах. Мови більш високого рівня також дають можливість згенерувати ефективний програмний код. Наприклад, мова С дозволяє писати досить ефективні програми. Однак у ньому немає конструкцій, що підтримують паралельність процесів і керування спільно використовуваними ресурсами. Крім того, програми на С часто складні для розуміння.
Мова Ada споконвічно розроблявся для реалізації вбудованих систем, а тому має у своєму розпорядженні такі засоби, як керування процесами, виключення і правила представлення. Його засіб рандеву(rendezvous) - відмінний механізм для синхронізації завдань (процесів). На жаль, перша версія мови Ada (Ada 83) виявилася непридатною для реалізації твердих систем реального часу. У ній були відсутні засоби, що дозволяють установити граничні строки завершення завдань, не було вбудованих виключень для випадку перевищення граничних строків і пропонувався строгий алгоритм обслуговування черги “першим прийшов - першим вийшов”. При перегляді стандартів мови Ada головна увага приділялася саме цим моментам. У переглянутій версії мови підтримуються захищені типи, що дозволило більш просто реалізовувати захищені поділювані структури даних і забезпечувати більш повний контроль при виконанні і синхронізації завдань. Однак при програмуванні систем реального часу поліпшена версія мови Ada все-таки не забезпечує достатнього контролю над твердими системами реального часу.
Перші версії мови Java розроблялися для створення невеликих систем, що вбудовуються, таких, наприклад, як контролери пристроїв і приладів. Розробники Java включили кілька засобів для підтримки паралельних процесів у вигляді паралельних об'єктів (потоків) і синхронізованих методів. Але оскільки в подібних системах немає строгих тимчасових обмежень, то і у мові Java не передбачені засоби, що дозволяють управляти плануванням потоків або запускати потоки в конкретні моменти часу.
Тому Java не підходить для програмування твердих систем реального часу або систем, у яких є строгий часовий графік процесів. Перелічимо основні проблеми Java як мови програмування систем реального часу.
Не можна вказати час, протягом якого повинен виконуватися потік.
Не контролюємо процес очищення пам'яті - він може початися в будь-який час. Тому неможливо передбачити поведінку потоків у часі.
Не можна визначити розміри черги, пов'язаної з поділюваними ресурсами.
Реалізація віртуальної машини Java відрізняється для різних комп'ютерів.
У мові немає засобів для детального аналізу розподілу часу роботи процесорів.
У цей час ведеться робота з розв'язку деяких із цих проблем і формується нова версія мови Java для програмування систем реального часу. Однак не зовсім зрозуміло, яким чином цю версію можна відокремити від лежачої в її основі віртуальної машини Java: властивість переносимості мови завжди конфліктувала з характеристиками режиму реального часу.
- Технологія проектування програмних систем
- 1.Опис навчальної дисципліни
- 2. Тематика і зміст лекцій
- 3. Практичні заняття по дисципліні "Технологія проектування програмних систем"
- 4. Шкала оцінювання
- 5. Оцінка успішності в балах при повному виконанні умов і графіку навчального процесу
- Лабораторна робота № 1
- 2. Ітераційні моделі розробки пз
- 3. Специфікація програмного забезпечення
- 4. Проектування і реалізація пз
- 6. Еволюція програмних систем
- 7. Автоматизовані засоби розробки пз
- Лабораторна робота № 2
- 2. Користувацькі вимоги
- 3. Системні вимоги
- 4. Документування системних вимог
- 4. Додатки
- 5. Покажчики
- Лабораторна робота № 3
- 1. Прототипування в процесі розробки пз
- 2. Технології швидкого прототипування
- 3. Прототипування користувацьких інтерфейсів
- Лабораторна робота № 4
- 1. Формальні специфікації в процесі розробки пз
- 2. Специфицирование інтерфейсів
- 3. Специфікація поведінки систем
- Лабораторна робота № 5
- 1. Проектування систем
- 2. Керуючі програми
- 3. Системи спостереження і керування
- 4. Системи збору даних