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


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


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


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


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


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


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


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


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


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



Сегментна організація пам'яті

 

Операційна система MS DOS, апаратна платформа якої базується на архітектурі мікропроцесорів Intel 8086/8088, використовує сегментну адресацію оперативної пам'яті. Пояснимо коротко її суть. Адреса кожного байта пам'яті зберігається у формі двох складових частин: сегмента адреси (segment) і зміщення адреси (offset).

Обидві складові є 16-розрядними беззнаковими цілими числами. Коли відбувається звертання до даних у пам'яті, з цих двох складових частин формується єдина 20-розрядна фізична адреса. Формування фізичної адреси здійснюється за такою схемою:

 

1) значення сегмента розширюється до 20 біт і зсувається вліво на 4 розряди; біти, що звільнилися справа, заповнюються нулями;

 

2) до отриманої 20-розрядної сегментної адреси додається значення зміщення; якщо виникає переповнення, то його ігнорують.

 

Повна фізична адреса є 20-розрядною, що дає змогу адресувати 220 = 1 Мбайт оперативної пам'яті. Цю пам'ять використовує в звичайному режимі роботи (real тоde) операційна система MS DOS.


 

У письмових позначеннях адреси сегмент і зміщення прийнято розділяти двокрапкою – segmen:оffset. Якщо вказуються константні значення складових адреси, то записують у шістнадцятковій формі з літерою h у кінці (від heximal - шістнадцятковий, наприклад: 2C60:OOA5h.

 

Одну і ту ж фізичну адресу можна отримати з різних значень segment- offset. Три наступні пари: 0DD0:0008h, 0D00:0D08h і 0320:AB08h адресують один і той самий байт оперативної пам'яті, фізична адреса якого - 0DD08h.

 

Сегментну компоненту адреси називають також номером параграфа чи просто параграфом адреси, а в мікропроцесорах Intel 8086/8088 параграфом позначають межу пам’яті, кратну 16. Оскільки при формуванні фізичної адреси сегмент зсувається вліво на 4 розряди, то для довільного значення segmenf.0000h відповідна фізична адреса буде містити нулі в останній тетраді, тобто буде кратною 16.

 

До сегмента додається зміщення, яке є 16-розрядним словом, тому в межах одного сегмента можна адресувати 216 = 65566 - 64 Кбайт оперативної пам'яті.


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

Для збереження сегментних компонентів адрес використовують чотири системних регістри мікропроцесора, які називають сегментними: CS, DS, SS і ЕS. Призначення їх таке:

 

· регістр CS (code segment - сегмент коду) задає сегментну частину адрес команд програми; область, яку він адресує, називається сегментом коду програми;

 

· регістр DS (data segment - сегмент даних) задає сегментну частину адрес глобальних і статичних змінних програми; область, яку він адресує, називається сегментом даних;

 

· регістр SS (stack segment - сегмент стека) разом з регістром SP (SS, SР) задає адрес область пам'яті, яка називається програмним стеком і використовується для збереження локальних даних функцій. Переважно заповнення стека виконується від його вершини (найбільшої адреси) вниз, тому значення SP зменшується після кожного запису даних у стек. Коли ж поточна функція завершує роботу, область її даних звільняється, а значення SP збільшується на відповідну величину;

 

· регістр ES (extra segment - додатковий сегментний регістр) використовують, коли потрібно окремо задавати сегментну частину адреси даних (це називають переадресацією сегмента), а також для швидкого звертання до оперативної пам'яті, наприклад у разі копіювання даних з однієї ділянки пам'яті в іншу

 

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

 

Такий розподіл оперативної пам'яті забезпечує компактність команд і високу швидкодію їх виконання. Проте обсяг сегмента обмежений значенням 64 Кбайт, тому для задач з великими обсягами даних і/або об'ємними кодами програм потрібні багатосегментні моделі пам'яті.

 





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

<== попередня сторінка | наступна сторінка ==>
КОРОТКІ Й ДОВГІ ВКАЗІВНИКИ | Моделі розподілу пам'яті

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

  

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


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