- •Лабораторна робота № 4 Організація і управління пам’яттю
- •Теоретичні відомості
- •Алгоритми розподілу пам'яті
- •Розподіл пам'яті фіксованими розділами
- •Розподіл пам'яті динамічними розділами
- •Переміщувані розділи
- •Сторінковий розподіл
- •Віртуальна адреса
- •Фізична адреса
- •Сегментний розподіл
- •Логічна адреса
- •Фізична адреса Сегментно-сторінковий розподіл
- •Дескриптор сторінки
- •Варіанти завдань (алгоритмів):
Дескриптор сторінки
Базова
фізична адреса
Другий сторінки
етап
Вихідна
фізична адреса
Розглянемо ще одну схему керування пам'яттю, засновану на сегментно-сторінковому підході.
Логічна адреса
-
Н омер сегменту s
Н
омер
сторінки р всередині сегменту sЗміщення всередині
с
торінки
d
Таблиця сегментів
Таблиця
сторінок сегмента s
Фізична сторінка
Cегмент
s
Cторінка
p
Елемент
d
Відмінність цього підходу полягає в тому, що віртуальні сторінки нумеруються не в межах усього адресного простору процесу, а в межах сегмента. Віртуальна адреса в цьому випадку виражається трійкою (номер сегмента, номер сторінки, зміщення у сторінці). Для кожного процесу створюється своя таблиця сегментів, а для кожного сегмента - своя таблиця сторінок. Тоді
1. За номером сегмента, заданому у віртуальній адресі, з таблиці сегментів витягається фізична адреса відповідної таблиці сторінок.
2. За номером віртуальної сторінки, заданої у віртуальній адресі, з таблиці сторінок витягається дескриптор, у якому зазначений номер фізичної сторінки.
3. До номера фізичної сторінки пристиковується молодша частина віртуальної адреси - зміщення.
Кеш пам'ять
Пам’ять ЕОМ - це ієрархія запам’ятовуючих пристроїв, які відрізняються середнім часом доступу до даних, об’ємом і вартістю зберігання 1 біта інформації.
Кеш пам'ять (кеш) – спосіб спільного функціонування двох типів запам’ятовуючих пристроїв (які відрізняються часом доступу й вартістю зберігання даних), коли здійснюється динамічне копіювання з «повільного» пристрою у швидкі пристрої інформації, що найбільш часто використовується. За рахунок цього можливо, з одного боку, зменшити середній час доступу до даних, з іншого боку - заощадити більш дорогу швидкодіючу пам'ять.
Кешем часто називають ще й один із пристроїв - швидкий запам’ятовуючий пристрій. Він дорожчий і має порівняно невеликий обсяг порівняно з «повільним» - оперативною пам’яттю.
Якщо кешування використовують для зменшення середнього часу доступу до оперативної пам'яті, то в якості КЕШа використовують більш дорогу й швидкодіючу статичну пам’ять. Якщо ж кешування використовується для прискорення доступу до даних, що зберігається на диску, роль кеш-пам’яті грають буфери, що реалізовані в оперативній пам’яті.
Вміст кеш-пам’яті являє собою сукупність записів про всі завантажені в неї елементи даних з основної пам’яті. Кожен запис містить:
елементи даних;
адресу цього елемента в основній пам'яті;
додаткову інформацію, що використовується для реалізації алгоритму і включає ознаку модифікації й ознаку дійсності даних.
При кожному звертанні до основної пам’яті за фізичною адресою проглядається вміст кеш-пам’яті з метою визначення, чи не перебувають там потрібні дані.
Пошук потрібних даних у кеш-пам’яті здійснюється за вмістом - за взятим із запиту значенням поля адреси в оперативній пам’яті.
Далі можливі два варіанти дії:
дані виявлені в кеш-пам'яті (тобто має кеш-влучення), і вони зчитуються й передаються джерелу запиту;
потрібні дані відсутні (тобто відбувся кеш-промах), і вони зчитуються з основної пам’яті, передаються джерелу запиту й одночасно копіюються в кеш-пам’ять.
Ефективність кешувания залежить від імовірності влучення в кеш.
У процесі роботи вміст кеш-пам’яті постійно оновлюється. Витиснення даних означає або просто оголошення вільною деякої області кеш- пам’яті (скидання біта дійсності) або на додаток до цього копіювання даних в основну пам’ять, якщо вони модифікувалися.
Наявність у комп’ютері двох копій даних - в основній пам’яті й у кеші - породжує проблему узгодження даних. Існують два підходи до рішення цієї проблеми:
наскрізний запис (write through). При запиті до основної пам'яті (у тому числі при записі) проглядається кеш. Якщо дані по запитуваній адресі відсутні, запис виконується тільки в основну пам’ять. Якщо дані перебувають у кеші, запис робиться у кеш і у пам’ять.
зворотний запис (write back). Виконується перегляд кешу. Якщо даних там немає, то запис робиться в основну пам’ять. Інакше запис робиться тільки в кеш. При цьому встановлюється ознака модифікації. При витисненні даних з кешу ці дані будуть переписані в основну пам’ять.
Алгоритми пошуку й заміщення даних у кеші залежать від того, як основна пам’ять відображається на кеш. Використаються дві схеми відображення:
випадкове відображення;
детерміноване відображення.
При випадковому відображенні елемент оперативної пам’яті може бути розміщений у довільному місці кеш пам’яті. Він записується туди разом зі своєю адресою в оперативній пам’яті. Пошук інформації здійснюється за цією адресою – процедури простого перебору адрес при великих тимчасових витратах. Тому використовується так називаний асоціативний пошук, коли порівняння виконується не послідовно з кожним записом кеша, а паралельно з усіма його записами. Ознакою (тегом), за якою виконується порівняння, є адреса даних в оперативній пам’яті.
У кешах на основі випадкового відображення витиснення старих даних відбувається тільки в тому випадку, коли вся кеш- пам’ять заповнена і немає вільного місця.
При детермінованому способі відображення будь-який елемент основної пам’яті відображається в те ж саме місце кеш- пам’яті. У цьому випадку кеш- пам’ять розділена на рядки, кожен з яких призначений для зберігання одного запису про один елемент даних і має свій номер.
Між номерами рядків кеш- пам’яті й адресами оперативної пам’яті встановлюється відповідність «один до багатьох»: одному номеру рядка відповідає декілька (досить багато) адрес оперативної пам’яті.
Можна використати просте виділення декількох розрядів з адреси оперативної пам’яті, які інтерпретуються як номер рядка кеш-пам’яті. Таке відображення називається прямим. Наприклад, кеш розрахований на 1024 записа (1024 рядка). Тоді будь-яка адреса оперативної пам'яті може бути відображена на адресу кеш- пам’яті простим відділенням 10 двійкових розрядів.
При пошуку даних у кеші використовується швидкий прямий доступ до запису за номером рядка, отриманим з адреси оперативної пам’яті у запиті. Крім того, виконується додаткова перевірка на збіг тегу з відповідною частиною адреси із запиту. При збігу констатується кеш-влучення. Якщо немає, констатується кеш-промах і дані зчитуються з OП і копіюються в кеш.
При змішаному підході довільна адреса оперативної пам’яті відображається не на одну адресу пам’яті (як це характерно для прямого відображення), і не на будь-яку адресу кеш- пам’яті (як це робиться при випадковому відображенні), а на деяку групу адрес. Усі групи пронумеровані. Пошук у кеші здійснюється спочатку за номером групи, отриманому з адреси ОП із запиту, а потім у межах групи шляхом асоціативного перегляду всіх записів групи на предмет збігу старших частин адрес ОП.
У деяких реалізаціях кеш-пам’яті при відсутності даних у кеші вони копіюються туди з основної пам'яті незалежно від того, виконується запит на читання або запис.
Відповідно до описаної логіки роботи кеш-пам’яті, при виникненні запиту спочатку проглядається кеш, а потім, якщо відбувся промах, виконується звертання до основної пам’яті.
Однак, часто реалізується й інша схема роботи кеша: пошук у кеші й основної пам’яті починається одночасно, потім за результатом перегляду кеша, операція в основній пам’яті або продовжується, або переривається.
Завдання на виконання роботи
Написати програму, що моделює процес управління пам’яттю – розподілу пам’яті для процесів, перетворення віртуальної адреси у фізичну, пошук у пам’яті за запитами процесів, вивільнення пам’яті – згідно заданого алгоритму (перелік варіантів представлений нижче).
Вхідні дані – розмір пам’яті, що підлягає розподілу, розміри розділів, сегментів, сторінок тощо за варіантом, розміри потрібної процесам пам’яті тощо задаються довільно і згідно заданого алгоритму.
Продемонструвати роботу моделі та перетворення віртуальної адреси у фізичну згідно алгоритму.
Основні операції з пам’яттю: надання пам’яті потрібного розміру за запитом процеса, перетворення віртуальної адреси звернення до комірки пам’яті у “фізичну” і здійнення запису або читання, вивільнення пам’яті при завершенні процесу. Завдання операцій можна реалізувати за допомогою меню.
Якщо потрібно за алгоритмом, додатково продемонструвати процес вивантаження-завантаження сегментів або сторінок.
Вихідні дані – наглядна інформація про поточний розподіл пам’яті (карта пам’яті), що містить адреси ділянок пам’яті, стан (вільно чи зайнято та ким), після кожної операції з пам’яттю. Окремо показати коректність перетворення віртуальної адреси звернення до комірки пам’яті за запитом у “фізичну” адресу і здійнення запису до комірки та читання з неї.
Мова програмування довільна.
Вміст звіту
Індивідуальне завдання на виконання роботи згідно варіанту.
Код (текст) програми.
Результати роботи програми.
Висновки щодо алгоритму управління пам’яттю за результатами роботи.
