Глава 6. Механизмы синхронизации
Рассмотренные в конце предыдущей главы алгоритмы хотя и являются корректными, но достаточно громоздки и не обладают элегантностью. Более того, процедура ожидания входа в критический участок включает в себя достаточно длительное вращение процесса в пустом цикле, вхолостую пожирая драгоценное время процессора. Существуют и другие серьезные недостатки у алгоритмов, построенных средствами обычных языков программирования. Допустим, что в вычислительной системе находятся два взаимодействующих процесса: один из них — H — с высоким приоритетом, другой —L — с низким приоритетом. Пусть планировщик устроен так, что процесс с высоким приоритетом вытесняет низкоприоритетный процесс всякий раз, когда он готов к исполнению, и занимает процессор на все время своего CPU burst (если не появится процесс с еще большим приоритетом). Тогда в случае, когда процесс L находится в своей критической секции, а процессH, получив процессор, подошел ко входу в критическую область, мы получаем тупиковую ситуацию. Процесс Hне может войти в критическую область, находясь в цикле, а процессL не получает управления, чтобы покинуть критический участок.
Для того чтобы устранить возникновение подобных проблем были разработаны различные механизмы синхронизации более высокого уровня: семафоры, мониторы и сообщения, рассмотрению которых и посвящена данная глава.
Дата добавления: 2015-07-24; просмотров: 623;