WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Сучасні Операційні системи - Реферат

Сучасні Операційні системи - Реферат

ідентифікатор, маску сигналів, кореневий каталог, робочий каталог, масив дескрипторів файлів. Уся ця інформація міститься в параметрах процесу на рівні сервера користувацького режиму.
Примітиви керування процесами
Mach передбачає невелику кількість примітивів керування процесами. Більшість з них виконується шляхом посилки повідомлення ядру через порт процесу. Найбільш важливі з цих викликів приведені в таблиці 3.
Таблия 3.
Виклик Опис
Create Створює новий процес, що успадковує деякої властивості
Termіnate Завершує визначений процес
Suspend Нарощує лічильник припинень
Resume Зменшує лічильник припинень; якщо він дорівнює 0, то
розблокує процес
Prіorіty Встановлює пріоритет для існуючих чи майбутніх ниток
Assіgn Говорить, на якому процесорі повинні виконуватися нові нитки
Іnfo Повертає інформацію про час виконання, використовуваної
пам'яті і т.д.
Threads Повертає список ниток процесу
Процеси можуть бути припинені і відновлені за допомогою програмного керування. Кожен процес має лічильник, нарощуваний викликом Suspend і зменшуваний викликом Resume, що можуть блокувати і розблокувати його. Коли лічильник дорівнює 0, то процес може виконуватися. Наявність лічильника дозволяє уникнути проблем.
Виклики Prіorіty і Assіgn дозволяють програмісту керувати тим, як і де нитки виконуються в багатопроцесорній системі. Планування CPU виконується на основі пріоритетів, так що програміст може визначати, які нитки більш важливі, а які - менш важливі.
Нитки
Активними об'єктами в Mach є нитки. Усі нитки процесу розділяють один адресний простір і мають загальні в межах процесу ресурси (рис. 46). Крім того, кожна нитка має і свої особливі ресурси. Одним з таких ресурсів є порт нитки, що є аналогом порту процесу і який використовується ниткою для того, щоб викликати спеціальні, орієнтовані на нитці, сервіси ядра, наприклад, функцію завершення нитки. Тому що порти є загальними ресурсами для всіх ниток одного процесу, кожна нитка має доступ до портів своїх ниток-братів, у такий спосіб кожна нитка може керувати іншою ниткою, якщо це необхідно. Нитки Mach керуються ядром, тобто вони є тим, що іноді називають "великоваговими" нитками, на відміну від "легковагих" ниток (ниток, що цілком виконуються в користувацькому просторі). Створення і знищення ниток здійснюється ядром і включає відновлення структур дані ядра. Нитки ядра надають базові механізми для керування безліччю "активностей" у загальному адресному просторі. Що робити з цими механізмами - це справа користувача.
Рис. 47. Варіанти реалізацій З-ниток
(а) - Усі C-нитки використовують одну нитку ядра;
(б) - Кожна C-нитка має свою власну нитку ядра;
(в) - Кожна C-нитка має свій власний однонитковий процес
2.4.1. Реалізація З-ниток у Mach
У Mach існує кілька реалізацій 3-ниток. Оригінальна реалізація виконує всі нитки в користувацькому просторі усередині одного процесу. Цей підхід заснований на поділі в часі всіма 3-нитками однієї нитки ядра, як це показано на малюнку 47,а. Цей підхід може також використовуватися в UNіX'і чи будь-якій іншій системі, у якій немає підтримки ниток ядром. Такі нитки працюють як різні підпрограми однієї програми, що означає, що вони плануються образом, що невитісняє. Наприклад, у випадку типової задачі "виробник-покупець" виробник повинний заповнити буфер, а потім заблокуватися, щоб дати шанс покупцю на виконання.
Дана реалізація має недолік, властивий усім нитковим пакетам, що працюють у користувацькому просторі без підтримки ядра. Якщо одна нитка виконує системний виклик, що блокує, наприклад, читання з термінала, то блокується весь процес. Щоб уникнути цієї ситуації, програміст повинен уникати використовувати системні виклики, що блокують.
Друга реалізація використовує одну Mach-нитку для однієї 3-нитки, як показано на малюнку 47, б. Ці нитки плануються з витісненням. У багатопроцесорних системах нитки можуть дійсно працювати паралельно на різних процесорах. Фактично можливо мультиплексуваня m користувацьких ниток з n нитками ядра, хоча найбільш загальним випадкам є n=m.
У третій реалізації для кожного процесу виділяється одна нитка ядра, як показано на малюнку 47, в. Процеси реалізуються так, що їхні адресні простори відображаються в ту саму фізичну пам'ять, дозволяючи розділяти її тим же способом, що й у попередніх реалізаціях. Даний спосіб підтримки ниток використовується тільки тоді, коли потрібно спеціалізоване використання ВП. Недоліком цього методу є те, що порти, UNіX-файли й інші ресурси процесу не можуть розділятися.
Основне практичне значення першого підходу полягає в тому, що в умовах відсутності щирого паралелізму послідовне виконання нитки дозволяє відтворювати проміжні результати, полегшуючи процес налагодження.
2.5. Керування пам'яттю в Mach
Ядро Mach має потужну, ретельно розроблену і найвищою мірою гнучку систему керування пам'яттю, засновану на сторінковому механізмі і яка має багато своєрідних властивостей. Зокрема, у ній машинно-залежна частина коду відділена від машинно-незалежної частини надзвичайно ясним і незвичайним способом. Цей поділ робить керування пам'яттю більш мобільним, ніж в інших системах. Крім того, система керування пам'яттю тісно взаємодіє з комунікаційною системою.
Однієї з основних особливостей системи керування пам'яттю Mach є те, що її код розбитий на три частини. Перша частина називається pmap, що працює в ядрі і займається роботою з пристроєм відображення ВА у фізичні (Memory Management Unіt, MMU). Ця частина встановлює значення регістрів MMU і апаратних сторінкових таблиць, а також перехоплює всі сторінкові переривання. Ця частина коду залежить від архітектури MMU і повинна бути переписана для кожної нової машини кожний раз, коли Mach на неї переноситься. Друга частина - це машинно-незалежний код ядра, і він зв'язаний з обробкою сторінкових збоїв, керує відображенням областей пам'яті і заміною сторінок.
Третя частина коду працює в користувацькому просторі як процес, називаного "менеджер пам'яті" (memory manager) чи іноді "зовнішній менеджер сторінок" (external pager). Ця частина має справу з логічними аспектами (на відміну від фізичних) системи керування пам'яттю, в основному, з керуванням збереження образівпам'яті на диску. Наприклад, менеджер пам'яті відслідковує інформацію про те, які віртуальні сторінки використовуються, які знаходяться в ОП і де вони зберігаються на диску, коли не знаходяться в ОП. Ядро і менеджер пам'яті взаємодіють за допомогою добре визначеного протоколу, що дає можливість для користувачів ядра Mach писати свої власні менеджери пам'яті. Такий поділ обов'язків дозволяє реалізовувати сторінкові системи спеціального призначення. При цьому ядро стає потенційно менше і простіше, тому що значна частина коду працює в користувацькому просторі. З іншого боку, це і джерело ускладнення ядра, тому що при цьому воно повинно захищати себе від помилок некоректної роботи менеджера пам'яті. Крім того, при наявності двох активних
Loading...

 
 

Цікаве