Плоска модель пам'яті


Починаючи з моделі Intel-80386, в мікропроцесорах Intel-Pentium адреса складається з 16-розрядного номера сегменту і 32-розрядного зсуву. 32-розрядне поле зсуву дозволяє адресувати до 4 Гбайт в межах одного сегменту, що більш ніж достатньо для більшості мислимих застосувань і дозволяє реалізувати дійсно "плоску" (flat) модель віртуальної пам'яті процесу, що є лінійним безперервним простором адрес..

Проте, при розмірі сторінки 4 Кбайт таблиця сторінок повинна містити більше 106 елементів і займати 4 Мбайт пам'яті. Для економії пам'яті апаратура трансляції адреси мікропроцесора підтримує таблиці сторінок двох рівнів. Сторінкова таблиця верхнього рівня називається каталогом сторінок. Старші 10 байт 32-розрядного зсуву є номером елементу в сторінковому каталозі. Елемент сторінкового каталога адресує таблицю сторінок другого рівня. Наступні 10 байт зсуву є номером елементу в таблиці сторінок другого рівня. Елемент таблиці другого рівня адресує сторінковий кадр в реальній пам'яті, а молодші 12 байт зсуву є зсувом в сторінці. Сегментна частина апарату трансляції адреси виявляється зайвою, в Intel-Pentium вона не може бути відключена, але той же ефект досягається, якщо кожному процесу призначається тільки один сегмент, і для процесу створюється таблиця сегментів, що містить тільки один елемент. Поле base цього елементу адресує сторінковий каталог процесу, а кожен елемент сторінкового каталога - одну таблицю сторінок. Структури елементів каталога сторінок і таблиці сторінок другого рівня ідентичні, кожна таблиця сторінок (каталог або таблиця другого рівня) містить 1024 елементи і сама займає сторінковий кадр в пам'яті. Таблиці сторінок беруть участь в сторінковому обміні так само, як і сторінки, що містять будь-які інші дані і коди.

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

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

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

Більшість розробників застосувань гаряче вітали введення плоскої моделі пам'яті в сучасних ОС (OS/2 Warp, Windows 95, Windows NT), оскільки представлення віртуальної адреси у вигляді одного 32-розрядного слова позбавляє програміста від необхідності розрізняти ближні і дальні покажчики і спрощує програмування. Відмова від сегментної структуризації віртуального адресного простору де в чому обмежує можливості програміста. Велика ж ефективність плоскої моделі пам'яті є об'єктивним чинником, оскільки, по-перше, операція з 32-розрядними адресними словами зменшує число команд в програмі, а по-друге, оскільки в 4-Гбайтном віртуальному адресному просторі процесу можуть бути розміщені і процедури, що реалізовують системні виклики, то звернення процесу до ОС відбуваються як до власних локальних процедур і не вимагають перемикань контексту.

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



Дата добавления: 2016-07-27; просмотров: 1299;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.