![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Потребность в синхронизации процессов возникает только в мультипрограммных ОС и связана с совместным использованием аппаратных и информационных ресурсов вычислительной системы. Выполнение процессов в таких ОС в общем случае имеет асинхронный характер, т.е. процессы выполняются независимо в том плане, что практически невозможно с полной определенностью сказать, на каком этапе выполнения будет находиться определенный процесс в определенный момент времени.
Суть синхронизации процессов состоит в согласовании их скоростей путем приостановки процесса до наступления некоторого события и последующей его активизации при наступлении этого события.
Синхронизация лежит в основе любого взаимодействия процессов, которое может быть связано:
· с обменом данными (процесс-получатель должен обращаться за данными только после их записи процессом-отправителем);
· с разделением ресурсов (например, если активному процессу требуется доступ к последовательному порту, занятому другим процессом, то активный процесс должен быть приостановлен до освобождения ресурса);
· с синхронизацией процесса с внешними событиями (например, с нажатием комбинации клавиш).
Конец 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; Прочитано: 1745 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!