ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6783
Скачиваний: 22
386
Зазвичай число записів (входів) в TLB є невеликим (64-256), наприклад в комп'ютері Pentium III є 64 входи, при розмірі сторінки 4 КБ, що дозволяє отримати швидкий доступ до пам'яті ємністю 256 КБ.
Структура TLB, побудованої як частково-асоціативна кеш пам'ять, наведена на рис. 10.29.
Крім номерів програми, віртуальної сторінки та фізичної сторінки слово сторінкової таблиці включає п'ять ознак: РЗ, РВ, РН, РМ, та РД.
Для керування занесення інформації в асоціативні регістри до їх складу вводять додаткові розряди: розряд зайнятості (РЗ) і розряд використання (РВ).
387
Ознака РЗ (розряд зайнятості) потрібна для реалізації стратегії заміщення вмісту асоціативних регістрів. РЗ встановлюється в 1 при записі інформації в асоціативні регістри. РЗ говорить про те, вільний чи зайнятий даний асоціативний регістр.
Так як зазвичай всі асоціативні регістри зайняті інформацією, то для запису нової необхідно звільнити якийсь асоціативний регістр. Звільняється той регістр, інформація в якому не використовувалась Для фіксації звернень до даної віртуальної сторінки використовується ознака РВ (розряд використання), який встановлюється в 1 при звертанні до віртуальної сторінки. Якщо всі РЗ = 1, то нова інформація засилається в регістр, в якому РВ = 0. Якщо всі РВ = 1, то вони автоматично скидаються
Ознака РН (розряд наявності) встановлюється в одиницю, якщо віртуальна сторінка в даний момент знаходиться в основній пам'яті. В цьому випадку в асоціативному регістрі знаходиться номер фізичної сторінки. Якщо РН = 0, то при спробі звернення до даної віртуальної сторінки операційна система завантажує сторінку з зовнішньої пам'яті до основної. При цьому в асоціативному регістрі наявна інформація про місце розміщення сторінки в зовнішній пам'яті. Завантаження сторінки з зовнішньої пам'яті супроводжується записом до відповідного асоціативного регістра номера фізичної сторінки, до якої буде записана віртуальна сторінка
Сторінка в ОП може змінюватись. Тому, якщо вона не змінилася, немає необхідності її переписувати в ЗП, так як там вже є копія. Якщо ж змінилася, потрібно переписати. Для фіксації змін в сторінках ОП вводиться в сторінкову таблицю розряд модифікації РМ, який дозволяє суттєво зекономити час обміну
Ознака прав доступу ОД вказує вид доступу до сторінки: запис, читання чи дозволені або заборонені обидві операції, і призначений для вирішення питань захисту інформації
Потрібно відзначити, що при сторінковій організації пам'яті виникають ті ж проблеми з заміщенням сторінок в основній пам'яті, як це було для кеш пам'яті. Зазвичай в ОП немає вільних сторінок і при завантаженні нової інформації якусь сторінку доводиться видаляти з ОП. Необхідний алгоритм визначення сторінки, що підлягає знищенню. Тут використовуються ті ж самі методи заміщення сторінок, що і в кеш пам'яті: LRU - знищення сторінки з максимальним простоєм, LFU - знищення сторінки з мінімальною частотою звернення, FIFO - знищення сторінки згідно з чергою поступлення, RAND - знищення сторінки випадковим чином При цьому потрібно відзначити, що плата за промах (коли вміст потрібної сторінки відсутній в основній пам'яті) є досить великою (десятки мілі-секунд), оскільки потрібно робити звернення до повільної зовнішньої пам'яті
Важливим питанням сторінкової організації пам'яті є вибір об'єму сторінки. На користь малого об'єму сторінки говорять такі аргументи:
-
зменшуються втрати через фрагментацію за рахунок неповного використання об'єму виділеної сторінки програмою;
-
зменшується об'єм пересилань.
На користь великого об'єму говорять наступні аргументи:
■ зменшуються затрати на сторінкову таблицю;
■ зменшується час підготовчих операцій
в ЗП.
Зазвичай вибирають об'єм сторінки
в діапазоні 8КБ - 32КБ
Таким чином використання сторінкової організація пам'яті дає наступні переваги:
■ Віртуальна пам'ять представляється
для програміста як пам'ять одного
рівня,
що спрощує програмування.
388
■ Об єм віртуальної пам яті визначається довжиною адресного поля і може набагато перевищувати ємність основної пам'яті,
-
Виключаються протиріччя, пов'язані з розподілом основної пам'яті між системними і прикладними програмами Немає обмеження на кількість програм.
-
Виключається фрагментація основної пам'яті,
-
При мультипрограмуванні не потрібне послідовне розташування сторінок однієї програми в основній пам'яті,
-
Не потрібно переміщення інформації, як це є при розподілі з допомогою базових регістрів.
-
В основну пам'ять загружаються активні сторінки за потребою, неактивні сторінки залишаються в зовнішній пам'яті.
Разом з тим, використання сторінкової організації пам яті вимагає додаткових апаратних та програмних засобів, та ускладнює роботу комп'ютера.
10.3.5. Сегментна організація віртуальної пам'яті
Зазвичай програма складається з декількох частин, розміри яких наперед невідомі та можуть змінюватись в процесі виконання програми. Для кожної з цих частин повинна бути відведена область в просторі віртуальних адрес, оскільки користуватися віртуальною пам яттю з неперервною нумерацією байтів всіх частин не завжди зручно. Більш зручно, коли кожна частина має свою нумерацію байтів починаючи з нуля. Бажано також, щоб складена таким чином програма могла працювати при динамічному розподілі пам яті, не вимагаючи від програміста зусиль по об єднанню різних її частин в єдиний масив. Це завдання розв'язується в багатьох комп'ютерах шляхом використання особливого методу перетворення віртуальних адрес в фізичні та називається сегментною організацією пам'яті,
Принципи сегментної організації пам'яті є наступними:
-
віртуальна пам'ять кожної програми ділиться на частини, що називаються сегментами*
-
всередині сегменту адресація байтів є незалежною, починаючи від нуля до якогось максимального значення;
-
різні сегменти можуть мати різну довжину;
-
довжина сегмента може змінюватись в процесі роботи;
-
так як кожний сегмент займає незалежний адресний простір, сегменти можуть рости і скорочуватися незалежно один від одного.
Щоб виконати звернення до такої сегментованої, або двовимірної пам'яті, програма повинна видати адресу, яка складається з двох частин: номера сегмента і внутрішньої
Як приклад на рис. 10.30 наведено сегменти пам яті деякої програми.
389
адреси сегмента. Тобто до віртуальної адреси необхідно додати додаткові розряди лівіше номера сторінки, які визначають номер сегмента.
Крім спрощення обробки змінних за об'ємом структур даних, сегментована пам'ять значно спрощує зв'язок процедур, компіляція яких виконана окремо. Якщо процедура в деякому сегменті зазнала змін і повторної компіляції, то решта процедур змінювати не потрібно. Сегментація спрощує і спільне використання даних локальними процесами.
Так як з точки зору програміста сегменти є самостійними логічними об'єктами, припустимо застосування для них різних видів захисту: дозволяється лише читання, запис і т. п.
Таким чином виникає певна ієрархія в організації програм, яка складається з чотирьох ярусів: програма, сегмент, сторінка, слово. Цій ієрархії програм відповідає й ієрархія таблиць перетворення віртуальних адрес у фізичні, як це показано на рис. 10.31.
Програмна таблиця включає всі завантажені в комп'ютер програми. Кожній програмі відповідає своя сегментна таблиця. Сегментна таблиця включає сегменти даної програми. Кожному сегменту відповідає своя сторінкова таблиця. Сторінкова таблиця визначає фізичне розташування кожної сторінки в пам'яті (основній і зовнішній).
Хоча в логічному відношенні сегментна і сторінкова організація пам'яті тісно пов'язані між собою та подібні в реалізації, цілі їх застосування різні. Порівняння сегментної і сторінкової організації пам'яті наведено в табл. 10.1.