ЗНАЕТЕ ЛИ ВЫ?

Динамічне завантаження й динамічна лінковка



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

З динамічним завантаженням викликуваних підпрограм тісно зв'язаний інший механізм – динамічна лінковка: лінковка під час виконання програми. Зрозуміло, це не означає, що під час виконання область коду програми розширюється, і до неї додається код динамічно лінкуємої підпрограми. Використається інша схема. У коді програми розміщається заглушка для виконання (execution stub) –невеликий фрагмент коду, що виконує системний виклик модуля ОС, що розміщає в пам'яті код динамічно лінкуємої бібліотечної підпрограми. При першому виклику заглушка заміняє себе на код за адресою динамічно розміщеної в пам'яті підпрограми. Очевидно, що динамічна линковка найбільш доцільно для бібліотек. Файл бінарного коду динамічно лінкуемї бібліотеки має в системі UNIX розширення імені .so (абревіатура терміна shared object), у системі Windows – розширення імені .dll(абревіатура від dynamically linked library).

Оверлейна структура програми

У ранніх ОС, особливо – для персональних комп'ютерів, для користувальницького процесу були вимушено уведені дуже тверді обмеження по пам'яті, - наприклад, в MS DOS – не більше 640 кілобайт. При такому дефіциті основної пам'яті, якщо програма виявляється настільки велика, що повністю не міститься в пам’ять максимально дозволеного обсягу, необхідно вживати спеціальні міри при розробці програми, щоб розбити її на непересічні групи модулів, такі, що в кожній групі модулі логічно взаємозалежні й повинні бути присутнім у пам'яті одночасно, модулі ж різних груп не обов'язково повинні разом завантажуватися в память. Під час виконання такої програми повинен використатися спеціальний системний механізм, названий оверлейна структура (overlay,дослівно – накладення), яка забезпечує почергове завантаження в ту саму область пам'яті то одну, те іншу групу виконуваних модулів. Проста програма, що виконує ці дії, називається драйвер оверлея (overlay driver).Інтегроване середовище розробки Турбо Паскаль забезпечували спеціальні опції компілятора, які дозволяли явно вказувати модулі, що входять у кожен оверлей.

Типовий для ранніх комп'ютерів й ОС приклад програми з оверлейной структурою – двухпросмотровий асемблер. На першому перегляді він перетворить вихідний ассемблерный код у проміжне подання, яке програма другого перегляду асемблера одержує на вході. Повністю весь асемблер (обидва перегляди) в пам’ять не містився, і довелося застосувати оверлейную структуру. Даний приклад ілюструється на рис. 15.3.

Оверлейна структура двухпросмотрового асемблера.

 


Лекція 12. Сторінкова організація пам’яті

План

· Відкачка і підкачування

· Суміжний розподіл пам'яті

· Загальна задача розподілу пам'яті і стратегії її рішення

· Фрагментація

· Сторінкова організація

· Захист пам'яті

· Структура таблиці сторінок

· Інвертовані таблиці сторінок

· Поділювані сторінки

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

Відкачка й підкачування

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

Відкачка й підкачування (swapping) –це дії операційної системи по відкачці (запису)образа неактивного процесу на диск або підкачуванню (зчитуванню)активного процесу в основну пам'ять. Необхідність виконання подібних дій викликана недостачею основної пам'яті.

Файл відкачки (backing store) -область дискової пам'яті, використовувана операційною системою для зберігання образів відкачаних процесів. Файл відкачки організується максимально ефективно: забезпечується прямий доступ до всіх образів процесів у пам'яті (наприклад, через таблицю по номеру процесу).

Популярний різновид стратегії відкачки й підкачування – roll out / roll in: відкачка й підкачування на базі пріоритетів; більш пріоритетні процеси виконуються, менш пріоритетні – відкачуются на диск.

Найбільші часові витрати на відкачку - це витрати на передачу даних: повний образ процесу може займати велику область пам'яті. Загальний час відкачки пропорційний розміру даних, що відкачуються.

У розповсюджених ОС - UNIX, Linux, Windows й ін. - реалізовані різні стратегії відкачки й підкачування.

Рис. 16.1. Схема відкачки й підкачування.

Суміжний розподіл пам'яті

Найбільш проста й розповсюджена стратегія розподілу пам'яті – суміжний розподіл пам'яті– розподіл пам'яті для користувальницьких процесів в одній суміжній області пам'яті. Основна пам'ять розбивається на дві суміжних частини (partitions), які "ростуть" назустріч один одному: резидентна частина ОС і вектор переривань – по менших адресах, користувальницькі процеси – по адресах. Для користувальницьких процесів пам'ять розподіляється в тій самій суміжній ділянці пам'яті. Для кожного процесу регістр переміщення вказує на початок виділеної йому області пам'яті, регістр границі містить довжину діапазону логічних адрес. Кожна логічна адреса повиннна бути менше значення регістра границі. Фізична адреса обчислюється апаратно як сума логічної адреси й значення регістра переміщення. Схема адресації з апаратною підтримкою регістрів переміщення й границі зображена на рис. 16.2.

Рис. 16.2. Адресація з апаратною підтримкою регістрів переміщення й границі.





Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.219.31.204 (0.009 с.)