- •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.7 Сегментна організація пам’яті в реальному режимі роботи мікро процесорів x86
Для мікропроцесорів x86 в реальному режимі роботи зсув є одночасно ефективною адресою. Ефективні адреси формуються в Intel–сумісних мікропроцесорах за допомогою регістрів даних, “Системні регістри центрального процесора”. Ефективна адреса формується таким чином .: до восьми або шістнадцяти розрядного зміщення в програмі додається 16–ти розрядний вміст базового регістра і 16–ти розрядний вміст індексного регістра. Розрядність зміщення повинна відповідати розрядності регістру, куди пересилаються дані. Зазвичай в базовому регістрі міститься початкова адреса блоку видобутих даних, а в індексному регістрі – довжина витягуваного запису, помножена на порядковий номер (від 0 до N–1) запису.
Система команд в мікропроцесорах x86 влаштована так, що для утворення ефективної адреси необхідно обов’язкову присутність тільки одного його компонента. Таким чином будь–який компонент: база, індекс, зсув, або навіть обидва з них можуть бути опущені.
1.8 Базові адреси та формування лінійних адрес
Базові адреси містяться в сегментних регістрах мікропроцесорів i8086 / 88 і в регістрах селекторів сегментів в мікропроцесорах x86. Ці регістри шістнадцяти розрядні. Однак утворена в результаті складання базової та ефективної адреси, лінійна адреса є 20–ти розрядною.
Таким чином максимальна лінійна адреса має розмір 1,062 Мбайт (тобто на 64 Кбайт більше, ніж адресний простір в 1 Мбайт). Тому в мікропроцесорах i8086/88 відбувається “загортання” адреси навколо кордону сегмента. Тобто фізична адреса Буде мати значення 0FFEFh. У мікропроцесорі i80286, в резульат помилки розробників, такого загортання немає. У мікропроцесорах i80386 і вище це “загортання” можна включити, а можна і вимкнути, Для включення “загортання” необхідне апаратне блокування лінії A20 (A20 = 0) за допомогою порту контролера клавіатури. Його станом можна управляти програмно.
1.9 Сегментація пам’яті в захищеному режимі
У захищеному режимі роботи мікропроцесорів x86 забезпечується кращий захист операційної системи від несанкціонованого доступу програм користувача. Це відбувається шляхом ускладнення формування лінійної адреси в мікропроцесорах i80386 і вище. Наприклад, сегмент не може бути використаний ніякою програмою, якщо він не “представлений” їй відповідним чином. Програма вже не може звертатися за будь–якою адресою, який вона може сформувати. При “поданні” сегмента програмі вона повинна запросити не тільки базову адресу сегмента, а й рівень привілеїв, локалізацію сегмента, його довжину і роздільну здатність, права доступу до сегмента (читання, запис і виконання) і деякі інші параметри.
При цьому у системного програміста є більше можливостей з управління сегментацією пам’яті. Так, уже в мікропроцесорі i80386 зняті обмеження на розмір сегмента. Він може мати значення від 1 байта до 4 Гбайт. У ньому також зняті обмеження на розташування кордону сегмента. Кордон сегмента більше не прив’язано до кордону параграфа, та й саме поняття “параграф” до захищеного режиму роботи мікропроцесора не застосовується. Програміст в описі сегмента сам визначає рівні привілеїв і тип використовуваного сегмента.
Рівні привілеїв призначаються програмами з метою не допустити руйнування системних областей некоректними діями прикладних програм. Деякі команди виконуються тільки на нульовому (самому верхньому) рівні привілеїв. Виконання інших команд залежить від того, які рівні привілеїв встановлені в регістрів прапорів і при описі сегмента. У будь–якому випадку діють наступні правила виклику сегментів і між сегментних переходів:
1. Можливий перехід від сегмента до сегмента, що мають один і той же рівень привілеїв.
2. Можливе звернення до сегменту даних, що має той же або більш низький рівень привілеїв, ніж сегмент коду.
3. Якщо необхідно перейти до сегменту коду, що має більш високий рівень привілеїв, необхідно використовувати вентиль.
