Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

В даній роботі створюється програма для імітації роботи віртуальної пам'яті. Створена програма дає змогу імітувати роботу віртуальної памяті. Реалізовані алгоритми FIFO, LNU, NFU. Розроблений 2 страница



Описувана схема дозволяє завантажити процес, навіть якщо немає безперервної області кадрів, достатньою для розміщення процесу цілком. Але одного базового регістра для здійснення трансляції адреси в даній схемі недостатньо. Система відображення логічних адрес у фізичні зводиться до системи відображення логічних сторінок у фізичні і являє собою таблицю сторінок, яка зберігається в оперативній пам’яті. Іноді кажуть, що таблиця сторінок – це кусково–лінійна функція відображення, задана в табличному вигляді.

Інтерпретація логічного адреси показана на рис. 1.5. Якщо виконуваний процес звертається до логічного адресою v = (p, d), механізм відображення шукає номер сторінки p в таблиці сторінок і визначає, що ця сторінка знаходиться в сторінковому кадрі p’, формуючи реальну адресу з p’ і d.

 

 

Рисунок 1.5 – Зв’язок логічної і фізичної адрес при сторінкової організації пам’яті

 

Таблиця сторінок (page table) адресується за допомогою спеціального регістра процесора і дозволяє визначити номер кадру за логічною адресою. Крім цієї основної задачі, за допомогою атрибутів, записаних в рядку таблиці сторінок, можна організувати контроль доступу до конкретної сторінки і її захист.

Відзначимо ще раз відмінність точок зору користувача і системи на активну пам’ять. З точки зору користувача, його пам’ять – єдиний безперервний простір, що містить лише одну програму. Реальне відображення приховано від користувача і контролюється ОС. Зауважимо, що процесу користувача чужа пам’ять недоступна. Він не має можливості адресувати пам’ять за межами своєї таблиці сторінок, яка включає тільки його власні сторінки.

Для управління фізичної пам’яттю ОС підтримує структуру таблиці кадрів. Вона має один запис на кожен фізичний кадр, що показує його стан.

Відображення адрес має бути здійснено коректно навіть у складних випадках і зазвичай реалізується апаратно. Для посилання на таблицю процесів використовується спеціальний регістр. При перемиканні процесів необхідно знайти таблицю сторінок нового процесу, покажчик на яку входить в контекст процесу.

1.10 Дескрипторні таблиці

У системах на базі процесорів x86 допускається створення майже будь–якого числа сегментів – необхідна тільки наявність відповідного дескриптора. Всі дескриптори мають довжину 8 байт і зберігаються в спеціальній області оперативної пам’яті, званої дескрипторною таблицею. Порядок розміщення дескрипторів довільний, а максимальне число дескрипторів – 8192. Таким чином максимальний розмір дескрипторної таблиці – 64 Кбайт.



Існує три типи дескрипторних таблиць, вибір яких залежить від призначення сегмента.

 

1.10.1 Дескриптор

Дескриптор сегмента (в архітектурі x86) – службова структура в пам’яті, яка визначає сегмент. Довжина дескриптора дорівнює 8 байт.

Структура сегментного дескриптора виглядає наступним чином(рис. 1.6.):

 

 

Рис. 1.6 – Структура сегментного дескриптора

 

– база (жовті поля, 32 біта) – початок сегмента в лінійній пам’яті;

– ліміт (червоні поля, 20 біт) – (розмір сегмента в байтах) –1 (База + Ліміт = лінійна адреса останнього байта);

– права доступу (сині поля, 12 біт) – прапори, що визначають наявність сегмента в пам’яті, рівень захисту, тип, розрядність + один користувальницький прапор.

Байт прав доступу:

– біт P визначає доступність сегмента (0 – сегмента немає, 1 – є). При зверненні до сегмента з скинутим бітом P відбувається виключення #NP, обробник якого може завантажити/створити сегмент;

– номер привілеїв DPL містить 2–бітний номер (0–3), що визначає, до якого рівня захисту відноситься цей сегмент.

– тип сегмента (біти 8–12 на малюнку). Старший біт (S) визначає сегмент як системний (S = 0) або користувацький (S = 1).

Значення інших біт для системних і користувальницьких сегментів описано в таблицях:

 

 

Таблиця 1.1 – Типи системних сегментів

Біти AR

Опис

       
         

Заборонене значення

         

Вільний 10–бітний TSS

         

LDT

         

Зайнятий 16–бітний TSS

         

16–бітний шлюз виклику

         

Шлюз задачі

         

16–бітний шлюз переривання

         

16–бітний шлюз пастки

         

Заборонене значення

         

Вільний 32–бітний TSS

A

       

Зарезервовано

B

       

Зайнятий 32–бітний TSS

C

       

32–бітний шлюз виклику

D

       

Зарезервовано

E

       

32–бітний шлюз переривання

F

       

32–бітний шлюз пастки

 

Таблиця 1.2 – Типи користувацьких сегментів

Біти AR

Опис

     

 

       

Сегмент даних тільки для читання

       

Сегмент даних для читання/запису

       

Сегмент даних тільки для читання, росте в низ

       

Сегмент даниз для читання/запису, росте в низ

       

Сегмент коду тільки для виконання

А

     

Сегмент коду для виконання/читання

С

     

Підлеглий сегмент коду тільки для виконання

Е

     

Підлеглий сегмент коду для виконання/читання

 

Молодший біт байта AR користувальницьких сегментів (A, англ. Accessed, біт 8 на малюнку) можна використовувати для збору статистики про сегменти. При першому ж зверненні до сегменту (читання, запис, виконання) він встановлюється процесором в 1.

1. Прапорець гранулярності G визначає ліміт сегмента: при G = 0 ліміт дорівнює значенню відповідного поля в дескрипторі, а при G = 1 ліміт дорівнює полю дескриптора, помноженому на (212 = 4096). Таким чином при G = 0 максимальний розмір сегмента 1 МБайт, а при G = 1 4 Гбайт.

2. Прапор розрядності DB (біт 22 на малюнку) актуальний для користувальницьких сегментів коду і стека. Визначає розрядність в 16 біт при нульовому і 32 біт при одиничному значенні.

3. Зарезервований прапорець (сіре поле) повинен завжди дорівнювати нулю.

4. Користувацький прапор AVL (A, біт 20 на малюнку) відданий операційній системі. Його стан ніяк не впливає на роботу з сегментом.

1.10.2 Глобальна дескрипторна таблиця

Глобальна дескрипторна таблиця є спільною для всіх процесів. Її розмір і розташування у фізичній пам’яті визначаються регістром GDTR. Розмір таблиці не може перевищувати 8192 дескрипторів, оскільки один дескриптор займає 8 байт, а ліміт в регістрі GDTR – двох байтному і зберігає розмір таблиці мінус один (максимальне значення ліміту – 65535), а 8192 x 8 = 65536.

Дескриптори LDT і сегментів завдань (TSS) можуть перебувати тільки тут.

Особливістю GDT є те, що у неї заборонений доступ до першого (з нульовим зміщенням відносно початку таблиці) дескриптору. Звернення до нього викликає виключення #GP, що запобігає звернення до пам’яті з використанням не завантаженого сегментного регістра.

1.10.3 Дескрипторна таблиця переривань

Загальносистемною є також дескрипторна таблиця переривань. Вона містить у собі дескриптори спеціальних об’єктів – шлюзів. Оскільки шлюзи визначають точки входу програм обробки переривань і особливих випадків, вони служать заміною таблиці векторів переривань процесора i8086. Початкова адреса таблиці знаходиться в системному реєстрі IDTR мікропроцесора.

 

1.10.4 Локальна дескрипторна таблиця

Для кожного завдання на додаток до таблиці GDT можна побудувати свою, локальну дескрипторну таблицю. Вона визначає сегменти, доступні тільки для цієї, конкретної задачі. Ці таблиці не є обов’язковими, створюються в міру потреби, і зберігаються в сегментах програми, на яких є посилання в GDT. Локальні таблиці використовують 16–ти бітний селектор, що спрощує маніпуляцію з сегментами. Локальні дескрипторні таблиці можуть брати участь в свопінгу пам’яті, як і звичайні сегменти.

1.11 Стратегії управління сторінковою пам’яттю

Програмне забезпечення підсистеми управління пам’яттю пов’язане з реалізацією наступних стратегій:

Стратегія вибірки (fetch policy) – в який момент слід переписати сторінку з вторинної пам’яті в первинну. Існує два основних варіанти вибірки – за запитом та з попередженням. Алгоритм вибірки за запитом вступає в дію в той момент, коли процес звертається до відсутньої сторінки, вміст якої знаходиться на диску. Його реалізація полягає у завантаженні сторінки з диска у вільну фізичну сторінку і корекції відповідного запису таблиці сторінок.

Алгоритм вибірки з попередженням здійснює випереджаюче читання, тобто крім сторінки, що викликала виняткову ситуацію, в пам’ять також завантажується декілька сторінок, що оточують її (зазвичай сусідні сторінки розташовуються у зовнішній пам’яті послідовно і можуть бути лічені за одне звернення до диска). Такий алгоритм покликаний зменшити накладні витрати, пов’язані з великою кількістю виняткових ситуацій, що виникають при роботі зі значними обсягами даних або коду; крім того, оптимізується робота з диском.

Стратегія розміщення (placement policy) – в яку ділянку первинної пам’яті помістити надходить сторінку. У системах з сторінкової організацією все просто – в будь–який вільний сторінковий кадр. У випадку систем з сегментною організацією необхідна стратегія, аналогічна стратегії з динамічним розподілом.

Стратегія заміщення (replacement policy) – яку сторінку потрібно виштовхнути в зовнішню пам’ять, щоб звільнити місце в оперативній пам’яті. Розумна стратегія заміщення, реалізована у відповідному алгоритмі заміщення сторінок, дозволяє зберігати в пам’яті найнеобхіднішу інформацію і тим самим знизити частоту сторінкових порушень. Заміщення має відбуватися з урахуванням виділеного кожному процесу кількості кадрів. Крім того, потрібно вирішити, чи повинна заміщувана сторінка належати процесу, який ініціював заміщення, або вона повинна бути обрана серед всіх кадрів основної пам’яті.

1.12 Алгоритми заміщення сторінок

Отже, найбільш відповідальною дією менеджера пам’яті є виділення кадру оперативної пам’яті для розміщення в ній віртуальної сторінки, що знаходиться в зовнішній пам’яті. Нагадаємо, що ми розглядаємо ситуацію, коли розмір віртуальної пам’яті для кожного процесу може значно перевищувати розмір основної пам’яті. Це означає, що при виділенні сторінки основної пам’яті з великою ймовірністю не вдасться знайти вільний сторінковий кадр. У цьому випадку операційна система відповідно до закладених в неї критеріями повинна:

– знайти деяку зайняту сторінку основної пам’яті;

– перемістити в разі потреби її вміст у зовнішню пам’ять;

– переписати в цей сторінковий кадр вміст потрібної віртуальної сторінки із зовнішньої пам’яті;

– належним чином модифікувати необхідний елемент відповідної таблиці сторінок;

– продовжити виконання процесу, якому ця віртуальна сторінка знадобилася.

Зауважимо, що при заміщенні доводиться двічі передавати сторінку між основною та вторинної пам’яттю. Процес заміщення може бути оптимізовано за рахунок використання біта модифікації (один з атрибутів сторінки в таблиці сторінок). Біт модифікації встановлюється комп’ютером, якщо хоча б один байт був записаний на сторінку. При виборі кандидата на заміщення перевіряється біт модифікації. Якщо біт не встановлений, немає необхідності переписувати дану сторінку на диск, її копія на диску вже є. Подібний метод також застосовується до read–only–сторінкам, вони ніколи не модифікуються. Ця схема зменшує час обробки page fault.

Існує велика кількість різноманітних алгоритмів заміщення сторінок. Всі вони діляться на локальні і глобальні. Локальні алгоритми, на відміну від глобальних, розподіляють фіксоване або динамічно настроюється число сторінок для кожного процесу. Коли процес витратить всі призначені йому сторінки, система буде видаляти з фізичної пам’яті одну з його сторінок, а не зі сторінок інших процесів. Глобальний же алгоритм заміщення в разі виникнення виняткової ситуації задовольниться звільненням будь–якої фізичної сторінки, незалежно від того, якому процесу вона належала.

Глобальні алгоритми мають ряд недоліків. По–перше, вони роблять одні процеси чутливими до поведінки інших процесів. Наприклад, якщо один процес у системі одночасно використовує велику кількість сторінок пам’яті, то всі інші додатки будуть в результаті відчувати сильне уповільнення через нестачу кадрів пам’яті для своєї роботи. По–друге, некоректно працюючий додаток може підірвати роботу всієї системи (якщо, звичайно, в системі не передбачено обмеження на розмір пам’яті, що виділяється процесу), намагаючись захопити більше пам’яті. Тому в багатозадачній системі іноді доводиться використовувати більш складні локальні алгоритми. Застосування локальних алгоритмів вимагає зберігання в операційній системі списку фізичних кадрів, виділених кожному процесу. Цей список сторінок іноді називають саморозміщуваною множиною процесу.

Ефективність алгоритму звичайно оцінюється на конкретній послідовності посилань до пам’яті, для якої підраховується число виникаючих page faults. Ця послідовність називається рядком звернень (reference string). Ми можемо генерувати рядок звернень штучним чином за допомогою датчика випадкових чисел або використати трасування конкретної системи. Останній метод дає занадто багато посилань, для зменшення числа яких можна зробити дві речі:

– для конкретного розміру сторінок можна запам’ятовувати тільки їх номери, а не адреси, на які йде посилання;

– кілька поспіль посилань на одну сторінку можна фіксувати один раз.

Як вже говорилося, більшість процесорів мають найпростіші апаратні засоби, що дозволяють збирати деяку статистику звернень до пам’яті. Ці засоби зазвичай включають два спеціальних прапора на кожен елемент таблиці сторінок. Прапор посилання (reference біт) автоматично встановлюється, коли відбувається будь–яке звернення до цієї сторінки, а вже розглянутий вище прапор зміни (modify біт) встановлюється, якщо проводиться запис в цю сторінку. Операційна система періодично перевіряє установку таких прапорів, для того щоб виділити активно використовуються сторінки, після чого значення цих прапорів скидаються.

1.12.1 Алгоритм FIFO. Виштовхування першої сторінки що прийшла

Найпростіший алгоритм. Кожній сторінці присвоюється тимчасова мітка. Реалізується це просто створенням черги сторінок, в кінець якої сторінки потрапляють, коли завантажуються в фізичну пам’ять, а з початку беруться, коли потрібно звільнити пам’ять. Для заміщення вибирається найстаріша сторінка. На жаль, ця стратегія з достатньою ймовірністю буде приводити до заміщення активно використовуваних сторінок, наприклад сторінок коду текстового процесора при редагуванні файлу. Зауважимо, що при заміщенні активних сторінок все працює коректно, але page fault відбувається негайно.

 

1.12.2 Аномалія Біледі (Belady)

На перший погляд здається очевидним, що чим більше в пам’яті сторінкових кадрів, тим рідше будуть мати місце page faults. Дивно, але це не завжди так. Як встановив Біледі з колегами, визначені послідовності звернень до сторінок в дійсності призводять до збільшення числа сторінкових порушень при збільшенні кадрів, виділених процесу. Це явище носить назву “аномалії “Біледі” або “аномалії FIFO” (рис. 1.7).

Система з трьома кадрами (9 faults) виявляється більш продуктивною, ніж з чотирма кадрами (10 faults), для рядка звернень до пам’яті 012301401234 при виборі стратегії FIFO.

 

 

Рисунок 1.7 – Аномалія Біледі: (a) – FIFO з трьома сторінковими кадрами;

(b) – FIFO з чотирма сторінковими кадрами

 

Аномалію Біледі слід вважати скоріше курйозом, ніж фактором, що вимагає серйозного ставлення, який ілюструє складність ОС, де інтуїтивний підхід не завжди прийнятний.

1.12.3 Оптимальний алгоритм (OPT)

Одним з наслідків відкриття аномалії Біледі став пошук оптимального алгоритму, який при заданому рядку звернень мав би мінімальну частоту page faults серед всіх інших алгоритмів. Такий алгоритм був знайдений. Він простий: заміщай сторінку, яка не буде використовуватися протягом самого тривалого періоду часу.

Кожна сторінка повинна бути позначена числом інструкцій, які будуть виконані, перш ніж на цю сторінку буде зроблено перше посилання. Виштовхуватися повинна сторінка, для якої це число найбільше.

Цей алгоритм легко описати, але реалізувати неможливо. ОС не знає, до якої сторінки буде наступне звернення. (Раніше такі проблеми виникали при плануванні процесів – алгоритм SJF).

Зате ми можемо зробити висновок, що для того, щоб алгоритм заміщення був максимально близький до ідеального алгоритму, система повинна якомога точніше передбачати звернення процесів до пам’яті. Даний алгоритм застосовується для оцінки якості реалізованих алгоритмів.

1.12.4 Виштовхування сторінки що довше за все не використовувалася. Алгоритм LRU

Одним з наближень до алгоритму OPT є алгоритм, що виходить з евристичного правила, що недавнє минуле – гарний орієнтир для прогнозування найближчого майбутнього.

Ключова відмінність між FIFO і оптимальним алгоритмом полягає в тому, що один дивиться назад, а інший вперед. Якщо використовувати минуле для апроксимації майбутнього, має сенс заміщати сторінку, яка не використовувалася протягом самого довгого часу. Такий підхід називається least recently used алгоритм (LRU). Робота алгоритму проілюстрована на рис. 1.8.

 

 

Рисунок 1.8 – Приклад роботи алгоритму LRU

 

LRU – хороший, але важко реалізований алгоритм. Необхідно мати зв’язаний список всіх сторінок в пам’яті, на початку якого будуть зберігається недавно використані сторінки. Причому цей список повинен оновлюватися при кожному зверненні до пам’яті. Багато часу потрібно і на пошук сторінок в такому списку.

Як оптимальний алгоритм, так і LRU не страждають від аномалії Біледі. Існує клас алгоритмів, для яких при одному і тому ж рядку звернень безліч сторінок в пам’яті для n кадрів завжди є підмножиною сторінок для n + 1 кадру. Ці алгоритми не виявляють аномалії Біледі і називаються стековими (stack) алгоритмами.

 

1.12.5 Виштовхування рідко використовуваної сторінки алгоритм NFU

Оскільки більшість сучасних процесорів не пропонують відповідної апаратної підтримки для реалізації алгоритму LRU, хотілося б мати алгоритм, досить близький до LRU, але не вимагає спеціальної підтримки.

Програмна реалізація алгоритму, близького до LRU, – алгоритм NFU (Not Frequently Used).

Для нього потрібні програмні лічильники, по одному на кожну сторінку, які спочатку дорівнюють нулю. При кожному перериванні за часом (а не після кожної інструкції) операційна система сканує всі сторінки в пам’яті і в кожної сторінки з встановленим прапором звернення збільшує на одиницю значення лічильника, а прапор звернення скидає.

Таким чином, кандидатом на звільнення виявляється сторінка з найменшим значенням лічильника, як сторінка, до якої найрідше зверталися. Головний недолік алгоритму NFU полягає в тому, що він нічого не забуває. Наприклад, сторінка, до якої дуже часто зверталися протягом деякого часу, а потім звертатися перестали, все одно не буде видалена з пам’яті, тому що її лічильник містить велику величину. Наприклад, в багатопрохідних компіляторах сторінки, які активно використовувалися під час першого проходу, можуть надовго зберегти великі значення лічильника, заважаючи завантаженні корисних надалі сторінок.

На щастя, можлива невелика модифікація алгоритму, яка дозволяє йому “забувати”. Достатньо, щоб при кожному перериванні за часом вміст лічильника зрушувалося вправо на 1 біт, а вже потім вироблялося б його збільшення для сторінок з встановленим прапором звернення.

Іншим, вже більш стійким недоліком алгоритму є тривалість процесу сканування таблиць сторінок.

 

1.13 Огляд способів і засобів вирішення поставлених задач

1.13.1 SoftPerfect RAM Disk

SoftPerfect RAM Disk – вельми корисна і зручна програма для створення віртуального диска в оперативній пам’яті комп’ютера. Швидкість роботи оперативної пам’яті завжди набагато більше швидкості звичайного жорсткого диска, тому для отримання найкращих показників швидкості зручно зберігати тимчасові файли саме в оперативній пам’яті, а не на вінчестері. Якщо в системі присутній хоча б 1 Гб оперативної пам’яті, то можна сміливо її частина виділити під віртуальний накопичувач, тому в основному при роботі ПК вся пам’ять не використовується. Кількість створених віртуальних дисків може бути обмежене лише обсягом вільної оперативної пам’яті.

Використання SoftPerfect RAM Disk вигідно, тому і дає кілька переваг порівняно зі звичайною системою:

– істотне збільшення швидкості роботи комп’ютера;

– зниження фрагментації файлової системи через відсутність тимчасових файлів на жорсткому диску;

– збільшення терміну служби вінчестера при зменшенні циклів запису і читання;

– зменшення засмічених жорсткого диска тимчасовими файлами;

– зменшення шумових ефектів внаслідок меншої роботи HDD.

1.14 Постановка задачі на розробку

Основною задачею під час розробки програмного забезпечення під час виконання дипломної роботи є – створення продукту який надасть користувачу змогу емулювати роботу віртуальної пам’яті використовуючи в роботі певні алгоритми заміщення сторінок.

Зазначимо основні функціональні вимоги до створюваного продукту:

– встановлення розміру та кількості сторінок;

– можливість додавання та завантаження сегментів;

– можливість звернення до до сторінок сегментів;

– емуляція роботи декількох алгоритмів;

– графічне відображення роботи алгоритмів.

Також потрібно зазначити, що створювана програма повинна мати не великі апаратні та програмні вимоги, для того, щоб її могла використовувати велика кількість користувачів.

Для цього зазначимо мінімальні апаратні вимоги:

– процесор Intel Pentium 2 або еквівалентний йому;

– не менше 5 МБ вільного місця на жорсткому диску для самої програми;

– ОЗУ не менше 256 Мб;

– відеокарта з об’ємом пам’яті не менше 32 М;

– пристрої виведення (монітор);

– пристрої введення (клавіатура, миша);

Зазначимо мінімальні програмні вимоги:

– операційна система Windows XP або більш нові версії Windows;

–.NET Framework 4.0.

1.15 Висновки

В даному розділі були проаналізовані теоретичні метеріали та принципи роботи роботи віртуальної пам’яті.

Спочатку були визначені призначення та область застосування об’єкта проекту. Далі проведений огляд способів та засобів вирішення поставлених задач.

Наступним кроком був аналіз існуючих методів та програмних засобів які працюють з віртуальною пам’яттю, таких мало.

Після всіх вище описаних кроків було сформовано завдання на виконання дипломної роботи.


2 АНАЛІЗ ВИМОГ ДО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ СТВОРЕННЯ ЗАСОБІВ ОПИСУ ПРОГРАМИ ДЛЯ ПОБУДОВИ ЇЇ АВТОМАТНОЇ МОДЕЛІ

2.1 Виділення первинних вимог

Аналіз вимог полягає в визначенні потреб та умов які висуваються щодо нового, чи зміненого продукту, враховуючи можливо конфліктні вимоги різних замовників, таких як користувачі.

Аналіз вимог є критичним для успішної розробки проекту. Вимоги мають бути задокументованими, вимірними, протестованими, пов’язаними з бізнес–потребами, і описаними з рівнем деталізації достатнім для конструювання системи. Вимоги можуть бути архітектурними, структурними, поведінковими, функціональними, та не функціональними

Основні вимоги для створення системи:

- підтримка сучасних версій операційних систем сімейства Windows;

- установка значення розміру фізичної пам’яті при старті системи;

- визначення розміру сторінки пам’яті при запуску системи;

- можливість додавання сегментів пам’яті із довільним розміром (в тому числі розміром, що перевищує розмір фізичної пам’яті);

- вибір кольору сегменту для наочного представлення сегменту у віртуальній пам’яті;

- введення імені сегменту;

- візуальне представлення моделі віртуальної пам’яті;

- візуалізація завантаження сегменту у фізичну пам’ять;

- інтерактивна демонстрація емуляції звертання до сторінок у віртуальній пам’яті;

- реалізація як вибіркових звертань до сторінки сегменту із типом читання та запису, так і реалізація випадкових звертань;

- реалізація алгоритмів заміщення, додавання, витіснення.

2.2 Виділення детальних вимог через UML–діаграми

2.2.1 Діаграма прецедентів

Діаграма прецедентів — в UML, діаграма, на якій зображено відношення між акторами та прецедентами в системі. Також, перекладається як діаграма варіантів використання.

Діаграма прецедентів є графом, що складається з множини акторів, прецедентів (варіантів використання) обмежених границею системи (прямокутник), асоціацій між акторами та прецедентами, відношень серед прецедентів, та відношень узагальнення між акторами. Діаграми прецедентів відображають елементи моделі варіантів використання.

Суть даної діаграми полягає в наступному: проектована система представляється у вигляді безлічі сутностей чи акторів, що взаємодіють із системою за допомогою так званих варіантів використання. Варіант використання використовують для описання послуг, які система надає актору. Іншими словами, кожен варіант використання визначає деякий набір дій, який виконує система при діалозі з актором. При цьому нічого не говориться про те, яким чином буде реалізована взаємодія акторів із системою.

Діаграма прецедентів системи представлена на рис. 2.1.

 

Рисунок 2.1 – Діаграма прецедентів системи

 

В даній системі є один актор, що є безпосереднім користувачем додатку. За допомогою взаємодії з графічним інтерфейсом, він виконує всі дії, що зображені на діаграмі.

Початковим прецедентом системи є завантаження системи. При цьому, даний прецедент розширюють два інші — встановлення розміру фізичної пам’яті та встановлення розміру сторінки пам’яті. Дані значення використовуються в подальшій роботі системи для обрахунків, що стосуються моделі віртуальної пам’яті.

Наступним прецедентом системи є додавання системи. Оскільки при запуску додатку, список сегментів буде порожній, до даний прецедент логічно слідує з попереднього. При додаванні сегменту вказується такі параметри як ім’я, розмір та колір (для графічної візуалізації), що відповідають трьом включаючим прецедентам на діаграмі.

Прецедент завантаження сегменту виконує графічну візуалізацію завантаження сегменту в фізичну пам’ять. Оскільки розмір фізичної пам’яті може бути менший за розмір сегментів, тут потрібний механізм віртуалізації пам’яті.

Основним прецедентом системи є емуляція звертання до сторінки. Він виконує основну функціональну роль системи. При звертанні до сторінки пам’яті, вона може бути відсутня у фізичній пам’яті і її потрібно завантажити із зовнішньої. В таких випадках може виникати ряд проблемних ситуацій, зв’язаних в першу чергу відсутністю вільного місця в фізичній пам’яті. Тому повинна бути реалізація алгоритмів додавання, витіснення і заміщення, що зображено відповідними прецедентами на діаграмі. Основним алгоритмічним суб’єктом в даному випадку є алгоритм заміщення. В різних архітектурах використовують різні реалізації таких алгоритмів.


Дата добавления: 2015-09-30; просмотров: 71 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.035 сек.)







<== предыдущая лекция | следующая лекция ==>