Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Багатопроцесорний обчислювальний комплекс на основі комутаційної матриці з симетричною обробкою ...

Реферат Багатопроцесорний обчислювальний комплекс на основі комутаційної матриці з симетричною обробкою ...





користання функції wakeup означає: дане системне умова більш не задовольняється, отже, всі призупинені за умовою процеси повинні вийти з стану приостанова. Так, наприклад, процеси, припинені у зв'язку з зайнятістю буфера, не повинні далі перебувати в цьому стані, якщо буфер більше не використовується, тому вони поновлюються ядром. Ще один приклад: якщо кілька процесів виводять дані на термінал за допомогою функції write, термінальний драйвер може перевести їх у стан приостанова у зв'язку з неможливістю обробки великих обсягів інформації. Пізніше, коли драйвер буде готовий до прийому наступної порції даних, він відновить всі призупинені їм процеси. Використання операцій P і V в тих випадках, коли встановлюють блокування процеси отримують доступ до ресурсу по черзі, а всі інші процеси - у порядку надходження запитів, є кращим. У порівняно з однопроцесорній процедурою блокування (sleep-lock) дана схема зазвичай виграє, тому що якщо при настанні події всі процеси поновлюються, більшість з них може знову наткнутися на блокування і знову перейти в стан приостанова. З іншого боку, у тих випадках, коли потрібно вивести зі стану приостанова всі процеси одночасно, використання операцій P і V представляє відому складність. Якщо операція повертає значення семафора, є вона еквівалентної функції wakeup?


while (value (semaphore) <0)

{

V (semaphore);

};


Якщо втручання з боку інших процесів немає, ядро ​​повторює цикл доти, поки значення семафора чи не стане більше або дорівнює 0, бо це означає, що в стані приостанова по семафору немає більше жодного процесу. Тим не менше, не можна виключити і таку можливість, що відразу після того, як процес A при тестуванні семафора на однойменному процесорі виявив нульове значення семафора, процес B на своєму процесорі виконує операцію P, зменшуючи значення семафора до -1.

В 
Процес A продовжить своє виконання, думаючи, що їм відновлені усі призупинені по семафору процеси. Таким чином, цикл виконання операції не дає гарантії відновлення всіх призупинених процесів, оскільки він не є елементарним. Розглянемо ще один феномен, пов'язаний з використанням семафорів в однопроцесорній системі. Припустимо, що два процеси, A і B, конкурують за семафор. Процес A виявляє, що семафор вільний і що процес B призупинений; значення семафора дорівнює -1. Коли за допомогою операції V процес A звільняє семафор, він виводить тим самим процес B зі стану приостанова і знову робить значення семафора нульовим. Тепер припустимо, що процес A, як і раніше виконуючись в режимі ядра, намагається знову заблокувати семафор. Виробляючи операцію P, процес призупиниться, оскільки семафор має нульове значення, незважаючи на те, що ресурс поки що вільний. Системі доведеться "Розщедритися" на додаткове перемикання контексту. З іншого боку, якби блокування була реалізована на основі однопроцесорній схеми (Sleep-lock), процес A отримав би право на повторне використання ресурсу, оскільки за цей час жоден з процесів не зміг би заблокувати його. Для цього випадку схема sleep-lock більш підходить, ніж схема з використанням семафорів. Коли блокуються відразу кілька семафорів, черговість блокування повинна виключати виникнення тупикових ситуацій. В якості прикладу розглянемо два семафора, A і B, і два а лгорітма, що вимагають одночасної блокування семафорів. Якби алгоритми встановлювали блокування на семафори у зворотному порядку, як випливає з малюнка,


В 
br/>

послідувало б виникнення тупикової ситуації; процес A на однойменному процесорі захоплює семафор SA, в той час як процес B на своєму процесорі захоплює семафор SB. Процес A намагається захопити і семафор SB, але в результаті операції P переходить в стан приостанова, оскільки значення семафора SB не перевищує 0. Те ж саме відбувається з процесом B, коли останній намагається захопити семафор SA. Ні той, ні інший процеси продовжуватися вже не можуть. Для запобігання виникнення подібних ситуацій використовуються відповідні алгоритми виявлення небезпеки взаємної блокування, що встановлюють наявність небезпечної ситуації і ліквідують її. Тим не менше, використання таких алгоритмів "важчою" ядро. Оскільки число ситуацій, в яких процес повинен одночасно захоплювати кілька семафорів, досить обмежена, легше було б реалізувати алгоритми, що попереджають виникнення тупикових ситуацій ще до того, як вони будуть мати місце. Якщо, наприклад, якийсь набір семафорів завжди блокується в одному і тому ж порядку, тупикова ситуація ніколи не виникне. Але в тому випадку, коли захоплення семафорів у зворотному порядку уникнути не вдається, операція CP запобігає виникненню тупикової ситуації:


В 
br/>

якщо операція завершиться невдало, процес B звільнить свої ресурси, щоб уникнути взаємного блокування, і пізніше запустить алгоритм на виконання повторно, швидше за все, тоді, коли процес A завершить роботу з ресурсом....


Назад | сторінка 12 з 16 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Технологічний процес відновлення важеля блокування диференціала
  • Реферат на тему: Клейові й зварені з'єднання одягу та процеси волого-теплової обробки. ...
  • Реферат на тему: Теплові Процеси при зварюванні. Металургійні Процеси зварювання. Джерела ...
  • Реферат на тему: Коли працювати можна менше ...
  • Реферат на тему: Виникнення банківської справи. Процеси гігантізаціі банків і концентрації ...