- •1 Аналітична частина
- •1.1 Віртуальна пам’ять в Windows
- •1.2 Керування віртуальною пам’яттю
- •1.3 Структура віртуального адресного простору
- •1.4 Віртуальний адресний простір 32–бітних систем
- •1.5 Сторінковий файл
- •1.6 Апаратна підтримка
- •1.7 Сегментна організація пам’яті в реальному режимі роботи мікро процесорів x86
- •1.8 Базові адреси та формування лінійних адрес
- •1.9 Сегментація пам’яті в захищеному режимі
- •1.10 Функції системи управління пам’яттю
- •1.10.1 Найпростіші схеми управління пам’яттю
- •1.10.2 Схема з фіксованими розділами
- •1.10.3 Один процес в пам’яті
- •1.10.4 Оверлейна структура
- •1.10.5 Стопінг
- •1.10.6 Схема зі змінними розділами
- •1.10.7 Сторінкова пам’ять
- •1.11 Дескрипторні таблиці
- •1.11.1 Дескриптор
- •1.11.2 Глобальна дескрипторна таблиця
- •1.11.3 Дескрипторна таблиця переривань
- •1.11.4 Локальна дескрипторна таблиця
- •1.12 Стратегії управління сторінковою пам’яттю
- •1.13 Алгоритми заміщення сторінок
- •1.13.1 Алгоритм fifo. Виштовхування першої сторінки що прийшла
- •1.13.2 Аномалія Біледі (Belady)
- •1.13.3 Оптимальний алгоритм (opt)
- •1.13.4 Виштовхування сторінки що довше за все не використовувалася. Алгоритм lru
- •1.13.5 Виштовхування рідко використовуваної сторінки. Алгоритм nfu
- •1.14 Огляд способів і засобів вирішення поставлених задач
- •1.14.1 SoftPerfect ram Disk
- •1.15 Постановка задачі на розробку
- •1.16 Висновки
- •2 Аналіз вимог до програмного забезпечення створення засобів опису програми для побудови її автоматної моделі
- •2.1 Виділення первинних вимог
- •2.2 Виділення детальних вимог через uml–діаграми
- •2.2.1 Діаграма прецедентів
- •2.2.2 Діаграми діяльності
- •2.2.3 Діаграма станів
- •2.3 Висновки
- •3 Проектування програмного забезпечення створення засобів опису програми для побудови її автоматної моделі
- •3.1 Архітектурне проектування
- •3.1.1 Об’єктно орієнтована парадигма
- •3.1.2 Структурна ієрархія системи
- •3.1.3 Структурна схема системи
- •3.2 Детальне проектування
- •3.2.1 Діаграма класів
- •3.2.2 Діаграма послідовності
- •3.3 Висновки
- •4 Конструювання та тестування програмного забезпечення
- •4.1 Розробка інтерфейсу користувача
- •4.2 Кодування системи
- •4.2.1 Вибір мови програмування
- •4.2.2Опис розробки програмних компонентів
- •4.2.2.1 Модуль ядра
- •4.2.2.2 Модуль віджетів
- •4.2.2.3 Модуль алгоритмів заміщення
- •4.2.2.4 Модуль графічного інтерфейсу
- •4.3. Детальне тестування програмного засобу
- •4.4. Висновки
- •Висновки
- •Список використаних джерел
- •Текст програми
1.4 Віртуальний адресний простір 32–бітних систем
Віртуальний адресний простір кожного процесу розбивається на розділи, розмір і призначення яких залежать від версії Windows. Розділ для виявлення нульових вказівників резервується, щоб полегшити розробникам програмного забезпечення виявляти нульові вказівники. Спроба читання або запису за цими адресами викликає порушення доступу. Якщо в програмі відсутня належна обробка помилок, то при невдалій спробі виділення пам’яті за вказівником він може мати нульове значення. Тоді спроба звертання до даних за таким вказівником (тобто за адресою $00000000) буде явно помилковою. Оскільки цей розділ адресного простору заблокований, виникне виняткова ситуація некоректного доступу до пам’яті. Ця особливість допомагає програмістам виявляти помилки у програмах.
Розділ для коду й даних є закритою частиною адресного простору процесу.
Основний обсяг даних, що належать процесу, зберігається саме тут. Сюди завантажуються всі виконавчі модулі, враховуючи й динамічні бібліотеки. На цей же розділ відображуються проектовані файли, доступні даному процесу.
Структура віртуального адресного простору в 32–бітних системах зображена на рис. 1.1.
Рис. 1.1 – Структура віртуального адресного простору в 32–бітних системах
1.5 Сторінковий файл
У старих операційних системах фізичною пам’яттю вважалася лише оперативна пам’ять (RAM). Сучасні ОС імітують пам’ять за рахунок дискового простору. При цьому на диску створюється сторінковий файл (paging file), який містить доступну для всіх процесів віртуальну пам’ять. З погляду прикладної програми, сторінковий файл просто збільшує обсяг доступної пам’яті. Під час роботи операційна система скидає вміст частини оперативної пам’яті в сторінковий файл і при необхідності довантажує його порціями назад у пам’ять. Якщо такого файлу немає, система працюватиме, але застосункам буде доступний менший обсяг пам’яті. Сторінковий файл збільшує обсяг доступної пам’яті і дозволяє програмам працювати з більшими обсягами даних. Фізична пам’ять ділиться на сторінки, кожна з яких може мати окремі атрибути захисту.
1.6 Апаратна підтримка
Апаратна підтримка здійснюється за допомогою компонента Memory Management Unit(Блок управління пам’яттю, MMU) – це компонент апаратного забезпечення комп’ютера, що відповідає за управління доступом до пам’яті, запитуваною центральним процесором. Його функції полягають у трансляції адрес віртуальної пам’яті в адреси фізичної пам’яті (тобто управління віртуальною пам’яттю), захисту пам’яті, управлінні кеш–пам’яттю, арбітражем шини і, в більш простих комп’ютерних архітектурах (особливо 8–бітних), перемиканням блоків пам’яті. Іноді також згадується як блок управління сторінкової пам’яттю.
Принцип роботи сучасних MMU заснований на поділі віртуального адресного простору (одновимірного масиву адрес, використовуваних центральним процесором) на ділянки однакового, як правило кілька кілобайт, хоча, можливо, й істотно більшого, розміру рівного ступеня 2, звані сторінками. Молодші n біт адреси (зміщення всередині сторінки) залишаються незмінними. Старші біти адреси являють собою номер (віртуальної) сторінки. MMU зазвичай перетворює номера віртуальних сторінок в номери фізичних сторінок використовуючи буфер асоціативної трансляції (англ. Translation Lookaside Buffer, TLB). Якщо перетворення за допомогою TLB неможливо, включається більш повільний механізм перетворення, заснований на специфічному апаратному забезпеченні або на програмних системних структурах. Дані в цих структурах як правило називаються елементами таблиці сторінок (англ. Page table entries, PTE), а самі структури – таблицями сторінок (англ. Page table, PT). Конкатенація номера фізичної сторінки зі зміщенням всередині сторінки дає фізичну адресу.
Елементи PTE або TLB можуть також містити додаткову інформацію: біт ознаки записи в сторінку (англ. Dirty bit), час останнього доступу до сторінки (англ. Accessed bit, для реалізації алгоритму заміщення сторінок найбільш давно використаний (англ. Least recently used, LRU) , які процеси (користувальницькі (англ. user mode) або системні (англ. supervisor mode)) можуть читати або записувати дані в сторінку, чи необхідно кешувати сторінку.
