ВУЗ:
Реализованный таким образом флажок называется семафором (semaphore). Это напоминает железнодорожное сигналь-
ное устройство, используемое для управления доступом к определенному участку пути. Фактически в системах программно-
го обеспечения семафоры используются почти так же, как и на железнодорожных линиях. Участку пути, на котором может
находиться только один состав, соответствует последовательность команд, которая может выполняться одновременно толь-
ко одним процессом. Такая последовательность команд называется критической областью (critical region). Требование о
том, что в любой заданный момент только один процесс может выполнять команды критической области, называют взаим-
ным исключением (mutual exclusion). Типичным способом реализации взаимного исключения для некоторой критической
области является защита этой области с помощью семафора. Чтобы войти в критическую область, процесс должен удостове-
риться, что семафор открыт, и затем изменить его значение на "закрыт" еще до того, как войдет в критическую область. При
выходе из критической области процесс должен вновь открыть семафор.
Взаимная блокировка. Другой проблемой, которая может иметь место при распределении ресурсов, является взаимная
блокировка (deadlock). Это состояние, при котором дальнейшая работа двух или нескольких процессов взаимно заблокиро-
вана, так как каждый из них ожидает доступа к ресурсам, которые уже предоставлены другому. Например, один процесс мо-
жет иметь доступ к принтеру, но ожидать доступа к накопителю на магнитных лентах, в то время как другой уже получил
доступ к накопителю на магнитных лентах, но ожидает освобождения принтера. Другим примером является ситуация, когда
процессы создают новые процессы, предназначенные для выполнения подзадач. Если у планировщика уже нет свободного
места в таблице процессов, а каждому из процессов в системе для завершения своей задачи необходимо создать дополнитель-
ный процесс, то ни один из процессов не сможет продолжить свою работу. Эта и подобные ситуации (рис. 3.9) могут серьезно
нарушить работу системы.
Анализ причин появления взаимных блокировок показывает, что такие ситуации возможны только тогда, когда удовле-
творены следующие три условия.
1. В системе имеет место конкуренция за использование неразделяемых ресурсов.
2. Ресурсы запрашиваются частями – процесс, уже получив некоторые ресурсы, продолжает запрашивать другие.
3. Предоставленный ресурс не может быть отобран принудительно.
Смысл выделения этих трех условий состоит в том, что проблема возникновения взаимной блокировки может быть ре-
шена посредством устранения любого из них.
Рис. 3.9. Взаимная блокировка, возникшая в результате конкуренции
за использование неразделяемых пересечений железнодорожных путей
В общем случае методы, предназначенные для подавления третьего условия, относятся к категории схем обнаружения вза-
имных блокировок с последующей коррекцией. При данном подходе считается, что тупиковые ситуации возникают настоль-
ко редко, что не стоит тратить усилия на предотвращение этой проблемы. Суть метода состоит в обнаружении ситуации вза-
имной блокировки, когда она уже возникла, и устранении ее посредством отбора некоторых предоставленных ресурсов.
Приведенный выше пример с заполненной до отказа таблицей процессов можно отнести к этому классу. Как правило, сис-
темный администратор устанавливает размер таблицы процессов достаточно большим для данной конкретной системы. Ес-
ли взаимная блокировка по причине переполнения таблицы процессов все же возникнет, то администратор просто использу-
ет свое право "суперпользователя", чтобы удалить (технический термин – убить) некоторые из процессов. В результате ос-
вобождается место в таблице процессов, после чего оставшиеся процессы смогут продолжить выполнение своих заданий.
Методики, нацеленные на устранение двух первых условий, относятся к схемам исключения тупиковых ситуаций. Одна
из них, например, позволяет исключить второе условие за счет того, что каждый процесс должен запрашивать все необходи-
мые ему ресурсы сразу. Другая, возможно, более утонченная методика, направлена на устранение первого условия, но не за
счет простого запрета конкуренции, а за счет превращения неделимых ресурсов в разделяемые. Например, предположим, что
рассматриваемым ресурсом является принтер и множество процессов запрашивают доступ к нему. Каждый раз, когда про-
цесс запрашивает доступ к принтеру, система предоставляет ему этот доступ. Но вместо того чтобы подключить процесс
непосредственно к драйверу принтера, операционная система подключает его к драйверу логического устройства, записы-
вающего предназначенную для печати информацию на диск, вместо того чтобы отправить ее непосредственно на принтер. В
результате каждый процесс выполняется нормальным образом, полагая, что он имеет доступ к принтеру. Позднее, когда
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
