Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Синхронизация процессов

Параллельные процессы | Списки готовых и ждущих процессов | Основные события и состояния процесса пользователя в реальном времени | Основные операции управления процессами | ПРОЦЕССЫ В UNIX | Префикс программного сегмента PSP | Создание дочерних процессов | Db 0 ; конец дополнительного окружения | Взаимодействие процессов | Взаимное исключение процессов |


Читайте также:
  1. Взаимное исключение процессов
  2. Взаимодействие процессов
  3. Виды торможения, взаимодействие процессов возбуждения и торможения в ЦНС. Опыт И. М. Сеченова
  4. Гигиеническая оценка основных технологических процессов
  5. Деятельностный подход к объяснению перцептивных процессов
  6. Закономерности протекания инновационных процессов.
  7. Информационные системы и автоматизация информационных процессов

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

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

По общим данным выше был приведен пример ввода данных с клавиатуры ПЭВМ. Для него характерно, что какие-то процессы создают эти данные, а другие - читают эти же данные. Пока данные не появятся, нечего делать вторым процессам. Их надо перевести в режим ожидания. Это выполняется командами ввода данных или программно-управляемым прерыванием. Если данные не были прочитаны, то первые процессы ("писатели") надо перевести в режим ожидания. Это выполняется по командам вывода данных. На время ожидания запускаются готовые процессы.

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

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

Мы здесь видим необходимость в синхронизации процессов в некоторых точках. Для синхронизации разработаны различные механизмы.

 
 

 

Синхронизирующие примитивы "ждать - свершить"

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

Наиболее простым грубым средством являются сигналы (signal). Сигналы подобны прерываниям При возникновении сигнала программа прерывается и вызывается заранее заданная программа. Обычно сигналы используются как средство реагирования на серьезные ошибки в аппаратуре, на экстренные ситуации, возникшие в системе, на вмешательство пользователя.

Для синхронизации процессов используют примитивы "ждать - свершить" или операции P и V. Их формат может быть следующим:

Ждать (имя события)

Свершить (имя события)

В отдельных реализациях примитив "свершить" называют «отметить» или «сигнализировать».

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

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

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

Эти примитивы реализованы в ряде мини- и супер-ЭВМ, например в ЕС ЭВМ и IBM 3970.


Дата добавления: 2015-10-02; просмотров: 61 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Критические интервалы| Синхронизация на основе P и V операций

mybiblioteka.su - 2015-2024 год. (0.007 сек.)