АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Логическая корректность многозадачных систем

Читайте также:
  1. A) к любой экономической системе
  2. A) прогрессивная система налогообложения.
  3. C) Систематическими
  4. CASE-технология создания информационных систем
  5. I СИСТЕМА, ИСТОЧНИКИ, ИСТОРИЧЕСКАЯ ТРАДИЦИЯ РИМСКОГО ПРАВА
  6. I. Основні риси політичної системи України
  7. I. ОСНОВНЫЕ ПОНЯТИЯ (ТЕРМИНЫ) ЭКОЛОГИИ. ЕЕ СИСТЕМНОСТЬ
  8. I. При каких условиях эта психологическая информация может стать психодиагностической?
  9. I. Социально-психологическая сущность неуставных взаимоотношений
  10. I. Суспільство як соціальна система.
  11. I. Формирование системы военной психологии в России.
  12. I.2. Система римского права

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

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

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

Пример A.

           
 
void task_1(void){// Корневая // программа // задачи t1 ... //Подготовка // к приему // сигнала X Get_signal(X); //Ждать сигнал X ... //Подготовка // к передаче // сигнала Y Put_signal(Y); //Передать // сигнал Y }  
 
void task_2(void){// Корневая // программа // задачи t2 ... //Подготовка // к приему // сигнала Y Get_signal(Y); //Ждать сигнал Y ... //Подготовка // к передаче // сигнала X Put_signal(X); //Передать // сигнал X }  
   
 
 

 

 


 

Ситуация, возникающая при исполнении этих двух задач, относится к разряду взаимных блокировок (deadlock, clinch). В результате выполнения системного вызова задание 1t1 приостанавливается (попадает в состояние ожидания передачи сигнала X). Вывести 1t1 из состояния ожидания может задание 1t2. Но 1t2, в свою очередь, попадает в состояние ожидания сигнала от 1t1. Если нет других заданий, передающих сигналы X или Y, то задания 1t1 и 1t2 навсегда остаются в состоянии ожидания, хотя разработчики задач, по-видимому, не предполагали такого хода событий.

 

Пример B.

 
 

 


Неустойчивая взаимная блокировка. В рассмотренном выше примере некорректной организации обмена сигналами взаимная блокировка возникает устойчиво, вне зависимости от порядка регистрации заданий, относительного темпа исполнения задач.

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

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

 

 
 

 

 


Рис. 28. Неустойчивая взаимная блокировка

 

Действительно, порядок выполнения операций запроса ресурсов в рамках взаимодействия заданий, изображенный на рис. 28 а обеспечил благополучное исполнение и завершение обеих задач, порядок выполнения рис. 28 б приводит к их взаимной блокировке (см. комментарии в табл. 7).

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

 

Таблица 7. Порядок событий при неустойчивой взаимной блокировке заданий

 

Моменты времени Типы системных событий Комментарии
  Порядок событий на диаграмме рис. 28 а
t 1, t 2 e зап(t 1, g 2), e выд(t 1, g 2) e зап(t 1, g 1), e выд(t 1, g 1) Доступ к ресурсам g 2 и g 1 запрашиваются и предоставляются заданию типа τ1
t 3 e зап(t 2, g 1) Задание типа τ2 запрашивает доступ к занятому ресурсу g 1 и переводится в состояние ожидания
t 4 e осв(t 1, g 2) Задание типа τ1 освобождает ресурс g 2
t 5 e осв(t 1, g 1), e выд(t 2, g 1) Задание типа τ1 освобождает ресурс g 1;, который тут же предоставляется ожидающему его заданию τ2
t 6 e осв(t 2, g 2), e выд(t 2, g 2) Доступ к ресурсу g 2 запрашивается и предоставляются заданию типа τ2
t 7, t 8 e осв(t 2, g 1), e осв(t 2, g 2) Задание типа τ1 освобождает ресурсы g 1 и g 2, оба задания успешно завершаются
  Порядок событий на диаграмме рис. 28 б
t 1, t 2 e зап(t 2, g 1), e выд(t 2, g 1) e зап(t 1, g 2), e выд(t 1, g 2) Доступ к ресурсам g 1 и g 2 последовательно запрашивается и предоставляются заданиям типа τ2 и τ1
t 3, t 4 e зап(t 2, g 1), e зап(t 1, g 2) Задания типа τ2 и τ1 запрашивающие доступ к занятым ресурсам g 1 и g 2 переводятся в состояние ожидания, возникает ситуация взаимной блокировки

 

Контрольные вопросы.

1. Какие дефекты в структуре межзадачных связей могут повлечь некорректное поведение СРВ?

2. Дать примеры таких систем межзадачных связей, которые приводят к взаимным блокировкам задач.

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

4. Возможны ли взаимные блокировки при квазипараллельном исполнении задач?

5. Возможны ли взаимные блокировки при истинно параллельном исполнении взаимосвязанных задач?

6. Могут ли возникать взаимные блокировки в системе задач без состояний ожидания.

7. Возможно ли обнаружение дефектов структуры межзадачных связей путем тестирования комплекса программных средств СРВ?

8. Какие средства проверки корректности межзадачных связей используются при разработке СРВ?


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)