Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

http hydraruzxpnew4af | hydraruzxpnew4af union
 

Базова адресація

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

Мал. З.6. Переміщення коди, що використовує базову адресацію

В цьому випадку для переміщення програми нам потрібно лише змінити значення базових регістрів, і програма навіть не взнає, що завантажена з Іншої адреси. Статично ініциалізованнимі покажчиками в цьому випадку користуватися або неможливо, або необхідно завжди додавати до них значення базових регістрів.
Саме так відбувається завантаження corn-файлов в системі MS DOS. Система вьщеляєт вільну пам'ять, набудовує для програми базові регістри DS і CS, які чомусь називаються сегментними, і передає управління на стартову адресу. Нічого більшого робити не треба.

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017