Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Залпове виділення




Послідовне виділення.

Тупики: попередження, виявлення, розв'язка

Боротьба з тупиками включає три завдання:

  • попередження тупиків - яку стратегію розподілу ресурсів вибрати, щоб безвихідь не виникала взагалі?
  • виявлення тупиків - якщо не вдалося застосувати стратегію, застережливу тупик, то як виявити виниклу тупик?
  • розв'язка тупиків - якщо тупик виявлена, то як від нього позбавитися?

Можливі стратегії розподілу ресурсів розташовуються між двома полюсами - від найліберальніших до найконсервативніших. Чим ліберальніше стратегія, тим більш "охоче" за ОС задовольняє запити на ресурси. Але за дуже ліберальну стратегію доводиться розплачуватися можливістю виникнення тупиків. Консервативні стратегії робить тупик неможливими в принципі, завдання виявлення і розв'язки при застосуванні таких стратегій не ставляться, але плата за це - часті відмови у виділенні ресурсів, отже, зниження рівня мультипрограмування, а отже, - і зниження пропускної спроможності. Нижче ми розглядатимемо стратегії запобігання, рухаючись від консервативного полюса до ліберального в такому порядку:

  • послідовне виділення;
  • залпове виділення;
  • ієрархічне виділення;
  • виділення по попередніх заявках.

Будь-якими ресурсами може одночасно користуватися тільки один процес. Якщо процес A з попереднього прикладу отримав ресурс-принтер, то процесу B буде відмовлено навіть у виділенні ресурсу-стрічки. Очевидно, що така стратегія робить тупик абсолютно неможливою. Очевидно також, що деякі процеси при цьому простоюватимуть абсолютно невиправдано. Так, наприклад, буде припинений якийсь процес C, якому принтер і не потрібний, а потрібна тільки стрічка. Оскільки до числа розподілюваних ресурсів входять пристрої введення-виводу, а працюють вони поволі (приклад - той же друк на принтері), простій може затягнутися. Ця стратегія невиправдано знижує рівень мультипрограмування і неефективно використовує ресурси (вони теж простоюють), і може застосовуватися тільки в таких ОС, в яких і розрахунковий рівень мультипрограмування невисокий.

Процес винен запрашивать/освобождать всі використовувані ним ресурси відразу. Ця стратегія дозволяє паралельно виконуватися процесам, що використовують непересічні підмножини ресурсів. (Процес C працює із стрічкою, процес D - з принтером.) Тупик як і раніше неможлива, проте невиправдане утримування ресурсів продовжується. Так, якщо процесу в ході виконання потрібні ресурси R1 і R2, причому ресурс R1 він використовує весь час свого виконання t1, а ресурс R2 потрібний йому тільки на якийсь час t2<<t1, то процес вимушений утримувати за собою і ресурс R2 протягом всього часу t1.

В рамках залпової стратегії можливі два варіанти: виділяти всі ресурси при створенні процесу і звільняти при його завершенні або ж дозволити процесу запрашивать/освобождать ресурси кілька разів в ході свого виконання (але обов'язково все "залпом"). Очевидно, що другий варіант ліберальніший, оскільки він дозволяє зменшити інтервал часу утримування ресурсів і рознести використання різних ресурсів по різних "залпах". Цікаві відмінності в API для цих двох варіантів. У першому випадку вимоги на ресурси можуть бути взагалі винесені за межі програмного коду процесу і задаватися в зовнішніх описувачах процесу (наприклад, в мові управління завданнями). У другому випадку системний виклик getResource є обов'язковим, причому обов'язково повинні бути забезпечена можливість запиту в одному виклику ресурсів різних класів і виділення всіх запитаних ресурсів однією безперервною операцією.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 368; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.034 сек.