Структура дескриптора шлюза




Сегментные регистры и трансляция сегментов.

 

При использовании сегментированной математической памяти необходима процедура преобразования адреса сегментированной (математической памяти) в адреса линейной физической памяти при каждом обращении к памяти.

Адрес объекта в сегментированной памяти задается двумя компонентами базовым адресом сегмента и смещением в сегменте. В команде задается только смещение в сегменте. Базовый адрес сегмента задается содержимым одного из четырех сегментных регистров.

Например: МП IA-16 содержали 4 сегментных регистров по 16 бит:

· ES – дополнительного сегмента данных

· CS – сегмента кода

· SS – сегмента стека

· DS – сегмента данных

 

Использование регистров CS, SS, DS и ES возможно по умолчанию и с использованием префикса замены сегмента. Базовые адреса сегментов используются для преобразования адреса сегментированной памяти в линейную.

Емкость физической памяти в МП IA-16 позволяет разместить одновременно до 16 полных сегмента по 64 Кбайт (216 байт). Но одновременно, без изменения содержимого сегментных регистров, в реальном режиме IA-16 можно обращаться только к четырем, по числу сегментных регистров.

Переход на использование остальных сегментов (кроме кодовых), размещенных в оперативной памяти можно производить:

 

· при помощи загрузкой базовых адресов в соответствующие сегментные регистры командами пересылки (mov)

· командами загрузки сегментных регистров (LES, LDS и LSS).

 

Все операции работы со стеком ориентированы на словарную организацию стека. По этой причине адрес указателя стека и базовый адрес сегментного регистра SS должны бить четными.

Переходы на новые кодовые сегменты производятся командами межсегментных передач управления.

Преобразование адреса сегментированной памяти в адрес линейной (плоской) памяти производится процедурой трансляции сегмента: сложением базового адреса сегмента с адресом операнда в сегменте.

Дискрипторы

 

Дескриптор — описательный элемент.

Значения:

1. Дескриптор HTML — элемент языка разметки гипертекста HTML, например текст, иллюстрация, таблица. В разговорной речи дескрипторы называют тегами.

2. Файловый дескриптор — неотрицательное целое число, присваемое ОС открытому процессом файлу.

3. Дескриптор сегмента

4. Дескриптор шлюза

Строка в Symbian OS

 

Рассмотрим дескриптор сегмента и дескриптор шлюза:

 

Дескриптор сегмента — служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна 8 байтам.

 

Структура сегментного дескриптора

 

База (жёлтые поля, 32 бита) — начало сегмента в линейной памяти.

Лимит (красные поля, 20 бит) — (размер сегмента в байтах)-1 (База+Лимит = линейный адрес последнего байта).

Права доступа (синие поля, 12 бит) — флаги, определяющие наличие сегмента в памяти, уровень защиты, тип, разрядность + один пользовательский флаг.

 

Дескриптор шлюза — служебная структура данных, служащая для различных переходов. Используется только в защищённом режиме. В реальном режиме некоторым аналогом может служить дальний адрес. Длина дескриптора стандартна и равна 8 байтам.

 

Структура дескриптора шлюза

 

 

Смещение (Offset, жёлтые поля) — смещение процедуры в сегменте кода.

Селектор (Selector, оранжевое поле) — селектор сегмента процедуры, на который происходит переход. Может быть сегментом кода или TSS.

Количество параметров (Words count, голубое поле, биты 32-36) — количество слов (16-разрядный стек) или двойных слов (32-разрядный стек), копируемых из стека вызывающей программы в стек вызываемой процедуры. Актуально только при смене уровня привилегий, используется только в шлюзах вызова (Call Gate).

Тип/права доступа (голубые поля, биты 40-47) — права доступа к шлюзу и его тип.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-07-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: