В. Столлингс - Операционные системы (1114679), страница 63
Текст из файла (страница 63)
Если нет — процесс приоста„явлнвяется; если же ресурсов достаточно, выполняется последняя проверка— оезопасно ли выполнение запроса. Для этого процессу гипотетически выделяютя требуемые ресурсы, в результате чего получается новое состояние системы , е~;,Б .а:.е, которое и проверяется на безопасность с использованием алгоритма вз листинга 6.1,в. Листинг 6.1. Алгоритм устранения взаимоблокировок а~ Глобальиак структура ятаиних )а1)ос)1«) > хеЯоеас )*) л с1а1тп«) > « ~) ) ( отдта«бна > I СУММ«а«рнмй БапрОС ПРЕВЫШБЕт трЕЬОБаКИЯ / е1яе 19 (геацеБЬ)") > атта11аЬ1е) ) ) с Пртзоста коека ттрокесса л Иопелируе>з зыполкекие запроса -/ ( « 'п«ре делек«те кон ого ОО сто якия ." а11ос ) 1, ) = а11ос ) 1, '«) т гес)«>еБб ) *) т аца1 1 аЬ1е ) * 1 = а«ца1 ) аЬ1е ~ ««) геЯпеас ) «от«аковлекие иск..лк««ОГО состояк>.'я .* ««ри«ос'таковка «ооц«е«.«оа б~ Алгоритм ив>деления ресурсов Бабе)БбаСе 6) о«ц гх ейбатта1 1 ) тв) > ава б.
Взаимоблокировка и голодание 'Часть 2. Вектор дос рис. 6.8. Пример овиаружвмия вэаимобло~сирввии осстановление $. После того как взаимоблокировка обнаружена, требуется некоторая " л для восстановления нормальной работоспособности системы. Вот зможных подходов к решению этой проблемы, перечисленные в пор ~стания сложности. Х. Прекратить выполнение всех заблокированных процессов. Хотите — ' хотите — нет, но это самый распространенный подход, принятый и:.,"' ционных системах.
2. Вернуть каждый из заблокированных процессов в некоторую ранее" ленную точку и перезапустить все процессы. Для этого в систему быть встроены механизмы отката и перезапуска. Самый большой р ' таком подходе заключается в том, что взаимоблокировка может вновь. Однако неопределенность относительных скоростей выпол раллельных вычислений обычно позволяет этого избежать. 3. Последовательно прекращать выполнение заблокированных процессов му до тех пор.
пока взаимоблокировка не прекратится. Порядок выбо тожаемых процессов должен базироваться на некотором критерии 'ФФ нои стоимости. После каждого уничтожения процесса должен быть горитм обнаружения взаимоблокировок для проверки, не устранены ли 4. Последовательно перераспределять ресурсы до тех пор, пока взаи.. розка не прекратится. Как и в предыдущем случае, выбор процесса" осуществляться в соответствии с некоторым критерием минимально::" мости, а после осуществления перераспределения должен вызыват ' „' Ритм обнаружения взаимоблокировок. Процесс, ресурсы которого, пределяются, должен быть возвращен к состоянию, в котором он на.
до получения этого ресурса. В случае использования вариантов 3 и 4 критерий выбора процесса'-;:: ~ть, например, одним из следующих: ° процесс, потребляющий минимальное время процессора; процесс с минимальным выводом информации; ° процесс с наибольшим временем ожидания; ° процесс с минимальным количеством захваченных ресурсов; процесс с минимальным приоритетом.
При выборе критерия следует учитывать затраты времени на вычисление той ли ппой стоимости, а также отдавать себе отчет в том, что в данной ситуации поня„„,в "стоимости'* имеет смысл только для операционной системы в целом. 1'6.5. ИЙТЕГРИРОВАННЫЕ СТРАТЕГИИ РАЗРЕШЕНИЯ ВЗАИМОБЛОК,ИРОВОК ' ' У каждой стратегии разрешения взаимоблокировок есть свои достоинства и яедостатки, а потому наиболее эффективным путем может оказаться применение Разных подходов в различных ситуациях. В работе [ВП В981 предлагается следу ш й подход к данной проблеме е Сгруппировать ресурсы в несколько различных классов. е Для предотвращения взаимоблокировок между классами ресурсов использовать описанный ранее метод упорядочения типов ресурсов.
е В пределах одного класса ресурсов использовать наиболее подходящий для данного типа ресурсов алгоритм. В качестве примера такой методики рассмотрим следующие классы ресурсов. ° Пространство подкачки. Блоки памяти на вторичных устройствах хранения информации, используемые при свопинге процессов. е Ресурсы процесса. Назначаемые устройства, такие, как стримеры или файлы. Основная память. Страницы или сегменты, назначаемые процессу. Внутренние ресурсы. Такие ресурсы, как, например, каналы ввода-вывода. Порядок перечисления ресурсов в приведенном списке представляет собой порядок их выделения. Этот порядок обосновывается обычной последовательностью действий процесса.
В пределах каждого класса ресурсов могут использоваться следующие стратегии. Пространство подкачки. Предотвращение взаимоблокировок с помощью требования, чтобы все ресурсы распределялись одновременно. Такая стратегия вполне применима„если известны максимальные требования (что зачастую выполняется на практике). Можно также использовать стратегию Устранения взаимоблокировок. Р~сурсы процесса.
В этой категории ресурсов зачастую наиболее эффективным является использование стратегии устранения взаимоблокировок, поскольку можно ожидать, что процесс заранее объявит о требуемых ему ресурсах этого типа. Кроме того, можно использовать предотвращение взаимоблокировок путем упорядочения ресурсов в пределах данного класса. Основная память. Пожалуй, наиболее подходящим методом предотвращения взаимоблокировок в этом случае может оказаться перераспределение Ресурсов.
Процесс, ресурсы которого перераспределяются, просто сбрасывается нэ вторичные устройства хранения информации, освобождая основную я мять для разрешения взаимоблокировки. ва б. Взаимоблокировка и голодание ве~ег>,оге 1ОГ1 (5 =- ( 1 ); ооьс) р)>11ееер1>ег (1>>С 1) (.(»>); ( ); наес(ХОгК(1))„" хз1'-(Йсг~((1+1) »>ос) 5))- еа' (); з19пе1 ( гс г)~ ( (1+1) >>>об 5) ) р Б) 9па1 (гог)с (1) ); зе ~лев..лге 1 г) (5) =- (1)- Яел> л> >и)> 1п> »о16 р)"-1.>.еес>рЬег '; 1~~ 1) ~~.(пав (); ьа11(госж); ыа11.(йег).(1)); хе1Г (Хег)~( ('->1) л>еб 5! ) р еаза (); рис.
б.р, Обеденный стол филосоФов Часгь 2. П. Внутренние ресурсы. Можно использовать предотвращение взаим вок путем упорядочения ресурсов в пределах данного класса. В некотором царстве, в некотором государстве жили вместе пять изнь каждого из них проходила в основном в размышлениях, прерывае >м пищи. ФилосоФы давно сошлись во мнении, что только спагетти в сстанавливать их подточенные непрерывными размышлениями силы.
Питались они за одним круглым столом (см. рис. 6.9), на который '" сь большое блюдо со спагетти, пять тарелок„по одной для каждого пять вилок. Проголодавшийся философ садится на свое место за >льзуясь двумя вилками, приступает к еде. Задача состоит в том, чтоб ~тать ритуал (читай — алгоритм) обеда, который обеспечивает взаим 1я (два Философа не могут одновременно пользоваться одной вилкой) 'скает взаимоблокировок и голодания (обратите внимание, насколько:::"'' :азался этот термин в данной задаче)). Эта задача Дейкстры хорошо иллюстрирует проблемы взаимоблоки ' лодания.
Кроме того, при решении данной задачи приходится сталк яогими трудностями в организации параллельных вычислений (см., )1Х6901). Задача об обедающих Философах может рассматриваться к >я задача, возникающая в многопоточных приложениях при работе с со :пользуемыми ресурсами и, соответственно, может выступать в качес >й при разработке новых подходов к проблеме синхронизации. В листинге 6.2 предложено решение этой задачи с использованием семафов Каждый Философ„садясь за стол, сначала берет левую вилку, а затем правь После того как Философ пообедает, использованные им вилки заменяются. ь такое решение может привести к взаимоблокировке, если философы, одно,енно проголодавшись, все вместе сядут за стол и одновременно возьмут ле.з (ие слева вилки. В этой неприятной ситуации им придется голодать. Листинг 6.2. Первое Решение задачи об обедающих философах рег1>е9'~ (Р."'~1о ор(>ег ( С), рЬ11озорМг (1), р~ 1 91 ег (2), р1>11о=,ер1>ег (5), рг11езор)1ег(4) ); Чтобы избежать риска взаимоблокировки, можно купить еще пять вилок (кстати, самое подходящее решение задачи с точки зрения гигиены!) или научить Философов есть спагетти одной вилкой.
Еще один подход состоит в том, чтобы нанять вышибалу, который не позволит пяти философам садиться за стол одновременно. Ес. . Если же за столом соберутся не более четырех философов, то по крайней мере один и д н из них сможет воспользоваться двумя вилками. В листинге 6.3 приведено соотзетста твующее решение задачи (вновь с использованием семафоров). Ни взаимоблокиРовок к, ни голодания при таком решении просто не может быть. Нисти ' инг 6.3. Второе решение задачи об обедающих философах .; ава 6. Взаимоблокиронка и голодание е(апа1 ( ~аг К ( (1+1) в1аб 5) ) р ,;;.