Параллельные процессы

Взаимодействие процессов: синхронизация, тупики

Дисциплина обслуживания приоритетов

-относительная (выбор по наивысшему приоритету, но далее обработка не может быть отложена)

-абсолютная (происходит переход к обработке более приоритетного с откладыванием текущего)

В схеме с абсолютными приоритетами заложено маскирование, так как запрещаются запросы с равными или более низкими приоритетами.

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

Упорядочивание работы обработчиков прерываний – механизм приоритетных очередей.

Наличие в ОС программного модуля – диспетчера прерываний.

При возникновении прерывания – вызов диспетчера.

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

Планирование обработки прерываний в Windows NT

Все источники прерываний делятся на несколько классов, и каждому уровню присваивается уровень запроса прерывания – Interrupt Request Level (IRQL). Этот уровень и представляет приоритет данного класса.

Поступление запроса на прерывание/исключение – вызов диспетчера прерываний, который:

-Запоминает информацию об источнике прерывания

-Анализирует его приоритет

Если приоритет <= IRQL прерванного, то отложить в очередь,

иначе текущий обработчик – в очередь, управление - новому

Особенности планирования ввода/ вывода

Одна из важных задач планирования – обеспечение занятости внешних устройств

Для этого можно присваивать процессам высокий приоритет в периоды, когда они интенсивно используют ввод/ вывод

Эти периоды легко прослеживаются: - процесс блокируется про обращении к вводу/выводу. - операции ввода/вывода обычно бывают сконцентрированы в отдельных частях программ.

Применяется стратегия HPF.

Процессы, выполнение которых хотя бы частично перекрывается по времени, называются параллельными процессами

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

Они могут быть независимыми и взаимодействующими.

Независимые процессы – процессы, использующие независимое множество ресурсов и на результат работы такого процесса не влияет работа независимого от него процесса.

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

Совместное использование несколькими процессами ресурса ВС, когда каждый из процессов одновременно владеет ресурсом называют разделением ресурса.

Разделению подлежат как аппаратные, так программные ресурсы.

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

Необходимо уметь решать две важнейшие задачи:

1. Распределение ресурсов между процессами.

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

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

Рассмотрим пример ситуации, в которой нарушается требование мультипрограммирования.

Посмотрим на рисунок и представить себе, что время идет сверху вниз. Оба процесса выполняют некоторую условную функцию if, в которой есть условный input (ввод некоторого символа) и условный output (вывод этой же переменной) понятно, что реализация этих функций нас сейчас не очень волнует, нас волнует в первую очередь то, что сейчас произойдет. Видно, что при такой ситуации у нас получается, что процесс А считал в разделяемую переменную in некоторый символ, после чего управление было передано на процесс В, и процесс В затер значение, которое считал процесс А. После чего он вывел новое значение, управление опять было передано процессу А, и процесс А вывел значение, не то которое он считал, а то, которое было затерто уже процессом В. Т.е. один из символов просто потерялся, в то время как другой был выведен дважды. Здесь предполагается, что in – это некоторая разделяемая переменная, т.е. некоторый разделяемый ресурс. В данном случае эта переменная и будет разделяемым физическим ресурсом

Такие ситуации называются гонками (race conditions) между процессами, а процессы – конкурирующими.

Часть программы (фактически набор операций), в которой осуществляется работа с критическим ресурсом, называется критической секцией, или критическим интервалом.

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: