Переваги мікроядерної архітектури



· Висока переносимість;

· Розширюваність;

· Висока надійність;

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

Недоліки мікроядерної архітектури

Більш низька продуктивність. Це позначається на швидкості роботи прикладних середовищ, а значить і на швидкості виконання програм.

Висновок:

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

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

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

За ці достоїнства доводиться розплачуватися зниженням продуктивності й це основний недолік мікропроцесорної архітектури.

Мікроядерну концепцію використають такі ОС, як Windows NT і деякі версії ОС UNIX.

 

Додаткова література:

Андрій Рабаневский “Операційна система UNIX” Спб.: БХВ - Санкт-Петербург, 1999.


Процеси.

Процес - основна одиниця роботи в ОС. Розглянемо спочатку найбільш знайомий тип роботи - послідовну програму.

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

Однак, в ОС цей простий зв'язок між виконуваними роботами й процедурами - втрачена. Одна процедура може працювати одночасно в декількох частинах системи. Наприклад, кілька каналів, пов'язаних з дисками, можуть розділяти одну процедуру уведення й навпаки, функція, що представляє за змістом єдину операцію, наприклад “введення”, може щораз по ходу роботи використовувати одну або кілька різних процедур.

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

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

Поняття процесу – формалізація ідеї “незалежної роботи”.

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

На додаток до безлічі апаратних пристроїв, що працюють паралельно, може бути ще кілька завдань, які також виконуються паралельно.

Ці паралельно виконувані завдання взагалі не повинні враховувати існування один одного. Коли якесь завдання віддає наказ “друкувати”, його не стосується те, що інше в цей час здійснює запис на диск і т.д.

Щоб одержати адекватну модель такого функціонування, нудно ввести одиницю роботи, яка б відбивала ці паралельність, а це і є процес.

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

Отже, процеси– незалежні роботи, які виконуються паралельно й різними швидкостями.

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

Крім того, робиться допущення, що операції усередині процесу виконуються в строго певній послідовності.

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

Простір станівдля даного набору змінних станів – безліч станів, які може приймати цей набір змінних.

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

Один зі способів зробити роботу складається в послідовному застосуванні різних дій. Кожна дія породжує новий стан, що по визначенню і є робота.

Функція дії– це функція, що відображає стан у дії. Функція дії може також породжувати роботу із заданого початкового стану. Вони просто описують дію, яку треба застосувати до кожного чергового стану, а ця дія породжує новий стан і т.д. нескінченно.

 На змістовному рівні набір змінних - пам'ять, стан - уміст пам'яті, функція дії - програма.

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

Приклад:

Нехай заданий процес P мающий дві змінні x й y. Роботу процесу Р можна описати послідовністю станів: .

Роботу процесу можна також описати, указавши простір станів , один з початкових станів  і функцію дії, що над всіма станами робить дії  .

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

Ясно, що якщо у двох процесів окремі набори змінни станів, то вони не можуть взаємодіяти. Спілкування між процесами забезпечується поділюваними змінними.

У ряді ОС крім поняття процес виділяється ще більш дрібна одиниця, що називається потік.

У чому ж різниця?

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

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

У найпростішому випадку процес складається з одного потоку. Надалі ми будемо, з метою спрощення, ототожнювати ці поняття й користуватися терміном процес.

Реалізація процесів.

Кожен програмний процес однозначно визначається інформаційною структурою, названою дескриптором процесу. У типовій системі дескриптор процесу складається з:

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

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

3. Інформації про ресурси, якими процес володіє або має право користуватися.


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

Дуже важливо розрізняти абстрактний і програмний процеси.

Програмний процес - це й абстрактний процес, а зворотне не завжди вірно.

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

Є два підходи до утворення програмних процесів.

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

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

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

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

Цей механізм, що сам програмним процесом не є, дає системі можливість маніпулювати програмними процесам. Він називається стрижнем.

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

Аналогічно команда “зупинити” відбирає в процесу процесор, а команда “знищити” відбирає дескриптор і ресурси.

У системі з єдиним процесором може існувати кілька процесів. При цьому стрижень дає кожному процесу можливість користуватися процесором у певні моменти часу.

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

У більш складних системах процеси можуть бути нерівними. Наприклад, вони можуть становити деревоподібну структуру.

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

У системі з деревоподібною структурою можуть бути дуже строгі правила, щодо передачі ресурсів й організації керування.

Наприклад, при утворенні кожен процес може одержати лише ті ресурси, які “належать” його батькові. Батько може мати право контролювати дії своїх синів і приймати дії для виправлення ненормальних ситуацій.

 

 

 


У такої структурованої системи є переваги:

· Розподіл ресурсів перебуває під строгим контролем. Ресурси всякого процесу були колись власністю кожного з його предків. Якщо процес хоче звільнити деяких зі своїх ресурсів, він може віддати їх тільки своєму батькові. Ніколи не буває неясностей, який ресурс належить якому процесу.

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

· Завдяки наявності структури завжди ясно, якому процесу належить керування: батько управляє синами.

У безструктурній системі все знає й робить супервізор. Хоча централізоване керування допускає велику волю при розбивці завдань, вона ускладнює ведення обліку, тому що супервізору доводиться стежити за кожним процесом у системі.

Спілкування між процесами.

Якщо ми хочемо використовувати ефективно апаратні й програмні ресурси. Вони підлягають поділу.

Розглянемо завдання користувача, що виконується в системі, як єдиний програмний процес. Рідко буває, коли цьому процесу протягом усього часу існування був потрібно який-небудь апаратний пристрій для одноособового користування.

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

Для зниження втрат через неефективне використання програмного встаткування можна також і тут скористатися поділом.

Візьмемо, наприклад, таку програму як компілятор. Якщо процесу потрібно відтранслювати програму, він може скопіювати програму компілятора у свою пам'ять і виконати компіляцію. Якщо цим компілятором користуються кілька процесів, то таке розмноження, з погляду ресурсів пам'яті, неоптимально. Доцільно розділити за часом один екземпляр компілятора.

Помітимо, що в апаратних і програмних ресурсів є загальні властивості.

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

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

Фізичні пристрої називаються фізичнимиабо природними ресурсами.

Частина програмного забезпечення, що поводиться подібно фізичному ресурсу, називається логічним ресурсом.

Кожному із процесів, що функціонують у системі неважливо, які ресурси він використовує - фізичні або логічні.

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

Синхронізація процесів.

Незважаючи на те, що ресурси можна розділяти, вони звичайно доступні в кожен момент тільки одному процесу. Ресурс, що допускає обслуговування тільки одного користувача за один раз, називається критичним ресурсом.

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

Якщо ресурс зайнятий, то інші процеси, яким він потрібний, тимчасово одержують відмову й повинні чекати, поки він не звільнитися.

Усередині кожного процесу можна виділити місця, у яких відбувається звертання до критичних ресурсів. Ці місця називаються критичними ділянками.

Розглянемо два незалежних процеси:

Parbegin

Процес_1: do while (true)

             begin

              Критична ділянка 1;

             end;

            частина, Що Залишилася, процесу 1;

         end;

Процес_2: do while (true)

             begin

              Критична ділянка 2;

             end;

            частина, Що Залишилася, процесу 2;

         end;

 

Конструкція виду:

Parbegin

Оператор 1;

Оператор 1;

...

Оператор 1;

parend.

 

Означає, що оператори 1(N виконуються паралельно.

До речі, запису, наведені вище, називаються записами на  псевдокоді.

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

Щоб не допустити одночасного виконання обох критичних ділянок, у системі повинен бути передбачений механізм, який би синхронізував ці два процеси. Цей механізм повинен володіти двома властивостями:

1. Якщо один або кілька процесів хочуть звернутися до своїх критичних ділянок, то один з них повинен одержати дозвіл увійти у свою критичну ділянку.

2. У кожен момент часу не більш, ніж одному процесу дозволяється перебувати у своїй критичній ділянці.

У процесів виникає не тільки проблема синхронізації, але й необхідність в обміні інформацією.

Назвемо словом “постачальник” процес, що відправляє порції інформації іншому процесу, що назвемо “споживач”.

Ці порції інформації можна розглядати як повідомлення.

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

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

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

Для обліку заповнених і вільних буферів потрібні поділювані змінні. Але раз змінні використовуються в режимі поділу, то буде потрібно й критичні ділянки. Отже, змінювати значення лічильника заповнених буферів треба в режимі взаємного виключення.

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

Такі процеси як Постачальник і Споживач, що спілкуються на однакових правах, називаються й сопрограмами. На жаль, у літературі цьому терміну дається дуже багато різних визначень. Щоб уникнути плутанини ми замість нього будемо користуватися терміном “ процеси, щокооперуються,”.

Якщо процесу Постачальник важливо знати, що його повідомлення отримане, то Споживач повинен підтверджувати одержання кожного повідомлення, тобто Постачальник і Споживач поміняються місцями.

Якщо в системі є трохи пара “Постачальник - Споживач”, то можна організувати поділ вільних буферів, об'єднавши їхній загальний пул.

Зупинимося на рішенні проблем синхронізації й відносин типу “Постачальник - Споживач”.


Дата добавления: 2018-05-13; просмотров: 602; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!