Смекни!
smekni.com

Планування ресурсу Оперативна память (стр. 2 из 8)

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

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


Простір імен програми

Віртуальний адресний простір

Фізична пам’ять комп’ютера

Рис. 17. Пам'ять і відображення

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

Іншою часткою випадку цієї загальної схеми трансляції адресного простору є тотожність ВАП вихідному простору імен. Тут уже відображення виконується самою ОС, що під час виконання використовує таблицю символьних імен. Така схема відображення використовується надзвичайно рідко, тому що відображення імен на адреси необхідно виконувати для кожного входження імені (кожного нового імені) і особливо багато часу витрачається на кваліфікацію імен.

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

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

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

- обсяг ВАП програми Vv менше обсягу фізичної пам'яті Vp;

- Vv = Vp;

-Vv > Vp.

Перша ситуація, при якій Vv < Vp, нині практично не зустрічається, але проте це реальне співвідношення. Скажемо, не дуже давно 16-розрядні міні-ЕОМ мали систему команд, у яких користувачі-програмісти могли адресувати до 216°(64) До адрес (звичайно в якості адресованій одиниці виступала комірка пам'яті розміром з байт). А фізично старші моделі цих міні-ЕОМ могли мати обсяг ОП в трохи мегабайт. Звертання до пам'яті настільки великого обсягу здійснювалося за допомогою спеціальних регістрів, вміст яких складався з адреси операнда (чи команди), що витягається і/чи обумовленим з поля чи операнда (чи з покажчика команди). Відповідні значення в ці спеціальні регістри, що виступають як базовий зсув у пам'яті, заносила ОС. Для однієї задачі в регістр заносилося одне значення, а для другої третьої, четвертої і т.д. задачі, розташовуваної одночасно з першої, але в іншій області пам'яті, заносилося, відповідно, інше значення. Уся фізична пам'ять, таким чином, розбивалася на розділи обсягом по 64 Кбайт, і на кожен такий розділ здійснювалося відображення свого ВАП.

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

Нарешті, у наш час ми вже досягли того, що ситуація Vv > Vp зустрічається навіть у ПК, тобто в найпоширеніших і недорогих комп'ютерах. Тепер це найпоширеніша ситуація, і для неї мається кілька методів розподілу пам'яті, що відрізняються як складністю, так і ефективністю.

1.4. Свопінг

Свопінг – алгоритм реалізації віртуальної пам'яті. Йогоможна розбити на три частини: керування простором на пристроївивантаження, вивантаженняпроцесівзосновноїпам'яті і підкачуванняпроцесів в основнупам'ять. Як пристрійвивантаженнявикористовуютьрозділ на пристрої типу твердого (swap-partition) чидисковий файл (swap-file) на такому пристрої.

Свопінг є різновидом ВП.

На рис.18 показаний графік залежності коефіцієнта завантаження процесора в залежності від числа одночасно виконуваних процесів і частки часу, проведеного цими процесами в стані чекання в/в.

Рис. 18. Залежність завантаження процесора від числа задач і інтенсивності в/в.

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

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

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

Якщо є необхідність створити програму, логічний (і віртуальний) адресний простір якої має бути більший, ніж вільна область пам’яті, або навіть більший, ніж весь можливий об’єм ОП, то використовують розподіл з перекриттям, так звані оверлейні структури. Цей метод розподілу передбачає, що вся програма може бути розбита на частини – сегменти. Кожна оверлейна програма має одну головну частину (main) і декілька сегментів (segment), при цьому в пам’яті машини одночасно можуть знаходитись тільки її головна частина і один або декілька не перекриваючих сегментів.