Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sam_R_OS.doc
Скачиваний:
2
Добавлен:
19.11.2019
Размер:
5.27 Mб
Скачать

Сегментний розподіл

При сторінковій організації, віртуальний адресний простір процесу поділяється, механічно, на piвні частини. Це не дозволяє диференціювати способи доступу до різних частин програми (сегменти). Ця властивість є корисною. Наприклад, можна заборонити звертатися з операціями запису i читання в кодовий сегмент програми, а для сегмента даних дозволити тільки читання. Kpiм того, розбивка програми на "осмислені” частини робить можливим поділ одного сегмента декількома процесами. Наприклад, якщо два процеси використовують ту саму математичну підпрограму, то в оперативну пам'ять може бути завантажена тільки одна її копія.

Розглянемо, яким чином сегментний розподіл пам'яті реалізує ці можливості (малюнок 2.14). Віртуальний адресний пpocтip процесу поділяється на сегменти, розмір яких визначається програмістом з урахуванням значеннєвого значення інформації, що міститься в них. Окремий сегмент може являти собою підпрограму, масив даних i т.п. Іноді сегментація програми виконується за замовчуванням компілятором.

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

Мал. 2.14. Розподіл пам'яті сегментами.

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

Віртуальна адреса, при сегментній організації пам'яті, може бути представлена парою (g, s), де g -номер сегмента, a s - зсув у сегменті. Фізична адреса обчислюється додавання початкової фізичної адреси сегмента, знайденого в таблиці сегментів за номером g, i зсуву s.

Недоліком даного методу розподілу пам'яті є фрагментація на piвнi сегментів i повільніше, в порівняння з сторінковою організацією, перетворення адреси.

Сторінково - сегментний розподіл

Даний метод являє собою комбінацію сторінкового i сегментного розподілу пам'яті i, внаслідок цього, поєднує достоїнства обох підходів. Віртуальний простір процесу поділяється на сегменти, а кожен сегмент, у свою чергу, поділяється на віртуальні сторінки, що номеруються в межах сегмента. Оперативна пам'ять поділяється на фізичні сторінки. Завантаження процесу виконується операційною системою посторінково, при цьому частина сторінок розміщується в оперативній пам'яті, а частина - на диску. Для кожного сегмента створюється своя таблиця сторінок, структура якої збігається зі структурою таблиці сторінок, що використовують при сторінковому розподілі. Для кожного процесу створюється таблиця сегментів, у якій вказують адреси таблиць сторінок для вcix сегментів даного процесу. Адреси таблиці сегментів завантажуються в спеціальний регістр процесора, під час активізації відповідного процесу. На малюнку 2.15 зображена схема перетворення віртуальної адреси у фізичну (для даного методу).

Мал. 2.15. Схема перетворення вipmyaльнoї адреси у фізичну для сегментно-сторінкової організації пам'яті

Різновидом віртуальної пам'яті є свопінг. На малюнку 2.16 зображено графік залежності коефіцієнта завантаження процесор, в залежності від числа одночасно виконуваних процесів i частки часу, протягом якого процесами були в стані чекання введения - виведення.

Мал. 2.16. Залежність завантаження процесора від числа задач i інтенсивності введення-виведення.

3а малюнком 2.16, для завантаження процесора на 90% достатньо лише трьох розрахункових задач. Однак, для того, щоб забезпечити таке ж завантаження інтерактивними задачами, що виконують інтенсивне введення-виведення, потрібні десятки таких задач. Варто зауважити, що необхідною умовою для виконання задачі є завантаження її в оперативну пам'ять, обсяг якої обмежений. За цих умов, був запропонований метод організації обчислювального процесу, названий свопінгом. Відповідно до нього, деякі процеси (звичайно, знаходяться в стані чекання) тимчасово вивантажуються на диск. Планувальник операційної системи не виключає їх зi свого розгляду, i за умов активізації деякого процесу, що знаходиться в області свопінгу на диску, цей процес переміщується в оперативну пам'ять. Якщо вільного місця в оперативній пам'яті не вистачає, то вивантажується інший процес.

При свопінгу, на відміну від розглянутих раніше методів реалізації віртуальної пам'яті, процес переміщається між пам'яттю i диском, тобто протягом деякого часу процес може бути відсутній в оперативній пам'яті. Існують різні алгоритми вибору процесів на завантаження i вивантаження, а також piзні способи виділення оперативної i дискової пам'яті процесу, що завантажується.

Ієpapxiя запам'ятовуючих пристроїв. Принцип кешування даних

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

Мал. 2.17. Ієрархія ЗП.

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

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

Розглянемо окремий випадок використання кеш-пам'яті, з метою зменшення середнього часу доступу до даних, що зберігається в оперативній пам'яті. Для цього, між процесором i оперативною пам'яттю міститься швидке ЗП, назване просто кеш-пам'яттю (малюнок 2.18). З цією метою може бути використана, наприклад, асоціативна пам'ять. Вміст кеш-пам'яті являє собою сукупність записів щодо всіх завантажених у неї елементів даних. Кожен запис про елемент даних містить у собі його адресу, i керуючу інформацію: ознака модифікації й звертання до даних, за певний період часу.

Мал. 2.18. Кеш-пам'ять

У системах, оснащених кеш-пам'яттю, кожен запит до оперативної пам'яті виконується у відповідності з наступним алгоритмом:

1. Розглядається вміст кеш-пам'яті, з метою визначення чи не знаходяться потрібні дані в кеш-пам'яті; кеш-пам'ять не є адресною, тому пошук потрібних даних здійснюється за вмістом - значенню поля чи адреси в оперативній пам'яті ( із запиту).

2. Якщо дані містяться в кеш-пам'яті, то вони зчитуються з неї, а результат передається в процесор.

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

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

Покажемо, як середній час доступу до даних залежить від ймовірності попадання в кеш. Нехай, є основні запам'ятовуючі пристрої з середнім часом доступу до даних t1 i кеш-пам'ять, що має час доступу t2, мабуть, t2<t1. Позначимо через t середній час доступу до даних у системі з кеш-пам'яттю, а через р -ймовірність попадання в кеш. За формулою повної ймовірності маємо:

t = t1(0-p) + t2(p )

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

У реальних системах, ймовірність попадання в кеш складає приблизно 0,9. Високе значения ймовірності перебування даних у кеш-пам'яті пов'язано з наявністю об'єктивних властивостей: просторової i тимчасової локальності.

  • Просторова локальність. Якщо відбулося звертання за деякою адресою, то, з високим ступенем ймовірності, найближчим часом відбудеться звертання до cycідніх адрес.

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

Уci попередні міркування справедливі i для інших пар запам'ятовуючих пристроїв, наприклад, для оперативної i зовнішньої пам'яті. У цьому випадку, зменшується середній час доступу до даних, розташованих на диску i роль кеш-пам'яті виконує буфер, що є в оперативній пам'яті.

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