- •1 Аналітична частина
- •1.1 Віртуальна пам’ять в Windows
- •1.2 Керування віртуальною пам’яттю
- •1.3 Структура віртуального адресного простору
- •1.4 Віртуальний адресний простір 32–бітних систем
- •1.5 Сторінковий файл
- •1.6 Апаратна підтримка
- •1.9 Сегментація пам’яті в захищеному режимі
- •1.7 Сегментна організація пам’яті в реальному режимі роботи мікро процесорів x86
- •1.8 Базові адреси та формування лінійних адрес
- •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.10.6 Схема зі змінними розділами
В принципі, система свопінгу може базуватися на фіксованих розділах. Більш ефективною, однак, видається схема динамічного розподілу або схема зі змінними розділами, яка може використовуватися і в тих випадках, коли всі процеси цілком містяться в пам’яті, тобто за відсутності свопінгу. У цьому випадку спочатку вся пам’ять вільна і не розділена заздалегідь на розділи. Знову надходить задачі виділяється строго необхідна кількість пам’яті, не більше. Після вивантаження процесу пам’ять тимчасово звільняється. Після закінчення деякого часу пам’ять – змінне число розділів різного розміру (рис. 1.4). Суміжні вільні ділянки можуть бути об’єднані.
Рис. 1.4 – Динаміка розподілу пам’яті між процесами (сірим кольором показана невживана пам’ять)
В який розділ поміщати процес? Найбільш поширені три стратегії.
– Стратегія першого підходящого (First fit). Процес поміщається в перший відповідний за розміром розділ.
– Стратегія найбільш підходящого (Best fit). Процес поміщається в той розділ, де після його завантаження залишиться менше всього вільного місця.
– Стратегія найменш придатного (Worst fit). При приміщенні в найбільший розділ в ньому залишається достатньо місця для можливого розміщення ще одного процесу.
Моделювання показало, що частина корисно використовуваної пам’яті в перших двох випадках більше, при цьому перший спосіб трохи швидше. Зауважимо, що перераховані стратегії широко застосовуються і іншими компонентами ОС, наприклад для розміщення файлів на диску.
Типовий цикл роботи менеджера пам’яті полягає в аналізі запиту на виділення вільної ділянки (розділу), виборі його серед наявних відповідно до однієї із стратегій (першого підходящого, найбільш відповідного і найменш придатного), завантаженні процесу у вибраний розділ і наступних змінах таблиць вільних і зайнятих областей. Аналогічна коригування необхідна і після завершення процесу. Зв’язування адрес може здійснюватися на етапах завантаження і виконання.
Цей метод більш гнучкий в порівнянні з методом фіксованих розділів, проте йому притаманна зовнішня фрагментація – наявність великої кількості ділянок невживаної пам’яті, не виділеної ні одному процесу. Вибір стратегії розміщення процесу між першим підходящим і найбільш підходящим слабо впливає на величину фрагментації. Цікаво, що метод найбільш підходящого може виявитися найгіршим, оскільки він залишає безліч дрібних незайнятих блоків.
Статистичний аналіз показує, що припадають в середньому 1/3 пам’яті! Це відоме правило 50% (дві сусідніх вільних ділянки на відміну від двох сусідніх процесів можуть бути об’єднані).
Одне з рішень проблеми зовнішньої фрагментації – організувати стиск, тобто переміщення всіх зайнятих (вільних) ділянок у бік зростання (спадання) адрес, так, щоб вся вільна пам’ять утворила безперервну область. Цей метод іноді називають схемою з переміщуваними розділами. В ідеалі фрагментація після стиснення має бути відсутня. Стиснення, однак, є дорогою процедурою, алгоритм вибору оптимальної стратегії стиснення дуже важкий і, як правило, стиснення здійснюється в комбінації з вивантаженням і завантаженням за іншими адресами.
