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

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

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

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

частин системи керування пам'яттю можливе виникнення конфліктів між ними.
2.5.1. Віртуальна пам'ять
Концептуально модель пам'яті в Mach виглядає для користувацьких процесів у виді великого лінійного ВАП. Для більшості 32-х розрядних процесорів адресний простір займає діапазон від 0 до 232 - 1 (4 Гбайта). Адресний простір підтримується сторінковим механізмом.
Mach забезпечує дуже тонке керування механізмом використання віртуальних сторінок (для тих процесів, що цікавляться цим). Для початку скажемо про те, що адресний простір може використовуватися розрідженим способом. Наприклад, процес може мати дюжину секцій ВАП, кожна з який знаходиться на відстані сотень Мбайт від найближчого сусіда, з великими зазорами не використовуваного адресного простору між цими секціями.
Теоретично будь-який ВАП може бути розрідженим, так що здатність використовувати велику кількість розкиданих секцій не є в дійсності властивістю архітектури ВП. Іншими словами, будь-яка 32-х бітна машина повинна дозволяти процесу мати 50 000 секцій даних, розділених проміжками по 100 Мбайт, у межах від 0 до 4 Гбайт. Однак, у багатьох реалізаціях лінійна сторінкова таблиця від 0 до самої старшої використовуваної сторінки зберігається в пам'яті ядра. На машині з розміром сторінки в 1 Kб ця конфігурація вимагає 4 мільйони елементів таблиці сторінок, роблячи таку схему дуже дорогою, якщо не неможливою. Навіть при багаторівневій організації сторінкової таблиці така розрідженість у кращому випадку неприйнятна. У ядрі Mach при його розробці споконвічно ставилася задача повної підтримки розріджених адресних просторів.
Для того, щоб визначити, які ВА використовуються, а які ні, Mach забезпечує спосіб призначення і скасування секцій ВАП, називаних областями (regіons). У виклику для призначення області можна визначити базові адреса і розмір, і область виділяється там, де це зазначено. В іншому випадку може бути заданий тільки розмір області, а система сама знаходить придатний діапазон адрес і повертає базову адресу. ВА є дійсним тільки в тому випадку, коли він попадає в призначений діапазон. Спроба використовувати адресу з проміжків між призначеними областями викликає переривання, що може бути перехоплено самим процесом, якщо він цього побажає.
Ключовим поняттям, зв'язаним з використанням ВАП, є об'єкт пам'яті (memory object). Об'єкт пам'яті може бути чи сторінкою набором сторінок, а також може бути файлом чи іншою, більш спеціальною, структурою даних, наприклад, записом бази даних. Об'єкт пам'яті може бути відображений у не використовувану частину ВАП, формуючи нову область. Коли файл відображений у ВАП, то його можна читати, в нього можна писати за допомогою звичайних машинних команд. Відображені (mapped) файли посторінково витісняються з пам'яті звичайним чином. Коли процес завершується, то його відображені в пам'ять файли автоматично повертаються у ФС разом із усіма змінами, що відбулися з їхнім змістом у той час, коли вони були відображені в пам'ять. Також можливо скасувати відображення файлу чи іншого об'єкта пам'яті, звільняючи його адресний простір і роблячи його доступним для послідовного його розподілу чи відображення.
Звичайно, відображення файлів у пам'ять не єдиний спосіб доступу до них. Їхній уміст можна читати і звичайним способом. Однак і в цьому випадку бібліотечні функції можуть відображати файли в пам'ять крім бажання користувача, а не використовувати систему в/в. Такий спосіб дозволяє сторінкам файлів використовувати систему ВП, а не спеціально виділені буфери де-небудь у системі.
2.6. Комунікації в ядрі Mach
Основною метою, що ставили перед собою розроблювачі засобів комунікації ядра Mach, була підтримка різних стилів комунікацій у сполученні з надійністю і гнучкістю. Комунікаційні засоби ядра Mach можуть підтримувати асинхронну передачу повідомлень, RPC, потоки байт (streams), а також інші способи. Механізм взаємодії процесів Mach базується на відповідних механізмах своїх попередників - RІ і Accent. Через свій еволюційний розвиток цей механізм пристосований більше для локального використання, а не для розподілених систем.
Спочатку розглянемо випадок одного вузла, а потім розширимо його для мережі. Слід зазначити, що мультипроцесор - це теж один вузол, тому взаємодія процесів, що працюють на різних процесорах багатопроцесорної машини, також відноситься до локального випадку.
2.6.1. Порти
Основою всіх комунікацій у Mach є структура даних ядра, яку називають портом. У сутності порт являє собою захищену поштову скриньку. Коли нитка одного процесу хоче взаємодіяти з ниткою іншого процесу, то нитка-відправник записує повідомлення в такий порт, а нитка-одержувач витягає його відтіля. Кожен порт має засоби захисту, що гарантують, що тільки процеси, що мають відповідні права, можуть передавати й одержувати через нього повідомлення.
Порт підтримує взаємодію подібно конвеєрам (pіpes) у UNІХ. Порт, що може бути використаний для відправлення запиту від клієнта серверу, не може використовуватися для відправлення відповіді від сервера клієнту. Для цього потрібний другий порт. У кожного порту може бути тільки один процес, що читає з нього повідомлення, і кілька процесів, що пишуть у порт.
Порти підтримують надійний і послідовний обмін повідомленнями. Якщо нитка посилає повідомлення в порт, то система гарантує, що воно буде доставлено. Повідомлення ніколи не губляться через помилки, переповнення або з інших причин (принаймні, якщо немає відмовлень апаратури). Також гарантується, що повідомлення, відправлені однією ниткою, будуть отримані в тому ж порядку. Якщо ж дві нитки пишуть у той самий порт позмінно, то система не дає ніяких гарантій про послідовність повідомлень, тому що в ядрі повідомлення буферизуются. На відміну від конвеєра, порти підтримують потік не байтів, а повідомлень. Кілька повідомлень ніколи не з'єднуються разом в одне повідомлення.
Коли порт створюється, виділяється 64 байта з простору ядра і вони використовуються доти, поки порт не зруйнований, або явно, або побічно, при визначених обставинах, наприклад, коли не виявиться в наявності жодного процесу, що використовує цей порт.
Самі повідомлення зберігаються не в порту, а в іншій структурі данихядра, названою чергою повідомлень. Порт містить лічильник, у якому зберігається поточна кількість повідомлень, що знаходяться в черзі, і максимально можливе число повідомлень у черзі. Якщо порт відноситься до якого-небудь набору портів, то порт зберігає покажчик на структуру даних набору портів. Процес може надати іншим процесам права на використання його портів. По різних причинах ядро повинне знати, скільки прав кожного типу надано, тому порт зберігає їхню кількість.
Якщо при використанні порту виникає помилка, то про неї повідомляється шляхом посилки повідомлень на інші порти, чиї права зберігаються тут. Нитки можуть бути заблоковані при читанні з порту, тому в структуру порту включений покажчик на список заблокованих ниток. Також важлива можливість прав на читання з порту (він може бути тільки один), тому така інформація теж зберігається в структурі даних порту. Якщо порт являє собою порт процесу, то
Loading...

 
 

Цікаве