Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
16-18.docx
Скачиваний:
3
Добавлен:
20.11.2019
Размер:
138.81 Кб
Скачать
  1. Сегментно-сторінкова модель

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

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

  1. регістр адреси дескриптора указує на таблицю сегментів, з неї вибирається дескриптор сегменту, а з останнього - адреса таблиці сторінок;

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

  3. реальна адреса виходить складанням базової адреси сторінкового кадру із зсувом в сторінці.

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

Оскільки в моделі, приведеній на рис.4.1, кожен сегмент має власну таблицю сторінок, самі таблиці сторінок можуть займати значний об'єм в пам'яті. Просте вирішення цієї проблеми представляє Windows 3.x: у системі існує єдина таблиця сторінок.

  1. Черги повідомлень

Ч ерги використовують модель взаємодії процесів "багато відправників - один одержувач". Цю модель часто називають поштовою скринькою (mailbox). Процес-одержувач є власником черги, він створює чергу, а решта процесів дістає до неї доступ, "відкриваючи" її. Передача даних в черзі відбувається завжди повідомленнями, причому кожне повідомлення має заголовок і тіло. Заголовок завжди має фіксований для даної системи формат. У нього обов'язково входить довжина повідомлення, а інша інформація залежить від специфікацій конкретної системи: це може бути пріоритет повідомлення, тип повідомлення, ідентифікатор процесу, що послав повідомлення і тому подібне. Тіло повідомлення інтерпретується по правилах, що встановлюються самими процесами - відправником і одержувачем. Власне черга ОС складає із заголовків повідомлень. У елементи черги включаються покажчики на тіла повідомлень, розташовані в пам'яті системи або процесів. Істотним питанням при конструюванні механізму черг є питання про включення або невключення в ОС системної буферизації повідомлень. При включенні такого засобу (рис.11.3) тіло відправленого повідомлення копіюється в системну область пам'яті, а при читанні - копіюється з неї в адресний простір процесу-одержувача. За відсутності системної буферизації тіла повідомлень зберігаються в загальній для відправника і одержувача пам'яті, а передається тільки покажчик на тіло повідомлення (рис.11.4). У першому випадку виконуються додаткові пересилки, витрачається додаткова пам'ять і вводяться жорсткіші обмеження на об'єм повідомлень, але досягається надійність передачі і значно більш простій інтерфейс процесів. У другому випадку значно економиться пам'ять, але самі процеси повинні піклуватися про управління спільно використовуваною пам'яттю і про збереження повідомлень в ній. За відсутності системної буферизації повідомлень застосовуються зазвичай два методи передачі тіла повідомлення: або процес-відправник поміщає тіло повідомлення в окремий сегмент, що розділяється, отримує у ОС маніпулятор цього сегменту для процесу-одержувача і передає цей маніпулятор у складі повідомлення; або для всіх повідомлень виділяється одна загальна область пам'яті із загальним маніпулятором, і для розміщення повідомлення в ньому використовуються системні виклики виділення пам'яті цілком.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]