Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Листинг 13.2. Реализация кольцевого буфера




 

class CircularBuffer

{

int bufsize;

SensorRecord [] std're;

int numberOfEntries = 0;

int front = 0, back = 0;

 

CircularBuffer (int n) {

bufsize = n;

store = new SensorRecord [bufsize];

}//CircularBuffer

 

synchronized void put (SensorRecord rec) throws

InterruptedException

{

if(numberOfEntries == bufsize)

waitt);

store [back] = new SensorRecord (rec.sensorld,rec.sensorVal);

back = back + 1;

if(back == bufsize)

back = 0;

numberOfEntries = numberOfEntries + 1;

notify();

}//put

synchronized SensorRecord get() throws InterruptedException

{

SensorRecord result = new SensorRecord(-1,-1);

if(numberOfEntries == 0)

wait ();

result = store [front];

front = front + 1;

if(front == bufsize)

front = 0;

numberOfEntries = numberOfEntries - 1;

notify();

return result;

}// get

}//CircularBuffer

Модификатор synchronized, связанный с методами get и put, указывает на то, что данные методы не должны выполняться параллельно. При вызове одного из этих методов система реального времени блокирует экземпляр объекта, чтобы в это же время не произошел вызов другого метода и соответственно не производились манипуляции на том же участке буфера. Вызовы методов wait и notify из методов get и put гарантируют, что входные данные нельзя положить в полный буфер или взять из пустого буфера. Метод wait вызывает поток и приостанавливается, пока другой поток с помощью метода notify не отправит ему сообщение о снятии ожидания. При вызове метода wait блокировка на защищенные данные объекта снимается. Метод notify возобновляет выполнение одного из ожидающих потоков.

КЛЮЧЕВЫЕ ПОНЯТИЙ

 

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

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

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

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

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

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

 

Упражнения

 

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

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

13.3. Нарисуйте диаграммы состояний управляющего ПО для следующих систем.

• Автоматическая стиральная машина с разными программами для разных типов белья.

• Программное обеспечение для проигрывателя компакт-дисков.

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

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

13.4. Используя методы проектирования систем реального времени спроектируйте заново систему сбора данных от метеостанций, рассмотренную в главе 12, в виде системы "стимул-ответ".

13.5. Спроектируйте архитектуру процессов для системы наблюдения, собирающей данные с группы датчиков, измеряющих состав воздуха и расположенных вокруг города. В системе 5000 датчиков, организованных в группы по 100 штук. Каждый датчик должен проверяться 4 раза в секунду. Если более 30% датчиков в группе зафиксируют, что качество воздуха ниже допустимого уровня, активизируется предупреждающий световой сигнал. Все датчики передают собранные данные центральному компьютеру, который каждые 15 мин генерирует отчет о составе воздуха в городе.

13.6. Обсудите сильные и слабые стороны Java как языка программирования для реализации систем реального времени.

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

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

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

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...