Головна

необхідність свопинга

  1. I.I.I. Необхідність вивчення психології і педагогіки: в пошуках cмисла. Об'єкт і предмет психології.
  2. А) Необхідність пожежної охорони
  3. Питання 20. Крайня необхідність.
  4. Втім, ліберальні російські богослови наголошували на необхідності живого і творчого ставлення до догматів.
  5. Вибираючи місце для зустрічі, врахуйте всі пов'язані з цим матеріальні витрати, ступінь складності організаційних моментів, необхідність узгодження з іншими організаціями.
  6. Глава 1. Об'єктивна необхідність та основні напрями реформування соціально-економічної статистики
  7. Глава 5. Необхідність нової теорії: загальна теорія відносності versus квантова механіка

Три основні стани процесів, описані в попередньому розділі (готовий, що виконується і блокований), дозволяють змоделювати поведінку процесів і отримати уявлення про реалізацію операційної системи. Багато операційних систем розроблені на основі тільки цих трьох станів.

Можна навести переконливі аргументи на користь додавання в модель і інших станів. Щоб зрозуміти, які вигоди можуть дати ці нові стану, розглянемо систему, не використовує віртуальну пам'ять, в якій кожен процес перед виконанням потрібно завантажити в основну пам'ять. Таким чином, всі процеси, представлені на рис. 3.5, б, повинні знаходитися в основній пам'яті.

Тепер згадаємо, що причиною розробки всіх цих схем послужило більш повільне, в порівнянні з обчисленнями, виконання операцій введення-виведення, що приводить до простоїв процесора в однозадачной системі. Однак організація роботи відповідно до схеми, вміщеній на рис. 3.5, б, повністю цю проблему не вирішує. Звичайно, при роботі в Відповідно до такої моделі в пам'яті знаходиться кілька процесів, і поки одні процеси очікують закінчення операцій введення-виведення, процесор може перейти до виконання інших процесів. Але процесор працює настільки швидше виконання операцій введення-виведення, що незабаром все знаходяться в пам'яті процеси виявляються в стані очікування. Таким чином, процесор може простоювати навіть вбагатозадачного системі.

Що ж робити? Можна збільшити ємність основної пам'яті, щоб в ній містилося більше процесів. Але в такому підході є два недоліки. По-перше, це веде до різкого підвищення вартості пам'яті системи в перерахунку на один біт. По-друге, апетит програміста в використанні пам'яті для своїх програм зростає пропорційно падінню її вартості, так що збільшення обсягу пам'яті призводить до збільшення розміру процесів, а не до зростання їх числа.

Іншим рішенням проблеми є свопинг, який включає в себе перенесення частини процесів з основної пам'яті на диск. Якщо в основний пам'яті немає жодного готового до виконання процесу, операційна система переносить один з блокованих процесів на диск (здійснює його свопинг), поміщаючи його в чергу призупинених процесів, які тимчасово вилучені з основної пам'яті. Потім операційна система завантажує інший процес з черги призупинених, після чого продовжує його виконання.

Проте свопинг сам по собі є операцією введення-виведення, тому є ризик погіршити ситуацію, замість того щоб поліпшити її. Однак завдяки тому що обмін інформацією з диском зазвичай відбувається швидше від інших операцій введення-виведення (наприклад, запис-зчитування з стрічки або висновок на принтер), свопинг найчастіше підвищує продуктивність роботи системи в цілому.

Якщо в модель поведінки процесів ввести описаний свопинг, то нам доведеться ввести і новий стан - стан припиненого процесу (рис. 3.6, а). Коли всі процеси в основний пам'яті знаходяться в блокованому стані, операційна система може призупинити один з процесів, перевівши його в призупинене стан і скинувши на диск. Місце, що звільнилося в основний пам'яті простір можна буде використовувати для завантаження іншого процесу.

Після того як операційна система вивантажила один з процесів на диск, у неї є дві можливості вибору процесу для завантаження в основну пам'ять: вона може або створити новий процес, або завантажити процес, який був припинений перед цим. Може скластися враження, що краще було б завантажити для обробки раніше припинений процес, що не призведе до збільшення навантаження на систему.

Однак це не зовсім так. Всі процеси перед тим як вони були припинені, перебували в блокованому стані. Ясно, що повернення в пам'ять блокованого процесу не дасть ніяких результатів, тому що він як і раніше не готовий до виконання. Згадаймо також, що кожен процес в загальмованому стані блокований в очікуванні якогось певного події, і якщо ця подія відбувається, процес перестає бути блокованим і можна продовжити його виконання.

Це слід врахувати при розробці операційної системи. Ми маємо справу з двома незалежними ситуаціями: чи очікує процес якої-небудь події (т. Е. Блокований він чи ні), і вивантажено чи процес з основної пам'яті (т. Е. Призупинений він чи ні). Щоб врахувати 2x2 можливих комбінації, потрібні чотири перерахованих нижче стану.

- Готовий. Процес, який знаходиться в основній пам'яті і готовий до виконання.

- Блокований. Процес, що знаходиться в основній пам'яті і очікує якоїсь події.

- Блокований / Призупинений. Процес, що знаходиться у вторинній пам'яті (на диску) і очікує якоїсь події.

- Готовий / Призупинений. Процес, що знаходиться у вторинній пам'яті, але вже готовий до виконання; для цього його потрібно тільки завантажити в основну пам'ять.

Перед тим як складати діаграму переходів станів, в якій враховуються два нових призупинених стану, слід згадати ще одну обставину. До сих пір ми не враховували існування віртуальної пам'яті; вважалося, що процес знаходиться або повністю в основний пам'яті, або повністю поза нею. При наявності віртуальної пам'яті з'являється можливість виконувати процес, який завантажений в основну пам'ять лише частково. Якщо відбувається звернення до відсутнім в основний пам'яті адресою процесу, ця частина процесу може бути завантажена. Здавалося б, використання віртуальної пам'яті позбавляє від необхідності явного свопинга, тому що будь-який потрібну адресу будь-якого процесу можна перенести в основну пам'ять або з неї за допомогою апаратного забезпечення процесора, керуючого пам'яттю. Однак, як ми побачимо в главі 8, "Віртуальна пам'ять", при наявності досить великої кількості активних процесів, які повністю або частково перебувають в основній пам'яті, продуктивність віртуальної пам'яті може виявитися недостатньою. Тому навіть при наявності віртуальної пам'яті операційній системі час від часу потрібно явно і повністю вивантажувати процеси з основної пам'яті заради підвищення загальної продуктивності.

А тепер розглянемо модель переходів станів, представлену на рис. 3.6,6 (пунктирними лініями показані переходи, які можливі, але не є обов'язковими). Серед нових переходів найбільш важливими є наступні:

- Блокований -> Блокований / Призупинений. Якщо до виконання не готовий жоден процес, то принаймні один блокований процес вивантажується з пам'яті, щоб звільнити місце для іншого процесу, який не є блокованим. Цей перехід можна виконувати і при наявності готових до виконання процесів, якщо операційна система визначить, що для виконується в даний час процесу або процесу, управління до якого перейде найближчим часом, потрібно збільшити обсяг основної пам'яті для забезпечення адекватної продуктивності.

- Блокований / Призупинений -> Готовий / Призупинений. Процес в стані блокованого призупиненого переходить в стан готового до виконання припиненого процесу, якщо відбувається подія, якого очікував цей процес. Зауважимо, що для такого переходу операційна система повинна мати доступ до інформації про стан призупинених процесів.

- Готовий / Призупинений -> Готовий. Коли в основний пам'яті немає готових до виконання процесів, операційній системі для продовження обчислень потрібно завантажити процес в пам'ять. Може трапитися і так, що у готового до виконання припиненого процесу виявиться більш високий пріоритет, ніж у будь-якого іншого з готових до виконання процесів. У такій ситуації розробник операційної системи може вирішити, що важливіше забезпечити пріоритет процесу, ніж мінімізувати свопинг.

- Готовий -> Готовий / Призупинений. Зазвичай операційна система надає перевагу припиняти не готові, а заблокований процес, оскільки до виконання готового процесу можна приступити негайно, а блокований процес тільки даремно займає основну пам'ять, оскільки не може бути виконаний. Однак іноді виявляється, що єдиний спосіб звільнити досить великий блок основної пам'яті - це призупинити готовий до виконання процес. Операційна система може також замість блокованого процесу з більш високим пріоритетом призупинити готовий до виконання процес з більш низьким пріоритетом, якщо блокований процес досить скоро буде готовий до виконання.

Крім того, заслуговують розгляду і інші переходи.

- Новий -> Готовий / Призупинений і Новий -> Готовий. Після створення нового процесу цей процес може бути доданий або в чергу готових до виконання, або в чергу готових до виконання припинених процесів. У будь-якому з цих випадків операційна система повинна створити таблиці для управління процесом і виділити йому адресний простір. Краще виконати ці дії на ранніх етапах, щоб мати більший запас неблокірованние процесів. Однак якщо дотримуватися цієї стратегії, то в основний пам'яті може не вистачити місця для нового процесу. З цієї причини передбачено перехід нового процесу в стан призупиненого готового до виконання. З іншого боку, створення процесу в "останній момент" призводить до зменшення непродуктивних витрат і дозволяє операційній системі виконувати свої обов'язки по створенню процесів навіть тоді, коли вона переповнена блокованими процесами.

- Блокований / Призупинений -> Блокований. На перший погляд може здатися, що враховувати такий перехід безглуздо. Навіщо, врешті-решт, завантажувати в пам'ять процес, який не готовий до виконання? Однак розглянемо такий сценарій: завершився певний процес, звільнивши при цьому певну частину основної пам'яті. У черзі заблокованих припинених процесів перебуває процес, пріоритет якого вище, ніж у будь-якого процесу з черги готових до виконання, але призупинених процесів. Крім того, операційна система має аргументами на користь того, що досить скоро станеться подія, яка зніме блокування з цього високопріоритетного процесу. При таких обставинах резонно віддати перевагу блокованому процесу перед готовими до виконання, завантаживши в основну пам'ять саме його.

- Виконувати -> Готовий / Призупинений. Зазвичай виконується процес, у якого вийшло відведений йому час, переходить в стан готового до виконання. Однак при наявності процесу з більш високим пріоритетом, який знаходився в черзі блокованих призупинених процесів і тільки що був розблокований, операційна система може віддати перевагу саме йому. Щоб звільнити частину основної пам'яті, вона може перевести виконується процес безпосередньо в стан готового до виконання припиненого процесу.

- Довільний стан -> Завершення. Зазвичай завершується виконується в даний момент процес - це відбувається або через те, що він виконаний до кінця, або через помилки при його роботі. Однак в деяких операційних системах процес може завершуватися створив його процесом або разом із завершенням батьківського процесу. Таке завершення можливо за умови, що процеси з будь-якого стану можуть переходити в стан завершення.




Глава 6. взаімоблокіровке і голодування | Опис процесів і управління ними | СТАНУ ПРОЦЕСІВ | створення процесів | завершення процесів | Керуючі структури операційної системи | Місцезнаходження процесу | Володіння ресурсами і їх використання | коди умов | Роль керівника блоку процесу |

© um.co.ua - учбові матеріали та реферати