Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А.




Скачать 2.01 Mb.
Название Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А.
страница 4/30
Дата публикации 13.06.2014
Размер 2.01 Mb.
Тип Документы
literature-edu.ru > Информатика > Документы
1   2   3   4   5   6   7   8   9   ...   30

3Синхронизация параллельных процессов.


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

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

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

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

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

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

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

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

void echo()

{

char in;

input(in);

output(in)

}

В данном примере мы используем некоторые условные функции input() и output(), так как в данный момент для нас неважно, как конкретно реализован ввод/вывод в данной системе. Поскольку такой кусок кода будет использоваться практически в любой программе, его удобно сделать разделяемым, когда ОС загружает в некоторую область памяти, доступную всем процессам, одну-единственную копию данной программы, и все процессы используют эту копию совместно. Заметим, что в этом случае переменная in является разделяемой. Представим теперь ситуацию, изображенную на Рис. 2:


Рис. 2 Конкуренция процессов за ресурс.

  1. Процесс А вызывает функцию echo(), однако в тот момент, когда входной символ был считан в переменную in, но до того, как он был выведен на экран, выполнение процесса прерывается и на выполнение загружается процесс В.

  2. Процесс В тоже вызывает функцию echo(). После выполнения функции echo() переменная in содержит уж новое значение, считанное с клавиатуры.

  3. Процесс А возобновляет свою работу в той точке, в которой он был прерван, и выводит на экран символ, находящийся в переменной in.

В рассмотренном случае символ, считанный процессом А, был потерян, а символ, считанный процессом В, был выведен дважды. Результат выполнения процессов здесь зависит от того, в какой момент осуществляется переключение процессов, и от того, какой конкретно процесс будет выбран для выполнения следующим. Такие ситуации называются гонками (в англоязычной литературе - race conditions) между процессами, а процессы – конкурирующими. Единственный способ избежать гонок при использовании разделяемых ресурсов – контролировать доступ к любым разделяемым ресурсам в системе. При этом необходимо организовать взаимное исключение – т.е. такой способ работы с разделяемым ресурсом, при котором постулируется, что в тот момент, когда один из процессов работает с разделяемым ресурсом, все остальные процессы не могут иметь к нему доступ.

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

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

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

  1. Возникновение так называемых тупиков (deadlocks). Рассмотрим следующую ситуацию (см. Рис. 3): имеются процессы А и В, каждому из которых в некоторый момент требуется иметь доступ к двум ресурсам R1 и R2. Процесс А получил доступ к ресурсу R1, и следовательно, никакой другой процесс не может иметь к нему доступ, пока процесс А не закончит с ним работать. Одновременно процесс В завладел ресурсом R2. В этой ситуации каждый из процессов ожидает освобождения недостающего ресурса, но оба ресурса никогда не будут освобождены, и процессы никогда не смогут выполнить необходимые действия.



Рис. 3 Возникновение тупиковой ситуации.

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

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

  1. Не должно возникать ситуации, при которой процесс, находящийся вне своей критической секции, блокирует исполнение другого процесса.

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

Далее мы рассмотрим различные механизмы организации взаимного исключения для синхронизации доступа к разделяемым ресурсам и обсудим достоинства, недостатки и области применения этих подходов.
1   2   3   4   5   6   7   8   9   ...   30

Похожие:

Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Фгбоу впо московский государственный университет
Московский государственный университет им. М. В. Ломоносова, биологический факультет, кафедра энтомологии
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Культивируемые микроорганизмы из пищеварительного тракта дождевых червей
Факультет почвоведения, Московский государственный университет имени М. В. Ломоносова, 119991, Москва, гсп-1, Ленинские горы, мгу...
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Дипломную работу Студента Богданова Дмитрия Игоревича
Вычислительной Математики и Кибернетики Московского Государственного Университета им. М. В. Ломоносова
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Дипломную работу Студента Студеникина Романа Валерьевича
Вычислительной Математики и Кибернетики Московского Государственного Университета им. М. В. Ломоносова
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Факультет вычислительной математики и кибернетики Лаборатория вычислительных комплексов
«Разработка и исследование эффективности алгоритма формирования содержимого учебных курсов»
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Статьи (жирным шрифтом)
Московский государственный университет имени М. В. Ломоносова, физический факультет, кафедра общей физики. Россия,119991, Москва,...
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Московский Государственный Университет им. М. В. Ломоносова Механико-математический...
Рисунок Графики каналов R,G,B для строки изображения поля с разметкой. Пики соответствуют линиям разметки. При построении таких графиков...
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Априорные оценки точности разностных схем для задачи движения вязкого слабосжимаемого газа
К. А. Жуков, А. В. Попов Московский Государственный Университет имени М. В. Ломоносова
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Резюме валерия Манилла
Российская Федерация, Москва, гсп-1, Ленинские горы, Московский государственный университет имени М. В. Ломоносова 119991, Главное...
Московский Государственный Университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина, А. icon Российской Федерации Министерство Российской Федерации по атомной...
Книга предназначена для студентов, специализирующихся в областях, связанных с информационной безопасностью, а также для преподавателей...
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции