ЗНАЕТЕ ЛИ ВЫ?

Організація апаратного захисту пам'яті й процесора



Переривання по таймеру

При виконанні в привілейованому режимі ОС має необмежений доступ як до пам'яті монітора, так і до пам'яті користувача. Команди запису значень у регістри baseй limitє привілейованими.

У системах з теговою архітектурою тільки привілейована команда може сформувати новий дескриптор на область пам'яті, або змінити поле в дескрипторі (наприклад, адреса початку або довжину).

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

Команда запису значення в таймер є привілейованою.


Лекція 5: Архітектура ОС. Управління процессами: Основні поняття. Семафори і монітори

План

· Основні компоненти системи

· Управління процесами

.

Основні компоненти ОС

Операційна система - досить складна по архітектурі програмна система, у якій можна виділити наступні основні компоненти:

1. Керування процесами

2. Керування основною пам'яттю

3. Керування файлами

4. Керування системою вводу-виводу

5. Керування зовнішньою пам'яттю

6. Підтримка мереж (networking)

7. Система захисту (protection)

8. Система підтримки командного інтерпретатора.

9. Графічна оболонка.

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

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

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

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

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

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

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

Система підтримки командного інтерпретатора. Будь-яка операційна система підтримує командну мову (або набір командних мов), що складаються з користувальницьких команд, виконуваних з користувальницького термінала (з користувальницької консолі). Типові команди – це одержання інформації про оточення, установка й зміна поточної робочої директорії, пересилання файлів, компіляція й виконання програм, одержання інформації про стан системи й виконання своїх процесів й ін. У системі Windows для виконання команд за традицією використається вікно користувальницької консолі MS DOS (MS DOS Prompt), у системі Linux – спеціальне вікно "Термінал" (Start / System Tools / Terminal). Найбільш потужні командні процесори є в системах типу UNIX (UNIX, Solaris, Linux й ін.). Їхні командні мови дозволяють писати скріпти– командні файли, що містять часто використовувані послідовності команд ОС. В UNIX це найбільше зручно. Можна назвати такі командні мови UNIX, як sh (Bourne Shell), csh (C shell), ksh (Korn shell), bash.

Графічна оболонка– підсистема ОС, що реалізує графічний користувальницький інтерфейс користувачів і системних адміністраторів з операційною системою. Зрозуміло, використання однієї лише командної мови й системних викликів незручно, тому простий і наочний графічний користувальницький інтерфейс із ОС необхідний. Є багато відомих графічних оболонок для операційних систем, причому їхні можливості дуже схожі один на одного - настільки, що часом не цілком зрозуміло, яка саме ОС використається. Серед графічних оболонок, використовуваних у системах типу UNIX, можна назвати CDE, KDE, GNOME. ОС Windows й MacOS мають власні, досить зручні графічні оболонки.

Керування процесами

Процес (process) -це користувальницька програма при її виконанні в комп'ютерній системі. Для виконання процесу потрібен ряд ресурсів, включаючи час процесора, пам'ять, файли, пристрої вводу-виводу, мережні пристрої й ін.

У класичній схемі UNIX, при створенні процесу для нього створюється новий простір віртуальної пам'яті, тобто таблиця сторінок для відображення віртуальних адрес у фізичні, своя для кожного нового процесу. При цьому витрачаються значні ресурси. Якщо врахувати, що в UNIX кожна команда користувача (наприклад, ls – вивід умісту поточної директорії) запускається як окремий процес, то стає зрозумілим, наскільки "дорога" операція створення процесу в класичному змісті. Тому ще в 1980-х рр. з'явилася концепція полегшеного процесу(lightweight process) – виконуваного в тім же просторі віртуальної пам'яті, що й процес-батько. При створенні нового полегшеного процесу ОС створює для нього тільки стек– системний резидентний масив у пам'яті, призначений для підтримки виконання процедур процесу й зберігаючий їхні локальні дані й сполучну інформацію між ними.

ОС відповідає за наступні дії, пов'язані з керуванням процесами:

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

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

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

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

Семафори.В 1966 р. проф. Эдсгер Дейкстра запропонував новий спосіб синхронізації процесів, що став класичним, - семафори.

Двійковий семафор (binary semaphore)– змінна S, що може перебувати у двох станах: "відкритий" й "закритий"; над S визначені дві операції ( "семафорні дужки"): P(S) – закрити, V(S) – відкрити. При спробі закрити вже закритий семафор відбувається переривання, і ОС додає поточний процес у чергу до закритого семафора. Операція V(S) активізує перший вартий у черзі до S процес, що успішно завершує операцію P(S). Якщо семафор S уже відкритий, операція V(S) не має ніякого ефекту.

Таким чином, якщо припустити, що апаратури й ОС підтримують подібну концепцію семафора, то вона є зручним інструментом для синхронізації по ресурсах. Назвемо критичною секцієюкод, що може виконуватися декількома процесами паралельно й здійснює доступ до деякого загального для всіх процесів ресурсу – глобальної області пам'яті, загальному файлу й т.д. Позначимо код критичної секції critical_section.Якщо допустити, що даний код може виконуватися паралельно в декількох процесах прямо, то може виникнути вже відома нам ситуація race condition ( конкуренція за загальні дані): один процес може змінювати ресурс, а другий у цей момент зчитувати його (некоректне) стан, або два процеси одночасно будуть намагатися змінювати той самий ресурс, що приведе до порушення його цілісності. Таким чином, для критичних секцій необхідно вирішити завдання взаємного виключення (mutual exclusion)– у кожен момент часу не більш ніж один з паралельних процесів може виконувати критичну секцію. За допомогою семафорів Дейкстра це завдання вирішується легко й якісно: код критичної секції повинен мати вигляд

P(S); critical_section; V(S);

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

Дуже важлива властивість операцій P й V у наступному: вони атомарны (atomic)для інших процесів, тобто якщо процес почав виконувати операцію P(S) або V(S), то ніякий інший процес до її завершення не може також почати виконувати аналогічну операцію.

Підіб'ємо підсумок: для синхронізації процесів по загальному ресурсі необхідне взаємне виключення виконання критичних секцій й атомарность операцій синхронізації.

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

Монітори –ще один, більше надійний спосіб синхронізації, запропонований в 1974 р. одним із класиків комп'ютерних наук професором Чарльзом Хоаром.

Монітор– багатовходовый модуль M, у якому визначені загальні для процесів дані D (сховані) і (абстрактні) операції P1, … PN над цими даними (у вигляді процедур).

У кожен момент не більш ніж один з паралельних процесів може викликати яку-небудь із операцій: M.Pi (X, Y, ...)

Виклик кожної операції монітора - атомарен (як й операції над семафором).

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

.

 

 


Лекція 6Огляд функцій ОС: управління пам’яттю, файлами, процесами, мережами, командними інтерпретаторами, сервіс ОС, системні виклики.

План

  • Керування основною пам'яттю
  • Керування файлами
  • Керування зовнішньою пам'яттю
  • Підтримка мереж (networking)
  • Система захисту (protection)
  • Система підтримки командного інтерпретатора.
  • Сервіс ОС
  • Системні виклики

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

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

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

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

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

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

Система підтримки командного інтерпретатора. Будь-яка операційна система підтримує командну мову (або набір командних мов), що складаються з користувальницьких команд, виконуваних з користувальницького термінала (з користувальницької консолі). Типові команди – це одержання інформації про оточення, установка й зміна поточної робочої директорії, пересилання файлів, компіляція й виконання програм, одержання інформації про стан системи й виконання своїх процесів й ін. У системі Windows для виконання команд за традицією використається вікно користувальницької консолі MS DOS (MS DOS Prompt), у системі Linux – спеціальне вікно "Термінал" (Start / System Tools / Terminal). Найбільш потужні командні процесори є в системах типу UNIX (UNIX, Solaris, Linux й ін.). Їхні командні мови дозволяють писати скріпти– командні файли, що містять часто використовувані послідовності команд ОС. В UNIX це найбільше зручно. Можна назвати такі командні мови UNIX, як sh (Bourne Shell), csh (C shell), ksh (Korn shell), bash. Кожен UNIX-програміст має свою улюблену командну мову й звикає постійно використати скрипты й довгі нетривіальні послідовності команд, які він виконує з термінала. Що стосується Windows, порівняно недавно в ній з'явився потужний командний інтерпретатор PowerShell,що і рекомендується до використання. Крім того, для Windows є система CygWin, щодозволяє виконувати команди й командні файли UNIX у середовищі Windows. Типова послідовність команд у стилі UNIX: ps –a | grep saf, що виводить у стандартний вивід інформацію про активні процеси, причому тільки приналежному користувачеві saf.Вертикальна риса (p1 | p2) позначає операцію конвеєр (pipe), щодозволяє використати стандартний вивід процесу p1 як стандартне уведення процесу p2, що й використається операцією grep (фільтрація рядків, що містять задану послідовність).

Графічна оболонка– підсистема ОС, що реалізує графічний користувальницький інтерфейс користувачів і системних адміністраторів з операційною системою. Зрозуміло, використання однієї лише командної мови й системних викликів незручно, тому простий і наочний графічний користувальницький інтерфейс із ОС необхідний. Є багато відомих графічних оболонок для операційних систем, причому їхні можливості дуже схожі один на одного - настільки, що часом не цілком зрозуміло, яка саме ОС використається. Серед графічних оболонок, використовуваних у системах типу UNIX, можна назвати CDE, KDE, GNOME. ОС Windows й MacOS мають власні, досить зручні графічні оболонки.

Керування процесами

Процес (process) -це користувальницька програма при її виконанні в комп'ютерній системі. Для виконання процесу потрібен ряд ресурсів, включаючи час процесора, пам'ять, файли, пристрої вводу-виводу, мережні пристрої й ін.

У класичній схемі UNIX, при створенні процесу для нього створюється новий простір віртуальної пам'яті, тобто таблиця сторінок для відображення віртуальних адрес у фізичні, своя для кожного нового процесу. При цьому витрачаються значні ресурси. Якщо врахувати, що в UNIX кожна команда користувача (наприклад, ls – вивід умісту поточної директорії) запускається як окремий процес, то стає зрозумілим, наскільки "дорога" операція створення процесу в класичному змісті. Тому ще в 1980-х рр. з'явилася концепція полегшеного процесу(lightweight process) – виконуваного в тім же просторі віртуальної пам'яті, що й процес-батько. При створенні нового полегшеного процесу ОС створює для нього тільки стік– системний резидентний масив у пам'яті, призначений для підтримки виконання процедур процесу й хранящий їхні локальні дані й сполучну інформацію між ними.

ОС відповідає за наступні дії, пов'язані з керуванням процесами:

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

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

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

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

Семафори.В 1966 р. у роботі [16] проф. Эдсгер Дейкстра запропонував новий спосіб синхронізації процесів, що став класичним, - семафори.

Двійковий семафор (binary semaphore)– змінна S, що може перебувати у двох станах: "відкритий" й "закритий"; над S визначені дві операції ( "семафорні дужки"): P(S) – закрити, V(S) – відкрити. При спробі закрити вже закритий семафор відбувається переривання, і ОС додає поточний процес у чергу до закритого семафора. Операція V(S) активізує перший вартий у черзі до S процес, що успішно завершує операцію P(S). Якщо семафор S уже відкритий, операція V(S) не має ніякого ефекту.

Таким чином, якщо припустити, що апаратури й ОС підтримують подібну концепцію семафора, то вона є зручним інструментом для синхронізації по ресурсах. Назвемо критичною секцієюкод, що може виконуватися декількома процесами паралельно й здійснює доступ до деякого загального для всіх процесів ресурсу – глобальної області пам'яті, загальному файлу й т.д. Позначимо код критичної секції critical_section.Якщо допустити, що даний код може виконуватися паралельно в декількох процесах прямо, то може виникнути вже відома нам ситуація race condition ( конкуренція за загальні дані): один процес може змінювати ресурс, а другий у цей момент зчитувати його (некоректне) стан, або два процеси одночасно будуть намагатися змінювати той самий ресурс, що приведе до порушення його цілісності. Таким чином, для критичних секцій необхідно вирішити завдання взаємного виключення (mutual exclusion)– у кожен момент часу не більш ніж один з паралельних процесів може виконувати критичну секцію. За допомогою семафорів Дейкстры це завдання вирішується легко й добірно: код критичної секції повинен мати вигляд

P(S); critical_section; V(S);

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

Дуже важлива властивість операцій P й V у наступному: вони атомарны (atomic)для інших процесів, тобто якщо процес почав виконувати операцію P(S) або V(S), те ніякий інший процес до її завершення не може також почати виконувати аналогічну операцію.

Підіб'ємо підсумок: для синхронізації процесів по загальному ресурсі необхідне взаємне виключення виконання критичних секцій й атомарность операцій синхронізації.

Однак варто помітити, що використання семафорів – далеко не ідеальний спосіб синхронізації, з погляду надійності. При їхньому неакуратному використанні можлива ситуація тупика (взаємного блокування, deadlock ), при якій утвориться ланцюжок процесів, що нескінченно чекають один одного. Найпростіший спосіб створити deadlock – використати двасемафори S1 й S2, так, що перший паралельний процес намагається виконати код P(S1); P(S2),а другий – код P(S2); P(S1).Очевидно, що при будь-якому співвідношенні часів виконання операцій будуть закриті обидва семафори, на яких і будуть "висіти" обидва процеси, не в змозі рушити далі. Як же уникнути подібних ситуацій? Адже ні компілятор, ні операційна система не підкажуть програмістові правильний спосіб використання семафорів. Дуже легко також "забути" виклик V(S) і, тим самим, зробити загальний ресурс "навіки" недоступним для інших процесів. Один зі способів рішення цього завдання полягає в тім, щоб використати спеціальні інструменти й технології, що автоматично забезпечують "правильну" послідовність застосування операцій над семафорами. Один з таких інструментів – аспектно-орієнтоване програмування.

Монітори –ще один, більше надійний спосіб синхронізації, запропонований в 1974 р. одним із класиків комп'ютерних наук професором Чарльзом Хоаром.

Монітор– многовходовый модуль M, у якому визначені загальні для процесів дані D (сховані) і (абстрактні) операції P1, … PN над цими даними (у вигляді процедур).

У кожен момент не більш ніж один з паралельних процесів може викликати яку-небудь із операцій: M.Pi (X, Y, ...)

Виклик кожної операції монітора - атомарен (як й операції над семафором).

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

Монітори включені Ч. Хоаром у розроблений їм мова Concurrent Pascal для паралельного програмування й розробки операційних систем.

Докладніше про семафори й монітори - у спеціальних розділах курсу, присвячених керуванню процесами й синхронізації процесів.

 





Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.213.192.104 (0.016 с.)