- •Розділ 3.Управління памяттю компютера
- •Методи розподілу пам'яті без використання дискового простору
- •Розподіл пам'яті розділами змінної величини тобто динамічними розділами.
- •Переміщувані розділи
- •Розподіл пам'яті переміщуваними розділами Методи розподілу пам'яті з використанням дискового простору Поняття віртуальної пам'яті
- •Сторінковий розподіл
- •Сегментний розподіл
- •Сторінково-сегментний розподіл
- •Алгоритми заміщення сторінок
- •1 Алгоритми заміщення сторінок
- •2. Алгоритм nru (Not Recently Used - сторінка, що не використалася останнім часом)
- •3. Алгоритм fifo (перша прибула - перша вивантажена)
- •5. Алгоритм "годинник"
- •6. Алгоритм lru (Least Recently Used - що використалася найрідше)
- •8. Алгоритм wsClock
- •Розподіл пам'яті
Сегментний розподіл
Віртуальний адресний простір процесу поділяється на сегменти
При завантаженні процесу частина сегментів міститься в оперативну пам'ять (при цьому для кожного з цих сегментів операційна система підшукує придатну ділянку вільної пам'яті), а частина сегментів розміщається в дисковій пам'яті. Сегменти однієї програми можуть займати в оперативній пам'яті несуміжні ділянки. Під час завантаження система створює таблицю сегментів процесу (аналогічну таблиці сторінок), у якій для кожного сегмента вказується початкова фізична адреса сегмента в оперативній пам'яті, розмір сегмента, правила доступу, ознака модифікації, ознака звертання до даного сегмента за останній інтервал часу і деяка інша інформація. Якщо віртуальні адресні простори декількох процесів включають той самий сегмент, то в таблицях сегментів цих процесів створюються посилання на одну й ту саму ділянку оперативної пам'яті, у який даний сегмент завантажується в єдиному екземплярі.
Система із сегментною організацією функціонує аналогічно системі зі сторінковою організацією: час від часу відбуваються переривання, зв'язані з відсутністю потрібних сегментів у пам'яті, при необхідності звільнення пам'яті деякі сегменти вивантажуються, при кожнім звертанні до оперативної пам'яті виконується перетворення віртуальної адреси у фізичний. Крім того, при звертанні до пам'яті перевіряється, чи дозволений доступ необхідного типу до даного сегмента.
Сторінково-сегментний розподіл
Даний метод являє собою комбінацію сторінкового і сегментного розподілу пам'яті. Віртуальний простір процесу поділяється на сегменти, а кожен сегмент у свою чергу поділяється на віртуальні сторінки, що нумеруються в межах сегмента. Оперативна пам'ять поділяється на фізичні сторінки. Завантаження процесу виконується операційною системою посторінково, при цьому частина сторінок розміщається в оперативній пам'яті, а частина на диску. Для кожного сегмента створюється своя таблиця сторінок, структура якої цілком збігається зі структурою таблиці сторінок, використовуваної при сторінковому розподілі. Для кожного процесу створюється таблиця сегментів, у якій вказуються адреси таблиць сторінок для всіх сегментів даного процесу.
Свопинг
Різновидом віртуальної пам'яті є свопинг.
Для завантаження задачі в оперативну пам'ять, обсяг якої обмежений, був запропонований метод називаний свопингом. Відповідно до цього методу деякі процеси (звичайно знаходяться в стані чекання) тимчасово вивантажуються на диск. Планувальник операційної системи не виключає їх зі свого розгляду, і при настанні умов активізації деякого процесу, що знаходиться в області свопинга на диску, цей процес переміщається в оперативну пам'ять. Якщо вільного місця в оперативній пам'яті не вистачає, то вивантажується інший процес.
При свопинге, на відміну від розглянутих раніше методів реалізації віртуальної пам'яті, процес переміщається між пам'яттю і диском цілком, тобто протягом деякого часу процес може цілком отсутствовать в оперативній пам'яті. Існують різні алгоритми вибору процесів на завантаження і вивантаження, а також різні способи виділення оперативної і дискової пам'яті процесу, що завантажується.
Своп можна визначити як файл підкачування, у який з оперативної пам'яті записується невикористовувана чи з низьким пріоритетом інформація. Розмір свопа є величина динамічна, що змінюється відповідно до поточного станом системи – активованими процесами, запущеними програмами, відкритими файлами і т.п. (якщо тільки не заданий фіксований розмір). Необхідний саме Вам розмір свопа визначається досвідченим шляхом, тому що залежить від типу задач, виконуваних на конкретній машині.
Контрольні запитання:
Охарактеризуйте функції ОС по керуванню пам'яттю.
Охарактеризуйте розподіл пам'яті фіксованими розділами
Охарактеризуйте розподіл пам'яті розділами змінної величини тобто динамічними розділами.
Охарактеризуйте розподіл пам'яті переміщувані розділи
Дайте визначення віртуальної пам'яті
Охарактеризуйте сторінковий розподіл
Охарактеризуйте сегментний розподіл
Охарактеризуйте сторінково-сегментний розподіл
Охарактеризуйте розподіл пам'яті Свопинг
Додаток
Схема перетворення віртуальної адреси у фізичний для сегментно-страничной організації пам'яті
Розподіл пам'яті сегментами
Механізм перетворення віртуальної адреси у фізичний при сторінковій організації пам'яті
Сторінковий розподіл пам'яті
Самостійна робота.
Висновок.
Віртуальна пам'ять
Основна ідея полягає в розбитті програми на частини, і в пам'ять ці частини завантажуються по черзі.
Програма при цьому спілкується з віртуальною пам'яттю, а не з фізичною.
Диспетчер пам'яті перетворить віртуальні адреси у фізичні
Сторінкова організація пам'яті
Сторінки - це частини на які розбивається простір віртуальних адрес.
Сторінкові блоки - одиниці фізичної пам'яті.
Сторінки завжди мають фіксований розмір. Передача даних між ОЗУ і диском завжди відбувається в сторінках.
Х - позначає сторінку, що не відображається, у фізичній пам'яті.
Сторінкове переривання - відбувається якщо процес звернувся до сторінки яка не завантажена в ОЗУ (тобто Х). Процесор передається іншому процесу, і паралельно сторінка завантажується впамять.
Таблиця сторінок - використовується для зберігання відповідності адрес віртуальної сторінки і сторінкового блоку.
Таблиця може бути розміщена:
у апаратних регістрах (перевага: вища швидкодія, недолік - вартість)
у ОЗУ
Типовий запис в таблиці сторінок
Присутність/відсутність - завантажена або незавантажена в пам'ять
Захист - види доступу, наприклад, читання/запис.
Зміна - чи змінилася сторінка, якщо та те при вивантаженні записується на диск, якщо немає просто знищується.
Звернення - чи було звернення до сторінки, якщо ні, то це кращий кандидат на звільнення пам'яті.
Інформація про адресу сторінки коли вона зберігається на диску, в таблиці не розміщується.
Для прискорення доступу до сторінок в диспетчері пам'яті створюють буфер швидкого перетворення адреси, в якій зберігається інформація про найбільш часто використовуваних сторінок.
Сторінкова організація пам'яті використовується, і в UNIX, і в Windows.
Зберігання сторінкової пам'яті на диску
Статична область свопінгу
Після запуску процесу він займає певну пам'ять, на диску відразу йому виділяється такий же простір. Тому файл підкачки повинен бути не менше пам'яті. А у разі браку пам'яті навіть більше. Як тільки процес завершиться, він звільнить пам'ять і місце на диску.
На диску завжди є дублікат сторінки, яка знаходиться в пам'яті.
Цей механізм найбільш простій.
Статичний і динамічний методи організації свопінгу.
Динамічна область свопінгу
Передбачається не виділяти сторінкам місце на диску, а виділяти тільки при вивантаженні сторінки, і як тільки сторінка повернеться в пам'ять звільняти місце на диску.
Цей механізм складніше, оскільки процеси не прив'язані до якогось простору на диску, і потрібно зберігати інформацію (карту диска) про місцеположення на диску кожної сторінки.
Сегментація пам'яті
Основні поняття сегментації
Розглянемо приклад, коли програма використовує один адресний простір.
програма використовує один адресний простір
Недоліки такої системи:
Одна ділянка може повністю заповниться, але при цьому залишаться вільні ділянки. Можна звичайно переміщати ділянки, але це дуже складно.
Ці проблеми можна вирішити, якщо дати кожній ділянці незалежний адресний простір, званий сегментом.
Розглянемо те ж приклад з використанням сегментів:
Сегментована пам'ять
Кожен сегмент може рости або зменшуватися незалежно від інших.
Сегмент - це логічний об'єкт.
В цьому випадку адресу має дві частини:
номер сегменту
адреса в сегменті
Переваги сегментації:
Сегменти не заважають один одному.
Початкова адреса процедури завжди починається з (n,0). Що спрощує програмування.
Полегшує сумісне використання процедур і даних.
Роздільний захист кожного сегменту (читання, запис)
Реалізація сегментації
Якщо сторінки мають фіксований розмір, то сегменти немає.
Оскільки пам'яті часто не вистачає, стали використовувати сторінкову організацію сегментів. При якій в пам'яті може знаходиться тільки частина сегменту.
У сегментів також, як і у сторінок, існує проблема фрагментації.
Особливості реалізації в UNIX
У LUNIX системі на 32-розрядній машині кожен процес одержує 3Гбайта віртуального простору для себе, і 1Гбайт для сторінкових таблиць і інших даних ядра.
На комп'ютерах Pentium, використовується дворівневі таблиці сторінок і розмір сторінок фіксований 4Кбайта
На комп'ютерах Alpha, використовується трирівневі таблиці сторінок і розмір сторінок фіксований 8Кбайт
