- •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 Функції системи управління пам’яттю
Щоб забезпечити ефективний контроль використання пам’яті, ОС повинна виконувати наступні функції:
– відображення адресного простору процесу на конкретні галузі фізичної пам’яті;
– розподіл пам’яті між конкуруючими процесами;
– контроль доступу до адресних просторів процесів;
– вивантаження процесів (цілком або частково) в зовнішню пам’ять, коли в оперативній пам’яті недостатньо місця;
– облік вільної та використаної пам’яті.
Кожна схема включає в себе певну ідеологію управління, а також алгоритми і структури даних і залежить від архітектурних особливостей використовуваної системи.
1.10.1 Найпростіші схеми управління пам’яттю
Перші ОС застосовували дуже прості методи управління пам’яттю. Спочатку кожен процес користувача повинен був повністю поміститися в основній пам’яті, займати безперервну область пам’яті, а система брала до обслуговування додаткові користувацькі процеси до тих пір, поки всі вони одночасно поміщалися в основній пам’яті. Потім з’явився "простий свопінг" (система як і раніше розміщує кожен процес в основний пам’яті цілком, але іноді на підставі деякого критерію цілком скидає образ деякого процесу з основної пам’яті в зовнішню і замінює його в основної пам’яті чином іншого процесу). Такого роду схеми мають не лише історичну цінність. В даний час вони застосовуються в навчальних і науково–дослідних модельних ОС, а також в ОС для вбудованих (embedded) комп’ютерів.
1.10.2 Схема з фіксованими розділами
Найпростішим способом управління оперативною пам’яттю є її попереднє (зазвичай на етапі генерації або в момент завантаження системи) розбиття на кілька розділів фіксованої величини. Процеси що поступають поміщаються в той чи інший розділ. При цьому відбувається умовне розбиття фізичного адресного простору. Зв’язування логічних і фізичних адрес процесу відбувається на етапі його завантаження в конкретний розділ, іноді – на етапі компіляції.
Кожен розділ може мати свою чергу процесів, а може існувати і глобальна черга для всіх розділів(рис. 1.2.).
Ця схема була реалізована в IBM OS / 360 (MFT), DEC RSX–11 і ряді інших систем.
Підсистема управління пам’яттю оцінює розмір надійшовшого процесу, вибирає підходящий для нього розділ, здійснює завантаження процесу в цей розділ і налаштування адресу.
Рис. 1.2 – Схема з фіксованими розділами
Очевидним недоліком цієї схеми – число одночасно виконуваних процесів обмежено числом розділів.
Іншим істотним недоліком є те, що пропонована схема сильно страждає від внутрішньої фрагментації – втрати частини пам’яті, виділеної процесу, але не використовуваної ним. Фрагментація виникає тому, що процес не повністю займає виділений йому розділ або тому, що деякі розділи занадто малі для виконуваних програм користувача.
1.10.3 Один процес в пам’яті
Окремий випадок схеми з фіксованими розділами – робота менеджера пам’яті однозадачної ОС. У пам’яті розміщується один користувальницький процес. Залишається визначити, де розташовується користувача програма по відношенню до ОС – у верхній частині пам’яті, в нижній або у середній. Причому частина ОС може бути в ROM (наприклад, BIOS, драйвери пристроїв). Головний фактор, що впливає на це рішення, – розташування вектора переривань, який зазвичай локалізована в нижній частині пам’яті, тому ОС також розміщують у нижній. Прикладом такої організації може служити ОС MS–DOS.
Захист адресного простору ОС від користувача програми може бути організовано за допомогою одного граничного регістра, що містить адресу кордону ОС.
