ВУЗ:
Составители:
25
3.1.3. Средства синхронизации и взаимодействия про-
цессов
Процессам часто нужно взаимодействовать друг с другом,
например, один процесс может передавать данные другому про-
цессу, или несколько процессов могут обрабатывать данные из
общего файла. Во всех этих случаях возникает проблема син-
хронизации процессов, которая может решаться приостановкой
и активизацией процессов, организацией очередей, блокирова-
нием и освобождением ресурсов.
Пренебрежение вопросами синхронизации процессов, вы-
полняющихся в режиме мультипрограммирования, может при-
вести к их неправильной работе или даже к краху системы. Рас-
смотрим, например, программу печати файлов (принт-сервер –
рис. 7). Эта программа печатает по очереди все файлы, имена
которых последовательно в порядке поступления записывают в
специальный общедоступный файл "заказов" другие программы.
Особая переменная NEXT, также доступная всем процессам-
клиентам, содержит номер первой свободной для записи имени
файла позиции файла "заказов". Процессы-клиенты читают эту
переменную, записывают в соответствующую позицию файла
"заказов" имя своего файла и наращивают значение NEXT
на единицу. Предположим, что в некоторый момент процесс R
решил распечатать свой файл, для этого он прочитал значение
переменной NEXT, значение которой для определенности пред-
положим равным 4. Процесс запомнил это значение, но помес-
тить имя файла не успел, так как его выполнение было прервано
(например, вследствие исчерпания кванта). Особая переменная
NEXT, также доступная всем процессам-клиентам, содержит
номер первой свободной для записи имени файла позиции фай-
ла "заказов". Процессы-клиенты читают эту переменную, запи-
сывают в соответствующую позицию файла "заказов" имя сво-
его файла и наращивают значение NEXT на единицу.
3.1.3. Средства синхронизации и взаимодействия про- цессов Процессам часто нужно взаимодействовать друг с другом, например, один процесс может передавать данные другому про- цессу, или несколько процессов могут обрабатывать данные из общего файла. Во всех этих случаях возникает проблема син- хронизации процессов, которая может решаться приостановкой и активизацией процессов, организацией очередей, блокирова- нием и освобождением ресурсов. Пренебрежение вопросами синхронизации процессов, вы- полняющихся в режиме мультипрограммирования, может при- вести к их неправильной работе или даже к краху системы. Рас- смотрим, например, программу печати файлов (принт-сервер – рис. 7). Эта программа печатает по очереди все файлы, имена которых последовательно в порядке поступления записывают в специальный общедоступный файл "заказов" другие программы. Особая переменная NEXT, также доступная всем процессам- клиентам, содержит номер первой свободной для записи имени файла позиции файла "заказов". Процессы-клиенты читают эту переменную, записывают в соответствующую позицию файла "заказов" имя своего файла и наращивают значение NEXT на единицу. Предположим, что в некоторый момент процесс R решил распечатать свой файл, для этого он прочитал значение переменной NEXT, значение которой для определенности пред- положим равным 4. Процесс запомнил это значение, но помес- тить имя файла не успел, так как его выполнение было прервано (например, вследствие исчерпания кванта). Особая переменная NEXT, также доступная всем процессам-клиентам, содержит номер первой свободной для записи имени файла позиции фай- ла "заказов". Процессы-клиенты читают эту переменную, запи- сывают в соответствующую позицию файла "заказов" имя сво- его файла и наращивают значение NEXT на единицу. 25
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »