Как часто в операционной системе случаются взаимные блокировки - PullRequest
1 голос
/ 20 декабря 2010

Мы много изучаем о тупиках в курсах по операционной системе. Как часто они действительно происходят? или, скорее, как часто существует вероятность возникновения тупика (операционная система фактически не допускает возникновения мертвой блокировки)?

Ответы [ 3 ]

0 голосов
/ 07 октября 2015

Я задавал тот же вопрос.Я сталкивался с этим в своем учебнике:

Расход является одним из важных соображений.Игнорирование возможности взаимоблокировок обходится дешевле, чем другие подходы.Поскольку во многих системах взаимоблокировки случаются нечасто (скажем, один раз в год), дополнительные затраты на другие методы могут показаться неоправданными.

В нем также упоминается, что если это произойдет, система, скорее всего, простонемного замедлиться, и в конечном итоге потребуется перезагрузка.Что-то, с чем мы все знакомы.Цитата из учебника взята со страницы 323 Brian, W. Основы операционной системы.

Но, как упоминал Жоао, разработчик должен создать качественный код.Так что, теоретически, если вы запускаете много ненужных программ, вы можете регулярно сталкиваться с тупиками.

0 голосов
/ 17 января 2017

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

0 голосов
/ 20 декабря 2010

Взаимные блокировки возникают так часто, как вы программируете многопоточные программы с синхронизаторами, и вы не знаете, что делаете.

Вы всегда должны освобождать мьютекс, например, перед тем как поставить поток на ожидание, пока вам нужен тот же мьютекс, чтобы пробудить этот поток, и это только небольшой пример.

...