ВУЗ:
Составители:
75
Сигналы. Вообще, сигнал – это некоторое значимое событие
(например, прерывание), источником которого может быть ОС или иная
составляющая вычислительной системы. Сигналы вызывают прерыва-
ние процесса, выполнение заранее предусмотренных действий.
Сигналы могут вырабатываться как результат работы самого про-
цесса (т.е. вырабатываться синхронно), а могут быть направлены про-
цессу другим процессом (т.е. вырабатываться асинхронно). Синхронные
сигналы чаще всего приходят от системы прерываний процессора и сви-
детельствуют о действиях процесса, блокируемых аппаратурой, напри-
мер деление на нуль, ошибка адресации, нарушение защиты памяти и
т.д. Примером асинхронного сигнала является сигнал с терминала
(например, сигнал об оперативном снятии процесса с выполнения с по-
мощью некоторой нажатой комбинации клавиш –Ctrl + C, Ctrl + Break),
в результате чего ОС вырабатывает сигнал и направляет его активному
процессу.
Сигналы обеспечивают логическую связь между процессами, а
также между процессами и пользователями (терминалами). Поскольку
посылка сигнала предусматривает знание идентификатора процесса, то
взаимодействие посредством сигналов возможно только между род-
ственными процессами, которые могут получить данные об идентифи-
каторах друг друга.
Следует отметить, что в распределенных системах, состоящих из
нескольких процессоров, каждый из которых имеет собственную опера-
тивную память, блокирующие переменные, семафоры, сигналы и другие
аналогичные средства, основанные на разделяемой памяти, оказываются
непригодными. В таких системах синхронизация может быть реализова-
на только посредством обмена сообщениями, рассмотренными ниже в
п. 3.3.6.
3.3.5 Проблемы синхронизации
В п. 3.3.4 рассмотрен ряд механизмов ОС, используемых для син-
хронизации параллельно действующих процессов. Однако, в некоторых
случаях, при конкуренции нескольких процессов за обладание конеч-
ным числом ресурсов, может возникнуть ситуация, когда запрашивае-
мый процессом ресурс недоступен, и ОС переводит данный процесс в
состояние ожидания. В то же время, если этот же ресурс удерживается
другим ожидающим процессом, то первый процесс не сможет сменить
свое состояние. Подобная ситуация называется взаимной блокировкой,
дедлоком (англ. deadlocks), клинчем (англ. clinch), или тупиком. Напри-
мер, тупик возникнет при перестановке местами операций Р(е) и Р(b) в
примере с процессами «читатель» и «писатель», рассмотренном выше. В
этом случае ни один из этих потоков не сможет завершить начатую ра-
Страницы
- « первая
- ‹ предыдущая
- …
- 73
- 74
- 75
- 76
- 77
- …
- следующая ›
- последняя »
