Лекція 20. Керування оперативною пам’яттю
20.1. Логічна структура пам’яті
Комп'ютерна пам'ять - частина обчислювальної машини, фізичний пристрій або середовище для зберігання даних, яка використовується в обчисленнях, протягом певного часу. Пам'ять, як і центральний процесор, є незмінною частиною комп'ютера з 1940-х років. Пам'ять в обчислювальних пристроях має ієрархічну структуру і зазвичай передбачає використання декількох запам'ятовуючих пристроїв, що мають різні характеристики.
Доступні операції з даними:
- Пам'ять тільки для читання (read-only memory, ROM)
- Пам'ять для читання/запису
Пам'ять на програмованих і перепрограмованих ПЗП не має загальноприйнятого місця в цій класифікації. Її відносять або до підвиду пам'яті «тільки для читання», або виділяють в окремий вид.
Також пропонується відносити пам'ять до того чи іншого виду за характерною частотою її перезапису на практиці: до RAM відносити види, в яких інформація часто змінюється в процесі роботи, а до ROM - призначені для зберігання відносно незмінних даних.
Метод доступу:
- Послідовний доступ (Sequential access memory, SAM) - комірки пам'яті вибираються (зчитуються) послідовно, одна за одною, в черговості їх розташування. Варіант такої пам'яті - стековая пам'ять.
- Довільний доступ (Random access memory, RAM) - обчислювальний пристрій може звернутися до довільної комірки пам'яті за будь-якою адресою.
Організація зберігання даних і алгоритми доступу до них:
- Адресована пам'ять - адресація здійснюється за місцем розташування даних.
- Асоціативна пам'ять (content-addressable memory, CAM) - адресація здійснюється за вмістом даних, а не по їх розташуванню (пам'ять перевіряє наявність комірки з заданим вмістом, і якщо така присутня повертає її адресу або інші дані з нею асоційовані.
- Магазинна (стекова) пам'ять - реалізація стеку.
- Матрична пам'ять - комірки пам'яті розташовані так, що доступ до них здійснюється за двома або більше координатами.
- Об'єктна пам'ять - пам'ять, система управління якої орієнтована на зберігання об'єктів. При цьому кожен об'єкт характеризується типом і розміром запису.
- Семантична пам'ять - дані розміщуються і списуються відповідно до деякої структури понятійних ознак.
Призначення:
- Буферна пам'ять - пам'ять, призначена для тимчасового зберігання даних при обміні ними між різними пристроями або програмами.
- Тимчасова (проміжна) пам'ять - пам'ять для зберігання проміжних результатів обробки.
- Кеш-пам'ять - частина архітектури пристрою або програмного забезпечення, що здійснює зберігання часто використовуваних даних для надання їм більш швидкого доступу.
- Коригувальна пам'ять - частина пам'яті ЕОМ, призначена для зберігання адрес несправних комірок основної пам'яті.
- Керуюча пам'ять - пам'ять, яка містить керуючі програми або прошивки. Зазвичай реалізується у вигляді ПЗП.
- Колективна пам'ять або пам'ять колективного доступу - пам'ять, доступна одночасно декільком користувачам, процесам або процесорам.
Організація адресного простору:
- Реальна або фізична пам'ять - пам'ять, спосіб адресації якої відповідає фізичному розташуванню її даних;
- Віртуальна пам'ять - пам'ять, спосіб адресації якої не відображає матеріального становища її даних;
- Оверлейная пам'ять - пам'ять, в якій присутні кілька областей з однаковими адресами, з яких в кожен момент доступна тільки одна.
Віддаленість і доступність для процесора
- Первинна пам'ять - доступна процесору без будь-якого звернення до зовнішніх пристроїв.
o
регістри процесора (процесорна або
реєстрова пам'ять) - регістри, розташовані безпосередньо в АЛП;
o
кеш процесора - кеш, який
використовується процесором для зменшення середнього часу доступу до
комп'ютерної пам'яті. Розділяється на кілька рівнів, що розрізняються швидкістю
і об'ємом (наприклад, L1, L2, L3).
- Вторинна пам'ять - доступна процесору шляхом прямої адресації через шину адреси. Таким чином доступна оперативна пам'ять (пам'ять, призначена для зберігання поточних даних і виконуваних програм) і порти введення-виведення (спеціальні адреси, через звернення до яких реалізовано взаємодію з іншою апаратурою).
- Третинна пам'ять - доступна тільки шляхом нетривіальної послідовності дій. Сюди входять всі види зовнішньої пам'яті - доступної через пристрої введення-виведення. Взаємодія з третинної пам'яттю ведеться за певними правилами (протоколам) і вимагає присутності в пам'яті відповідних програм. Програми, що забезпечують мінімально необхідну взаємодію, що поміщається в ПЗП.
20.2. Керування пам’яттю
Віртуальна пам'ять - метод управління пам'яттю комп'ютера, що дозволяє виконувати програми, що вимагають більше оперативної пам'яті, ніж є в комп'ютері, шляхом автоматичного переміщення частин програми між основною пам'яттю і вторинним сховищем (наприклад, жорстким диском).
У більшості сучасних операційних систем віртуальна пам'ять організується за допомогою сторінкової адресації. Оперативна пам'ять ділиться на сторінки: області пам'яті фіксованої довжини (наприклад, 4096 байт), які є мінімальною одиницею виділеної пам'яті (тобто навіть запит на 1 байт від програми призведе до виділення йому сторінки пам'яті). Виконуваний процесором призначений для користувача потік звертається до пам'яті за допомогою адреси віртуальної пам'яті, яка ділиться на номер сторінки і зміщення всередині сторінки. Процесор перетворить номер віртуальної сторінки на адресу відповідної їй фізичної сторінки за допомогою буфера асоціативної трансляції (TLB). При запиті на виділення пам'яті операційна система може «скинути» на жорсткий диск сторінки, до яких давно не було звернень. Критичні дані (наприклад, код запущених і працюючих програм, код і пам'ять ядра системи) зазвичай знаходяться в оперативній пам'яті.
Сегментна адресація пам’яті - механізм організації віртуальної пам'яті, при якому віртуальний простір ділиться на частини довільного розміру - сегменти. Цей механізм дозволяє, наприклад, розбити дані процесу на логічні блоки. При завантаженні процесу частина сегментів поміщається в ОП (при цьому для кожного з цих сегментів ОС підшукує підходящу ділянку вільної пам'яті), а частина сегментів розміщається в дисковій пам'яті. Сегменти однієї програми можуть займати в ОП несуміжні ділянки. Під час завантаження система створює таблицю сегментів процесу (аналогічну таблиці сторінок), в якій для кожного сегмента вказується початкова фізична адреса сегмента в оперативній пам'яті, розмір сегмента, правила доступу, ознака модифікації, ознака звертання до даного сегмента за останній інтервал часу і деяка інша інформація. Якщо віртуальні адресні простори декількох процесів включають один і той же сегмент, то в таблицях сегментів цих процесів робляться посилання на одну і ту ж ділянку оперативної пам'яті, в який цей сегмент завантажується в єдиному екземплярі. Система із сегментною організацією функціонує аналогічно системі зі сторінкової організацією: час від часу відбуваються переривання, пов'язані з відсутністю потрібних сегментів у пам'яті, при необхідності звільнення пам'яті деякі сегменти вивантажуються, при кожному зверненні до оперативної пам'яті виконується перетворення віртуальної адреси у фізичну.
Недоліком даного методу розподілу пам'яті є фрагментація на рівні сегментів і більш повільне в порівнянні з сторінкової організацією перетворення адреси.
Існує також гібридна сторінково-сегментна організація віртуальної пам'яті.