Что понимают под параллельно действующими процессами? В чем отличие независимых и взаимодействующих процессов? 


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



ЗНАЕТЕ ЛИ ВЫ?

Что понимают под параллельно действующими процессами? В чем отличие независимых и взаимодействующих процессов?



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

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

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

В чем заключается обеспечение синхронизации процессов?

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

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

Для ее организации используются средства межпроцессного взаимодействия (Inter Process Communications, IPC), что отражает историческую первичность понятия «процесс» по отношению к понятию «поток». Среди наиболее часто используемых средств синхронизации – сигналы, сообщения, семафоры и мьютексы.

 

Какие механизмы ОС относят к средствам синхронизации процессов и потоков?

Для синхронизации потоков прикладных программ программист может использовать как собственные средства и приемы синхронизации, так и средства ОС.

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

70. Какие примеры необходимости обеспечения синхронизации процессов вам известны?

Предположим, что в некоторый момент процесс R решил распечатать свой файл, для этого он прочитал значение переменной NEXT, значение которой для определенности предположим равным 4. Процесс запомнил это значение, но поместить имя файла не успел, так как его выполнение было прервано (например, в следствие исчерпания кванта). Очередной процесс S, желающий распечатать файл, прочитал то же самое значение переменной NEXT, поместил в четвертую позицию имя своего файла и нарастил значение переменной на единицу. Когда в очередной раз управление будет передано процессу R, то он, продолжая свое выполнение, в полном соответствии со значением текущей свободной позиции, полученным во время предыдущей итерации, запишет имя файла также в позицию 4, поверх имени файла процесса S. Таким образом, процесс S никогда не увидит свой файл распечатанным.

 

Каков механизм синхронизации процессов с использованием блокирующей переменной, семафоров, мониторов, сигналов? Какие характерные особенности каждого из этих методов, достоинства и недостатки?

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

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

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

 

Семафор. Если ресурс занят, то процесс не выполняет циклический опрос, а вызывает системную функцию WAIT(D), здесь D обозначает событие, заключающееся в освобождении ресурса D. Функция WAIT(D) переводит активный процесс в состояние ожидание и делает отметку в его дескрипторе о том, что процесс ожидает события D. Процесс, который в это время использует ресурс D, после выхода из критической секции выполняет системную функцию POST(D), ОС просматривает очередь ожидающих процессов и переводит процесс, ожидающий события D, в состояние готовность.

Плюсы:

· Пассивное ожидание (постановка в очередь и автоматическая выдача ресурсов).

· Возможность управления группой однородных ресурсов.

Минусы: некорректное использование операций на семафоре может привести к нарушению работоспособности параллельных систем.

 

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

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

Минусы: Реализация мониторов требует использования специальных языков программирования и компиляторов для них

 

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

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

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

В чем заключается и когда возникает взаимная блокировка процессов (тупик)? Какие подзадачи требуют разрешения для решения проблемы тупиков? Какие условия необходимы для возникновения тупиков и как их избежать? Какие существуют пути восстановления системы после тупиков?

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

Разрешение проблемы тупиков может быть осуществлено путем:

· распознавания тупиков;

· предотвращения тупиков;

· восстановления системы после тупиков;

· игнорирования.

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

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

В качестве необходимых условий возникновения тупиков называют следующие:

· Условие взаимоисключения. Одновременно использовать ресурс может только один процесс.

· Условие ожидания ресурсов. Процессы удерживают ресурсы, уже выделенные им, и могут запрашивать другие ресурсы.

· Условие «неперераспределяемости». Ресурс, выделенный ранее, не может быть принудительно забран у процесса до его завершения. Освобождены они могут быть только процессом, который их удерживает.

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

При возникновении можно:

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

· вернуть некоторые процессы в область «свопинга»;

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



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 781; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.247.31 (0.009 с.)