- •Організація пам'яті комп'ютера. Найпростіші схеми керування пам'яттю.
- •Фізична організація пам'яті комп'ютера
- •Локальність
- •Зв'язування адрес
- •Функції системи керування пам'яттю
- •Самостійне вивчення Найпростіші схеми керування пам'яттю
- •Один процес у пам'яті
- •Оверлейна структура
- •Динамічний розподіл. Свопінг
- •Сторінкова пам'ять
Організація пам'яті комп'ютера. Найпростіші схеми керування пам'яттю.
У цій лекції розглядаються найпростіші способи керування пам'яттю в ОС. Фізична пам'ять комп'ютера має ієрархічну структуру. Програма являє собою набір сегментів у логічному адресному просторі. ОС здійснює зв'язування логічних і фізичних адресних просторів.
Головне завдання комп'ютерної системи - виконувати програми. Програми разом з даними, до яких вони мають доступ, у процесі виконання повинні (принаймні частково) перебувати в оперативній пам'яті. Операційній системі доводиться вирішувати завдання розподілу пам'яті між користувальницькими процесами й компонентами ОС. Ця діяльність називається керуванням пам'яттю. Таким чином, пам'ять (storage, memory) є найважливішим ресурсом, що вимагає ретельного керування. У недавнім минулому пам'ять була найдорожчим ресурсом. Частина ОС, що відповідає за керування пам'яттю, називається менеджером пам'яті.
Фізична організація пам'яті комп'ютера
Запам'ятовувальні пристрої комп'ютера розділяють, як мінімум, на два рівні: основну (головну, оперативну, фізичну) і вторинну (зовнішню) пам'ять. Основна пам'ять являє собою впорядкований масив однобайтових комірок, кожна з яких має свою унікальну адресу (номер). Процесор витягає команду з основної пам'яті, декодує і виконує її. Для виконання команди можуть знадобитися звертання ще до декількох комірок основної пам'яті. Звичайно основна пам'ять виготовляється із застосуванням напівпровідникових технологій і губить свій уміст при відключенні живлення.
Вторинну пам'ять (це головним чином диски) також можна розглядати як одномірний лінійний адресний простір, що складається з послідовності байтів. На відміну від оперативної пам'яті, вона є енергонезалежною, має істотно більшу ємність і використовується як розширення основної пам'яті.
Цю схему можна доповнити ще декількома проміжними рівнями, як показано на рис. 8.1. Різновиду пам'яті можуть бути об'єднані в ієрархію по убуванню часу доступу, зростанню ціни й збільшенню ємності.
Рис.
8.1. Ієрархія пам'яті
Багаторівневу схему використають у такий спосіб. Інформація, що перебуває в пам'яті верхнього рівня, звичайно зберігається також на рівнях з більшими номерами. Якщо процесор не виявляє потрібну інформацію на i-му рівні, він починає шукати її на наступних рівнях. Коли потрібна інформація знайдена, вона переноситься в більш швидкі рівні.
Локальність
Виявляється, при такому способі організації в міру зниження швидкості доступу до рівня пам'яті знижується також і частота звертань до нього. Ключову роль тут грає властивість реальних програм, протягом обмеженого відрізка часу здатних працювати з невеликим набором адрес пам'яті. Це емпірично спостережувана властивість відомо як принцип локальності або локалізації обігів.
Властивість локальності (сусідні в просторі й часі об'єкти характеризуються схожими властивостями) властива не тільки функціонуванню ОС, але й природі взагалі. У випадку ОС властивість локальності з'ясовна, якщо врахувати, як пишуться програми і як зберігаються дані, тобто звичайно протягом якогось відрізка часу обмежений фрагмент коду працює з обмеженим набором даних. Цю частину коду й даних вдається розмістити в пам'яті зі швидким доступом. У результаті реальний час доступу до пам'яті визначається часом доступу до верхніх рівнів, що й обумовлює ефективність використання ієрархічної схеми. Треба сказати, що описувана організація обчислювальної системи багато в чому імітує діяльність людського мозку при переробці інформації. Дійсно, вирішуючи конкретну проблему, людина працює з невеликим обсягом інформації, зберігаючи не стосовні до справи відомості у своїй пам'яті або в зовнішній пам'яті (наприклад, у книгах).
Кеш процесора звичайно є частиною обладнання, тому менеджер пам'яті ОС займається розподілом інформації головним чином в основній і зовнішній пам'яті комп'ютера. У деяких схемах потоки між оперативною й зовнішньою пам'яттю регулюються програмістом, однак це пов'язане з витратами часу програміста, так що подібну діяльність намагаються покласти на ОС.
Адреси в основній пам'яті, що характеризують реальне розташування даних у фізичній пам'яті, називаються фізичними адресами. Набір фізичних адрес, з яким працює програма, називають фізичним адресним простором.
Логічна пам'ять
Апаратна організація пам'яті у вигляді лінійного набору комірок не відповідає поданням програміста про те, як організоване зберігання програм і даних. Більшість програм являє собою набір модулів, створених незалежно один від одного. Іноді всі модулі, що входять до складу процесу, розташовуються в пам'яті один за іншим, утворюючи лінійний простір адрес. Однак частіше модулі містяться в різних областях пам'яті й використаються по-різному.
Схема керування пам'яттю, що підтримує цей погляд користувача на те, як зберігаються програми й дані, називається сегментацією. Сегмент - область пам'яті певного призначення, усередині якої підтримується лінійна адресація. Сегменти містять процедури, масиви, стек або скалярні величини, але звичайно не містять інформацію змішаного типу.
Очевидно, спочатку сегменти пам'яті з'явилися у зв'язку з необхідністю усуспільнення процесами фрагментів програмного коду (текстовий редактор, тригонометричні бібліотеки й т.д.), без чого кожен процес повинен був зберігати у своєму адресному просторі дублюючу інформацію. Ці окремі ділянки пам'яті, що зберігають інформацію, яку система відображає на вимогу декількох процесів, одержали назву сегментів. Пам'ять, таким чином, перестала бути лінійної й перетворилася у двовимірну. Адреса складається із двох компонентів: номер сегмента, зсув усередині сегмента. Далі виявилося зручним розміщати в різних сегментах різні компоненти процесу (код програми, дані, стек і т.д.). Попутно з'ясувалося, що можна контролювати характер роботи з конкретним сегментом, приписавши йому атрибути, наприклад права доступу або типи операцій, які дозволяється робити з даними, що зберігаються в сегменті.
Рис. 8.2. Розташування сегментів процесів у пам'яті комп'ютера
Деякі сегменти, що описують адресний простір процесу, показані на рис. 8.2. Більш докладна інформація про типи сегментів є в лекції 10. Більшість сучасних ОС підтримують сегментну організацію пам'яті.
Адреси, до яких звертається процес, таким чином, відрізняються від адрес, що реально існують в оперативній пам'яті. У кожному конкретному випадку використовувані програмою адреси можуть бути представлені різними способами. Наприклад, адреси у вихідних текстах звичайно символічні. Компілятор зв'язує ці символічні адреси з переміщуваними адресами (такими, як n байт від початку модуля). Подібна адреса, згенерована програмою, звичайно називають логічною (у системах з віртуальною пам'яттю він часто називається віртуальним) адресою. Сукупність всіх логічних адрес називається логічним (віртуальним) адресним простором.
