logo
AK

3.4.2. Динамічний розподіл пам'яті

В процесі роботи ЕОМ здійснюється безперервний обмін інформацією між ядром і периферією. ОП має статичну організацію в тому випадку, якщо якась програма при черговому циклі своєї активності потрапляє в ту ж саму ділянку ОП. Якщо ця програма потрапляє в будь-яку іншу вільну в цей час ділянку пам'яті, то, вважається, що ОП має динамічну організацію. Динамічний розподіл найпростіше може бути отриманий, якщо використовувати просту відносну адресацію. Змінюючи базову адресу, ми можемо досить просто організувати переміщення будь-якої програми усередині поля всій ОП. Але цей спосіб здобуття динамічного розподілу пам'яті має такі недоліки: необхідність розміщення будь-якої призначеної для користувача програми у вигляді одного цілого масиву; необхідність завантаження при новій фазі активності всієї програми в ОП в той час, як в кожній фазі активності реалізується невелика її ділянка); досить часто виникає дефрагментація пам'яті - поява в пам'яті вільних ділянок, сумарний об'єм яких більше об'єму ділянки, виділеної для програми.

Динамічний розподіл пам'яті ефективніше, якщо пам'ять має сторінкову організацію. Сторінкова організація передбачає, що вся пам'ять розбита на велике число невеликих ділянок однакової довжини. При цьому адресу пам'яті представимо розділеною на 2 частини: старші  розрядів відповідають номеру сторінки, молодші  - номеру рядка в даній сторінці. 2 - число сторінок, 2 - число рядків, Nc = 2 - загальне число комірок.

Кожна програма, що реалізовується в ЕОМ, розміщується в ОП. Заздалегідь не можна сказати, з якої сторінки вона розташовуватиметься в ОП. Будь-яку програму записують, починаючи з нульової сторінки, використовуючи математичні адреси. Розподіляючи ОП, відповідна програма ОС для кожного завдання виділяє якісь вільні ділянки, тобто задає фізичні адреси. При цьому для вирішення цього завдання складається таблиця відповідності фізичних і математичних адрес. Для зменшення розмірів таблиці молодші розряди збігаються, відрізняються лише - розряди, звідси з'являються поняття фізичних і математичних адрес.

Таблиця відповідності називається сторінковою таблицею. Сторінкова таблиця може бути організована як звичайна адресна пам'ять з прямим доступом або як асоціативна. У першому випадку математична адреса є адресою входу в сторінкову таблицю, за цією адресою зчитується фізична адреса. У другому випадку - математична адреса є ознакою асоційованого пошуку. Асоціативна пам'ять відповідає на питання, чи є фізична адреса, відповідна даному математичному.

У великих ЕОМ пам'ять ділиться на три частини, виникає поняття сегменту. Сегментна організація пам'яті використовується з метою складання досить складних програм шляхом об'єднання програм в модулі. Схема перетворення адрес сторінок при адресній пам'яті для сторінкових таблиць першого вигляду представлена на рис.3.10.

Рис. 3.10 - Схема перетворення адрес сторінок при адресній пам'яті для сторінкових таблиць першого вигляду.

де:

РгНЗ - регістр номера запису.

СТБ - сторінкова таблиця.

РК - регістр команд (адресне поле).

АР - адресний регістр.

МА- математична адреса.

СТБ - другого вигляду.

Викликаючи до виконання програму, в РгНЗ заноситься номер. У прикладі активне перше завдання, тобто відбувається звернення до першої сторінкової таблиці. Для зберігання всіх сторінкових таблиць або будується спеціальна пам'ять, або виділяється ділянка загального поля ОП. В процесі реалізації цієї програми кожна адреса, яка заноситься в РК має бути перетворена: використовуючи старші  розрядів МА поточної команди, із СТБ прочитуємо відповідну йому фізичну адресу і поміщаємо в старші розряди АР, молодші  розрядів переписуємо без зміни, відбувається звернення до ОП. Щоб знайти комірку ОП, треба звернеться до ОП 2 рази: для знаходження інформації в СТБ і на сторінці.

Для зменшення часу пошуку інформації краще СТБ зберігати в асоціативній пам'яті невеликого розміру (близько 8 комірок). Сторінкові таблиці зберігаються у виділеній ділянці загальної ОП. Схема має асоціативну пам'ять (8-16 комірок), представлену на рис.3.11.)

Рис. 3.11 – Схема перетворення адрес асоціативної пам'яті.

Кожна комірка має 4 поля МА - i, ФА - f(i,), zi - зайнятості комірки, ti - активності сторінки. Протягом певного інтервалу часу активними є декілька сторінок, інформацію про них краще зберігати в асоціативній пам'яті. Дана схема працює так: при кожному зверненні до ОП робиться спроба отримати інформацію про ФА сторінки шляхом аналізу в асоціативному ЗУ. Якщо в якомусь елементі асоціативної пам'яті є потрібний ФА сторінки, він прочитується в АР, якщо немає - тоді доводиться звертатися в ОП, де розташована інформація всіх СТБ, при зчитуванні інформації з ОП вона дублюється в асоціативній пам'яті, щоб знайти вільну комірку аналізується zi при записі інформації у комірку zi = 1, якщо все zi = 1, то аналізують ti. При першому зчитуванні інформації з АЗУ ti встановлюються в 1. Коли усі zi, ti = 1, то інформація скидається в нуль.