Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lesson_06_SPZ

.doc
Скачиваний:
6
Добавлен:
21.12.2018
Размер:
1.4 Mб
Скачать

Тема 6. Керування віртуальною пам’яттю

  1. Структура, основні принципи віртуалізації пам’яті.

  2. Сегментна схема організації віртуальної пам’яті.

  3. Сторінкова схема організації віртуальної пам’яті.

  4. Сегментно - сторінкова схема організації віртуальної пам’яті..

  1. Структура, основні принципи віртуалізації пам’яті.

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

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

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

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

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

  1. Сегментна схема організації віртуальної пам’яті.

Сегментна схема використовується в ОС OS/2.

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

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

Рис. 6.1. Сегментний спосіб організації віртуальної пам’яті.

РТДС – регістр таблиці дескрипторів сегментів;

ВА – віртуальна адреса;

S – сегмент;

D – зміщення в середині сегмента;

ТДПЗ – таблиця дескрипторів поточної задачі.

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

Кожен сегмент, який розміщується в пам’яті має відповідну інформаційну структуру – яка називається дескриптором сегменту.

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

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

  • для того, щоб сегменти не перекривалися між собою;

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

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

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

Задачі заміщення сторінок фізичної пам’яті вирішуються за допомогою використання таких дисциплін: FIFO (перший прийшов, перший вийшов); LRU (останній з недавно використаних, який найдовше не використовувався); LFU (це той сегмент, який використовувався рідше за всіх); ВВС (випадковий вибір сегментів).

Розглянемо наступні особливості сегментного способу організації віртуальної пам’яті:

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

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

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

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

  1. Сторінкова схема організації віртуальної пам’яті.

Використовується в ОС Linux, OS/2, Windows.

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

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

Розбиття всієї оперативної пам’яті на сторінки приводить до того, що замість фактично одномірного адресного простору ми можемо користуватись двомірним. У цьому випадку перша координата – це номер сторінки, друга – зміщення в середині сторінки.

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

Таким чином здійснюється трансляція віртуальної адреси на фізичній пам’яті, що показано на рис. 6.2.

Рис. 6.2. Сторінкова схема організації віртуальної пам’яті.

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

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

В більшості сучасних ОС, наприклад OS/2 використовується дисципліна LRU, в Windows NT дисципліна заміщення FIFO. Так само як у випадку сегментного способу сторінковий механізм вимагає спеціальних апаратних засобів, наприклад кешування дескрипторів сторінок, що значно збільшує продуктивність обчислювальної системи в цілому.

У сучасних мікропроцесорах (486 і інші) використовується механізм асоціативного кешу, який дозволяє кешувати 32 дескриптори сторінок, при чому розмір сторінки містить 4 Кб, розмір максимально швидкого звернення до пам’яті дорівнює відповідно 128 Кб.

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

Є два недоліки:

  • потребує значних витрат на розміщення таблиці сторінок в пам’яті, ці сторінки додатково потрібно обробляти, на що витрачається процесорний час;

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

  • Сегментно - сторінкова схема організації віртуальної пам’яті..

    Метою організації сегментно – сторінкового механізму організації віртуальної пам’яті є уникнення недоліків сторінкового способу за рахунок збільшення накладних витрат на реалізацію сегментно – сторінкового способу.

    Так само як і у випадку з сегментами вся програма розділяється на логічно завершені частини сегментів і віртуальна адреса містить вказівник на номер відповідного сегменту. Інша складова віртуальної адреси складається з двох частин: віртуальної сторінки та індексу.

    Рис. 6.3. Сегментно - сторінкова схема організації віртуальної пам’яті.

    РТС – регістр таблиці сегментів;

    S – сегмент;

    Р – сторінка;

    І – індекс;

    ТС – таблиця сторінок.

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

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

    Перевагою сегментно – сторінкової організації пам’яті є те, що програма розділяється на сегменти, які розміщуються в пам’яті повністю. Сегменти в свою чергу розділяються на сторінки і всі сторінки сегменту також розміщуються в пам’яті. Це дозволяє зменшити час доступу до конкретної сторінки, зменшити кількість звертань до відсутніх сторінок, тому що імовірність “виходу” віртуальної адреси за межі сегменту є значно вищою імовірності “виходу” за межі сторінки. Сторінки використовуваного сегменту пам’яті можуть знаходитись не одна біля одної в даному сегменті, а в перемішку, в залежності від логічної структури виконуваної задачі.

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

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

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