русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Преобразование сегмента


Дата добавления: 2015-06-12; просмотров: 826; Нарушение авторских прав


Логический адрес состоит из 16-битового селектора сегмента и 32- битового смещения в этом сегменте. Логический адрес транслируется в линейный адрес сложением смещения и базового адреса сегмента. Базовый адрес берется из дескриптора сегмента - структуры данных в памяти, которая содержит информацию о размере и расположении данного сегмента в памяти, а также информацию для управления доступа. Дескриптор сегмента берется в одной из двух таблиц, таблицы глобальных дескрипторов (GDT) или таблицы локальных дескрипторов (LDT). Для всех программ в системе существует единая таблица GDT, а также по одной таблице LDT для каждой отдельной выполняемой в текущий момент программы. Если позволяет операционная система, то разные программы могут разделять одну и ту же LDT. Система может быть организована вообще без таблиц LDT; в этом случае все программы будут использовать GDT.

Каждый логический адрес связан со своим сегментом (даже если система отображает все сегменты в одно и том же линейное адресное пространство). Хотя программа может иметь тысячи сегментов, для немедленного использования доступны только шесть из них. Имеется шесть сегментов, селекторы которых загружены в процессор. Селектор сегмента содержит информацию, используемую для транслирования логического адреса в соответствующий линейный адрес.

Для каждого вида ссылки к памяти (пространству кода, пространству стека и пространствам данных) в процессоре существуют отдельные сегментные регистры. Они содержат селекторы текущих используемых сементов. Доступ к другим сегментам требует загрузки сегментного регистра с помощью разновидности команды MOV. Одновременно может быть доступно до четырех сегментов данных, что в сумме с остальными составляет шесть сегментных регистров.

При загрузке селектора сегмента также происходит загрузка в сегментный регистр базового адреса, границы сегмента и информации, управляющей доступом. После этого процессор уже не обращается к таблицам дескрипторов до тех пор, пока не произойдет загрузка другого селектора сегмента. Информация, хранимая процессором, позволяет ему выполнять адресные транслирования, не тратя на это лишних циклов шины. В системах, где несколько процессоров имеют доступ к одним и тем же таблицам дескрипторов, ответственность за перезагрузку сегментных регистров при модификации таблиц дескрипторов лежит на программном обеспечении системы. Если этого не сделать, то может произойти использование старого дескриптора сегмента, кешированного в сегментный регистр, уже после модификации его резидентной в памяти версии.



Селектор сегмента содержит 13-разрядный индекс для одной из дескрипторных таблиц. Индекс умножается на восемь (число байтов в дескрипторе сегмента) и складывается с 32-битовым базовым адресом дескрипторной таблицы. Базовый адрес берется из регистра таблицы глобальных дескрипторов (GDTR), либо из регистра таблицы локальных дескрипторов (LDTR). Эти регистры содержат линейный адрес начала дескрипторных таблиц. Бит в селекторе сегмента определяет, какая таблица должна быть использована, как показано на Рисунке 5-4.

Селектор сегмента Таблица Таблица глобальных локальных-------------------- дескрипторов дескрипторов| |T| || |I| |-------------------- | TI=0 TI=1 ------------------------------------------- | | \/ \/ ----------------- ----------------- | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | |---------------| |---------------| | | | | | | |---------------| |---------------| | | | | -------> ----------------- --> ----------------- | | | | | | | ------------- | ------------- | | Селектор | | | Селектор | | ------------- | ------------- | | Граница | | | Граница | -------------------- ---------------------- | Базовый адрес | GDTR | Базовый адрес | LDTR -------------------- ---------------------- Рисунок 5-4. Бит TI выбирает таблицу дескрипторов

Преобразованный адрес представляет собой линейный адрес, как показано на Рисунке 5-5. Если подкачка страниц не используется, то он одновременно является и физическим адресом. Если подкачка используется, то физический адрес получается на втором уровне преобразования адреса. Трансляция адресов описана в разделе 5.3.

15 0 31 0Логический -------------------- ------------------------------адрес | Селектор | | Смещение | -------------------- ------------------------------ | | | ------- \/ | | Таблица | | дескрипторов | | -------------- | | | | | | | | | | |------------| | | | Дескриптор | Базовый ----- | -->| сегмента |---------->| + |<---- |------------| адрес ----- | | | -------------- | 31 \/ 0 --------------------------- Линейный |Каталог|Страница|Смещение| адрес --------------------------- Рисунок 5-5. Трансляция адреса сегмента


<== предыдущая лекция | следующая лекция ==>
Многосегментная модель | Сегментные регистры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.51 сек.