Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Типи адрес

Спільне використання

Захист

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

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

Для ідентифікації змінних і команд використовуються символьні імена (мітки), віртуальні адреси та фізичні адреси.

Символьні імена присвоює користувач при написанні програми на алгоритмічній мові або асемблері.

Віртуальні адреси виробляє транслятор, що переводить програму на машинну мову. Так як під час трансляції, в загальному випадку, невідомо в яке місце оперативної пам'яті буде завантажена програма, то транслятор присвоює змінним і командам віртуальні (умовні) адреси, звичайно вважаючи за замовчуванням, що програма буде розміщена, починаючи з нульового адреси. Є ще поняття відносного адреси, що представляє собою окремий випадок віртуального адреси (іноді - логічного адреси), коли адреса визначається положенням щодо деякої відомої точки (зазвичай - початку програми).

Сукупність віртуальних адрес процесу називається віртуальним адресним простором. Кожен процес має власне віртуальне адресний простір. Максимальний розмір віртуального адресного простору обмежується розрядністю адреси, властивій даній архітектурі комп'ютера, і, як правило, не збігається з обсягом фізичної пам'яті, наявними в комп'ютері. Наприклад, при використанні 32-розрядних віртуальних адрес цей діапазон задається межами 0000000016 і FFFFFFFF16.

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

Рис.10.1. Програма використовує одне адресний простір (плоске)

 

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

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

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

 

Рис. 10.1.б. Сегментована пам'ять

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

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

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

Чи слід призначати кожному процесу одну безперервну область фізичної пам'яті або можна виділяти пам'ять «шматками»? Чи повинні сегменти програми, завантажені в пам'ять, перебувати на одному місці протягом усього періоду виконання процесу або можна її час від часу зрушувати? Що робити, якщо сегменти програми не поміщаються в наявну пам'ять? Різні ОС по-різному відповідають на ці та інші базові питання управління пам'яттю. Далі будуть розглянуті найбільш загальні підходи до розподілу пам'яті, які були характерні для різних періодів розвитку операційних систем. Деякі з них зберегли актуальність і широко використовуються в сучасних ОС, інші ж представляють в основному лише пізнавальний інтерес, хоча їх і сьогодні можна зустріти в спеціалізованих системах.

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

Почнемо з останнього, більш простого класу методів.

 

Рис. 10.2. Класифікація методів розподілу пам'яті

 


Читайте також:

  1. IP-адреси
  2. Автоматизація процесу призначення IP-адрес
  3. Автономні ІР-адреси
  4. Адреса аудитора.
  5. Адреса в Fidonet
  6. Адреса в Internet
  7. Адресація в IP-мережах
  8. АДРЕСАЦІЯ В IP-СЕТЯХ
  9. Адресація в Інтернет
  10. Адресація в системі ЕП НБУ.
  11. АДРЕСАЦІЯ КОМП'ЮТЕРІВ
  12. Адресація.




Переглядів: 1858

<== попередня сторінка | наступна сторінка ==>
Переміщення | Розподіл пам'яті фіксованими розділами

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.015 сек.