Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

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

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

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

· с синхронизацией процесса с внешними событиями (например, с нажатием ком­бинации клавиш).

Конец 35 стр распаковки PDF

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

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

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

Гонки рассмотрим на примере приложения, ведущего базу данных о клиентах некото­рого предприятия (рис. 2.11).

Рисунок 2.11 - Возникновение гонок при доступе к разделяемым данным

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

Пусть приложение оформлено как единый процесс, имеющий два потока, А и В. Пусть поток А заносит в базу данные о заказах, а поток В - данные об оплате. Оба потока совме­стно работают над общим файлом базы данных по следующему общему алгоритму.

1. Считать из файла базы данных в буфер запись о клиенте.

2. Изменить запись (поток А заносит данные о заказе, поток В - об оплате).

3. Вернуть измененную запись в файл.

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

Пусть в некоторый момент поток А обновляет данные о заказе в записи о клиен­те, выполняет шаги А1 и А2, но выполнить шаг А3 (занести содержимое буфера в запись базы) не успевает вследствие завершения кванта времени.

Потоку В требуется внести сведения об оплате заказа этого же клиента. Предпо­ложим, что, когда подходит очередь потока В, он успевает сделать шаги В1 и В2, а затем прерывается. При этом в его буфере оказывается запись, где данные о заказе относятся к старому заказу, а данные об оплате - к новому.

Далее поток А получает управление, выполняет шаг А3 - запись в базу содержи­мого своего буфера - и завершается. Вслед за ним то же проделывает поток В.

Смена содержимого буферов и базы приведена на рис. 2.12.

Рисунок 2.12 - Пошаговое выполнение и результаты потоков в ситуации гонок

В итоге данные о но­вом заказе оказались потеряны.

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

Рисунок 2.13 - Влияние относительных скоростей потоков на результат решения задачи

Все определяется взаимными скоростями потоков и моментами их прерывания.





Дата публикования: 2015-10-09; Прочитано: 1680 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...