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

Средства синхронизации и взаимодействия процессов



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

Пренебрежение вопросами синхронизации процессов, выполняющихся в режиме мультипрограммирования, может привести к их неправильной работе или даже к краху системы. Рассмотрим, например (рисунок 1.2), программу печати файлов (принт-сервер). Эта программа печатает по очереди все файлы, имена которых последовательно в порядке поступления записывают в специальный общедоступный файл «Заказы» другие программы. Переменная NEXT, также доступная всем процессам-клиентам, содержит номер первой свободной для записи имени файла позиции файла «Заказы». Процессы-клиенты читают эту переменную, записывают в соответствующую позицию файла «Заказы» имя своего файла и наращивают значение NEXT на единицу. Предположим, что в некоторый момент процесс А решил распечатать свой файл, для этого он прочитал значение переменной NEXT, значение которой предположим равным трем. Процесс запомнил это значение, но поместить имя файла не успел, так как его выполнение было прервано (например, исчерпан квант процессорного времени). Очередной процесс В, желающий распечатать файл, прочитал то же самое значение переменной NEXT, поместил в третью позицию имя своего файла и нарастил значение переменной на единицу, после чего был прерван. Когда в очередной раз управление будет передано процессу А, то он, продолжая свое выполнение, в полном соответствии со значением текущей свободной позиции, полученным во время предыдущей итерации, запишет имя файла также в позицию три, поверх имени файла процесса В.

Рис. 1.2. Пример необходимости синхронизации

Таким образом, процесс В не сможет распечатать свой файл.

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





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



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