Типы взаимодействия процессов.



1. сотрудничающие процессы:

¨ процессы, разделяющие только коммуникационный канал, по которому один передает данные, а другой их получает;

¨ процессы, осуществляющие взаимную синхронизацию: когда работает один, другой ждет окончания его работы ;

2. конкурирующие процессы:

¨ процессы, использующие совместно разделяемый ресурс;

¨ процессы, использующие критические секции;

¨ процессы, использующие взаимные исключения.

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

Взаимное исключение – это способ синхронизации параллельно работающих процессов, использующих разделяемый постоянный критичный ресурс. Если ресурс занят, то системный вызов “захватить ресурс” переводит процесс из состояния выполнения в состояние ожидания. Когда ресурс будет освобожден посредством системного вызова “освободить ресурс”, то этот процесс вернется в состояние выполнения и продолжит свою работу. Ресурс при этом перейдет в состояние “занят”.

При синхронизации задач необходимо бороться с 3-мя проблемами:

1. “блокировка” (“lockout”): процесс (задача) ожидает ресурс, который никогда не освободится;

2. “тупик” (“deadlock”): два процесса (задачи) владеют каждый по ресурсу и ожидают освобождения ресурса, которым владеет другой процесс (задача)

3. “голодовка” (“starvation”): процесс (задача) монополизировал процессор.

Для минимизации этих проблем используются следующие идеи.

1. Количество ресурсов ограничено, поэтому нельзя допускать создания задач, для которых недостаточно ресурсов для выполнения.

2. Задачи делятся на группы:

- неактивные задачи, которым не хватило даже пассивных ресурсов, и ожидающие событий задачи; таким задачам активный ресурс (процессор) не дается вообще;

- готовые задачи, у которых есть все необходимые пассивные ресурсы, но нет процессора; являются кандидатами на получение процессора в случае его освобождения;

- выполняющиеся задачи, у которых есть все необходимые пассивные ресурсы, и процессор.

Классический и объектно-ориентированный подходы к построению ОСРВ.

В силу преимуществ объектно-ориентированного подхода приложения создаются на его основе, используя тот или иной язык программирования, наилучшим образом поддерживающий этот подход. Архитектуры же классических операционных систем реального времени основаны на архитектурах UNIX систем и используют традиционный процедурный подход к программированию. Сочетание объектно-ориентированных приложений и процедурных операционных систем имеет ряд недостатков.

1. Происходит разрыв парадигмы программирования: в едином работающем комплексе (приложение + ОСРВ) разные компоненты используют разные подходы к разработке программного обеспечения.

2. Не используются все возможности объектно-ориентированного подхода.

3. Возникают некоторые потери производительности из-за разного типа интерфейсов в ОСРВ и приложении.

 

 

Монолитная архитектура.

ОСРВ с монолитной архитектурой можно представить в виде

1. прикладного уровня: состоит из работающих прикладных процессов;

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

¨ интерфейс между приложениями и ядром (API – application programming interface);

¨ собственно ядро системы;

¨ интерфейс между ядром и оборудованием (драйверы устройств).

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

Недостатки монолитной архитектуры.

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

2. Ядро не может быть прервано пользовательской задачей (non-preemptable). Это может приводить к тому, что высокоприоритетная задача может не получить управления из-за работы низкоприоритетной.

3. Сложность переноса на новые архитектуры процессора из-за значительных ассемблерных вставок.

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


Дата добавления: 2018-08-06; просмотров: 463; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!