1 / 87

Concurrency: Deadlock and Starvation

Concurrency: Deadlock and Starvation. Съдържание. Принципи на мъртвата-хватка ( Deadlock ) Предотвратяване на Deadlock Избягване на Deadlock Откриване на Deadlock Интегрирана Deadlock стратегия Проблемът “вечерящи философи” Механизми в UNIX, Linux, Solaris и Windows. Deadlock.

sheng
Download Presentation

Concurrency: Deadlock and Starvation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Concurrency: Deadlock and Starvation

  2. Съдържание • Принципи на мъртвата-хватка (Deadlock) • Предотвратяване на Deadlock • Избягване на Deadlock • Откриване на Deadlock • Интегрирана Deadlock стратегия • Проблемът “вечерящи философи” • Механизми в UNIX, Linux, Solaris и Windows

  3. Deadlock • Множество от процеси е блокирано без изход, когато всеки процес е блокиран в очакване на събитие, което може да се инициира само от друг блокиран процес в множеството • Обикновено включва процеси, които се състезават за достъп до едно и също множество ресурси • Няма ефикасно решение

  4. Потенциално блокиаране без изход I need quad C and B I need quad B and C I need quad A and B I need quad D and A

  5. Действително блокиране без изход HALT until D is free HALT until C is free HALT until B is free HALT until A is free

  6. Два процеса P и Q Нека разгледаме двата процеса P и Q Всеки от тях изключително се нуждае от достъп до ресурси A и B за определен период от време.

  7. СъвместнаДиаграма на Deadlock

  8. Алтернативна логика Да предположим, че P не се нуждае от двата ресурса по едно и също време. Двата процеса могат да имат следната форма =>

  9. Диаграма на алтернативната логика

  10. Категории ресурси Има две основни категории ресурси: • Преизползваеми • Могат безопасно да се използват само от един процес по едно и също време и не се изчерпват от тази употреба. • Консумативни • Могат да бъдат създадени (produced) и унищожени (consumed).

  11. Преизползваеми ресурси • Примери: • Процесори, канали за вход/изход, първична и вторична памет, устройства, структури от данни като файлове,бази от данни и семафори • “Мъртва-хватка” се появява ако всеки процес държи един ресурс и изисква друг, за да продължи да се изпълнява.

  12. Deadlock - Пример Имаме два процеса, които се състезават за незабавен достъп до файл D и пишещо устройство T. Deadlock се появява, когато всеки процес държи единя ресурс и изисква достъп до другия.

  13. Пример за преизползваеми ресурси

  14. Пример 2:Memory Request P1 P2 . . . . . . Request 80 Kbytes; Request 70 Kbytes; . . . . . . Request 60 Kbytes; Request 80 Kbytes; Свободното за алокиране пространство е 200Kbytes и следната последователност от събития: Deadlock се получава, ако и двата процеса обработят второто си запитване към паметта.

  15. Консумативни ресурси Примери: Прекъсвания, сигнали, съобщения, информация във входно/изходните буфери Deadlock може да възникне, ако получаването на съобщението е блокиращо Рядка комбинация от събития може да предизвика Deadlock

  16. Пример за Deadlock Имаме двойка процеси, във всеки процес се опитваме да получим съобщение от другия процес и тогава да пратим съобщение.

  17. Разпределение на ресурситеГрафики Графика, която изобразява състоянието на системата от ресурси и процеси

  18. Условия завъзможенDeadlock • Взаимно изключване • Само един процес може да използва даден ресурс в определено време • Hold-and-wait • Процес може да държи алокиран ресурс докато чака да получи други • No pre-emption • Нито един ресурс на може насилствено да бъде отнет от процеса, който оперира с него.

  19. Действителният Deadlock се нуждае от … Всичките три предходни условия и: • Циклично чакане • Затворена верига от процеси, така че всеки процес притежава най-малко един ресурс, необходим на следващия процес във веригата

  20. Разпределение на ресурситеГрафики на deadlock

  21. Разпределение на ресурситеГрафики

  22. Преодоляване на Deadlock • Съществуват три подхода за справянето със “мъртвата хватка”. • Предотвратяване на deadlock • Избягване на deadlock • Откриване на Deadlock

  23. Съдържание • Принципи на мъртвата-хватка (Deadlock) • Предотвратяване на Deadlock • Избягване на Deadlock • Откриване на Deadlock • Интегрирана Deadlock стратегия • Проблемът “вечерящи философи” • Механизми в UNIX, Linux, Solaris и Windows

  24. Стратегия за предотвратяване на “мъртва хватка” • Проектиране на системата по такъв начин, че възможността от възникване на deadlock да бъде изключена. • Два основни метода • Индиректен – предотвратяване на трите необходими условия да се появят наведнъж • Директен – Предотвратяване на цикличното изчакване

  25. Предотвратяване на DeadlockУсловия 1 & 2 • Взаимно изключване • Трябва да се поддържа от операционната система • Hold and Wait • Изисква процесът да заяви всички необходими ресурси наведнъж

  26. Предотвратяване на DeadlockУсловия 3 & 4 • No Preemption • Процесът трябва да освобождава ресурсите и да ги изисква отново • OS may preempt a process to require it releases its resources • Циклични изчаквания • Дефиниране на линейно подреждане на типовете на ресурсите

  27. Съдържание • Принципи на мъртвата хватка (Deadlock) • Предотвратяване на Deadlock • Избягване на Deadlock • Откриване на Deadlock • Интегрирана Deadlock стратегия • Проблемът “вечерящи философи” • Механизми в UNIX, Linux, Solaris и Windows

  28. Избягване на Deadlock Решението дали текущото заделяне на ресурс потенциално би довело до deadlock се прави динамично. Изисква информация за бъдещи заявки на процесите

  29. Два подхода за избягване на Deadlock • Отказ на стартирането на процес • Да не се стартира процес, ако неговите заявки могат да доведат до deadlock. • Отказ при заделянето на ресурси • Да не се правят опити за заделяне на ресурси на един процес, ако това разпределение може да доведе до deadlock

  30. Отказ при стартирането на процес • Процес се стартира само ако максималните изисквания на всички текущи процеси плюс тези на новия могат да бъдат изпълнени. • Не е оптимално • Предполагаме най-лошият вариант: Всички процеси ще достигнат максималните си изисквания.

  31. Отказ при заделянето на ресурси • Познат още като алгоритъм на банкерите • Стратегия на отказ за разпределение на ресурсите • Разглеждаме система с определен брой ресурси: • State -Състоянието на системата е текущото разпределение на ресурсите за обработка • Safe state - Безопасно състояние е разпределението, при което има най-малко една последователност, която не води доdeadlock • Unsafe state – състояние, което не е безопасно

  32. Определяне на безопасно състояние (Safe State) Resources available after allocation Amount of Existing Resources Система, състояща се от четири процеса и три ресурса. Разпределенията на ресурсите са направени по процесори Кое е безопасното състояние?

  33. Процесi • Cij - Aij ≤ Vj, за ваяко j • Това не е възможно за P1, • Който има само 1 единица от R1 и се нуждае от 2 единици повече от R1, 2 единициот R2, и 2 единици от R3. • Ако заделим една единица от R3 на процес P2, • Тогава P2 има вече заделени максимално заявените ресурси и може да продължи изпълнението си докрай и да върне ресурсите в “available recourse pool”

  34. След изпълнението на P2 • Може ли някой от останалите процеси да бъде изпълнен докрай? Note P2 is completed

  35. След изпълнението на P1

  36. Изпълнение на P3 По този начин първоначалното определено състояние е безопасното състояние.

  37. Определяне на опасни състояния (Unsafe State) Този път Да предположим, че P1 прави искане за една допълнителна единица от R1 и R3. Това ли е безопасно?

  38. Избягване на Deadlock • Когато един процес, който отправя искане за група ресурси • Допускаме ,че изкането е одобрено, • Съответно актуализираме състоянието на системата • Тогава се определя дали резултатът е безопасно състояние • Ако е така, заявката се изпълнява • Ако не е така, процесът се блокира докато състоянието не стане безопасно за изпълнение на заявката

  39. Избягване на Deadlock:Логика

  40. Избягване на Deadlock:Логика

  41. Избягване на Deadlock:Предимства Не е необходимо да подменяме и отказваме процесикакто при откриването на deadlock Не е толкова ограничително както предотвратяването на deadlock.

  42. Избягване на Deadlock: Ограничения Максималните изисквания относно ресурсите трябва да се знаят предварително Процесите трябва да бъдат независими и без изисквания за синхронизация Трябва да има определен брой ресурси за разпределяне Никой процес не може да приключи (exit),докато заема дадени ресурси

  43. Съдържание • Принципи на мъртвата-хватка (Deadlock) • Предотвратяване на Deadlock • Избягване на Deadlock • Откриване на Deadlock • Интегрирана Deadlock стратегия • Проблемът “вечерящи философи” • Механизми в UNIX, Linux, Solaris и Windows

  44. Откриване на Deadlock • Стратегиите за предотвратяване на Deadlock са много консервативни • ограничаване на достъпа до ресурси и налагане на ограничения на процесите. • Стратегиите за откриване на Deadlock правят точно обратното. • Изисканите ресурси се заделят, когато е възможно. • Редовно се прави проверка дали е възможно да възникне Deadlock

  45. Обобщен алгоритъм за откриване • Използваме матрицата на разпределение на ресурсите и вектора на свободните такива • Използваме също и матрица на запитванията Q • къдетоQijпоказва,че ресурсjе поискан от процесI • Първо размаркираме (‘un-mark’) всички процеси, които не се намират в deadlock. • Първоначално това са всички процеси

  46. Алгоритъм за откриване 1. Маркираме всеки процес, който има ред в матрицата за разпределение на ресурсите (Allocation matrix), състоящ се от нули. 2. Инициализираме временен вектор W, който е еднакъв с вектора на свободните ресурси(Available vector). 3. Намираме индекс i такъв, че процесiе немаркиран и i-тиятред на Q е по-малък или равен на W. • т.е. Qik ≤ Wkза 1 ≤ k ≤ m. • Ако такъв ред е намерен, прекратяваме

  47. Алгоритъм за откриване 4. Ако такъв ред е намерен, • Маркираме процесi и добавяме съответният ред от матрицата за разпределение на ресурсите (allocation matrix)във W. • т.е. Wk = Wk + Aik, за 1 ≤ k ≤ m Връщаме се към стъпка 3. • A deadlock съществува, тогава и само тогава, когато са налице немаркирани процеси накрая • Всеки немаркиран процес е в състояние на deadlock.

  48. Откриване на Deadlock

  49. Стретегии за възстановяване след откриване на Deadlock • Прекратяване на всички процеси, които се намират в Deadlock. • Връщане назад (Back up)на всеки блокиран процес до някоя дефинирана предварително точка преди блокирането и рестартиране на всички процеси • Риск от повторение на deadlock • Успешно излизане от блокирани процеси, докато deadlock ситуацията не бъде отстранена • Успешно подменяне на ресурси докато deadlock ситуацията не бъде отстранена

  50. Предимства и Недостатъци

More Related