Системное и прикладное программное обеспечение. Абрахин С.И - 25 стр.

UptoLike

Составители: 

25
3.1.3. Средства синхронизации и взаимодействия про-
цессов
Процессам часто нужно взаимодействовать друг с другом,
например, один процесс может передавать данные другому про-
цессу, или несколько процессов могут обрабатывать данные из
общего файла. Во всех этих случаях возникает проблема син-
хронизации процессов, которая может решаться приостановкой
и активизацией процессов, организацией очередей, блокирова-
нием и освобождением ресурсов.
Пренебрежение вопросами синхронизации процессов, вы-
полняющихся в режиме мультипрограммирования, может при-
вести к их неправильной работе или даже к краху системы. Рас-
смотрим, например, программу печати файлов (принт-сервер
рис. 7). Эта программа печатает по очереди все файлы, имена
которых последовательно в порядке поступления записывают в
специальный общедоступный файл "заказов" другие программы.
Особая переменная NEXT, также доступная всем процессам-
клиентам, содержит номер первой свободной для записи имени
файла позиции файла "заказов". Процессы-клиенты читают эту
переменную, записывают в соответствующую позицию файла
"заказов" имя своего файла и наращивают значение NEXT
на единицу. Предположим, что в некоторый момент процесс R
решил распечатать свой файл, для этого он прочитал значение
переменной NEXT, значение которой для определенности пред-
положим равным 4. Процесс запомнил это значение, но помес-
тить имя файла не успел, так как его выполнение было прервано
апример, вследствие исчерпания кванта). Особая переменная
NEXT, также доступная всем процессам-клиентам, содержит
номер первой свободной для записи имени файла позиции фай-
ла "заказов". Процессы-клиенты читают эту переменную, запи-
сывают в соответствующую позицию файла "заказов" имя сво-
его файла и наращивают значение NEXT на единицу.