Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекції ОС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.02 Mб
Скачать

5. Управління пам'яттю

5.1. Основні завдання управління пам'яттю

Основна пам'ять (вона ж ОЗУ) є найважливішим ресурсом, ефективне використання якого вирішальним чином впливає на загальну продуктивність системи.

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

· Виділення пам'яті для процесу користувача при його запуску та звільнення цієї пам'яті при завершенні процесу;

· Забезпечення настройки запускається програми на виділені адреси пам'яті;

· Управління виділеними областями пам'яті за запитами програми користувача (наприклад, звільнення частини пам'яті перед запуском породженого процесу).

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

До основних завдань, які повинна вирішувати підсистема управління пам'яттю багатозадачного ОС, додаються наступні.

· Надання процесам можливостей отримання та звільнення додаткових областей пам'яті в ході роботи;

· Ефективне використання обмеженого обсягу основної пам'яті для задоволення потреб всіх працюючих процесів, у тому числі з використанням дисків як розширення пам'яті;

· Ізоляція пам'яті процесів, що виключає випадкове або навмисне несанкціоноване звернення одного процесу до областей пам'яті, займаним іншим процесом;

· Надання процесам можливості обміну даними через загальні області пам'яті.

5.2. Віртуальні й фізичні адреси

Поняття «адреса пам'яті» може розглядатися з двох точок зору. З одного боку, при написанні будь-якої програми її автор або явно вказує, по яких адресах повинні розміщуватися змінні і команди (так буває при програмуванні на мові асемблера), або привласнення конкретних адрес довіряється системі програмування. Ті адреси пам'яті, які записані в програмі, прийнято називати віртуальними адресами.

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

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

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

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

Є два принципово різних відповіді на це питання.

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

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

5.3. Розподіл пам'яті без використання віртуальних адрес

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]