Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_2011.doc
Скачиваний:
64
Добавлен:
09.12.2018
Размер:
1.15 Mб
Скачать
  1. Структура дескрипторных таблиц

Существует 3 типа дескрипторных таблиц:

  • Глобальная дескрипторная таблица (GDT).

Это основная общесистемная таблица, к которой допускается обращение со стороны программ, обладающих достаточными привилегиями. Расположение таблиц в памяти локализуется с помощью регистра GDTR. В эту таблицу входят:

  • дескрипторы сегментов кодов программ;

  • дескрипторы сегментов данных программ;

  • дескрипторы стековых сегментов программ;

  • дескрипторы сегментов состояния задач;

  • дескрипторы для локальных дескрипторных таблиц;

  • шлюзы вызова;

  • шлюзы задач

  • Локальная дескрипторная таблица (ldt)

Для любой задачи в системе может быть задана своя дескрипторная таблица. С помощью этой таблицы локализуется адресное пространство задачи. Таблицы LDT могут содержать следующие типы дескрипторов:

  • дескрипторы кодов;

  • дескрипторы сегментов данных;

  • дескрипторы сегментов стеков;

  • шлюзы вызова и шлюзы задач.

Таблица IDT

Таблица содержит дескрипторы, с помощью которых происходит обращение к программам обработки прерываний.

Структура дескриптора:

base_1, base_2 , base3– указывают на базовый адрес сегмента (32 бита).

Размер сегмента= 16 разр (limit1) + 4 разр (limit2) = 20 разр

G – определяет масштаб измерения размера сегмента

«0» размер в байтах

«1» размер в страницах

D – определяет разрядность операндов и режим адресации

«0» 16-разрядная адресация

«1» 32-разрядная адресация

U – бит пользователя

Структура байта ar

P – бит присутствия, определяет местоположение сегмента:

«0» сегмента нет в оперативной памяти,

«1» сегмент есть в оперативной памяти.

DPL – определяет приоритет. Используется для защиты сегмента по привилегиям. 4 уровня привилегий, 0-ой – высший.

S – определяет какой объект описывает дескриптор:

«1» дескриптор описывает сегмент (объект – сегмент),

«0» описывается структура, которая может и не быть сегментом в оперативной памяти.

I – конкретизирует тип сегмента:

«0» сегмент данных или стека,

«1» сегмент кода.

C/ED – трактуется по разному. Если сегмент является кодовым, то С определяет подчиненность сегмента (1 подчинен, 0 обычный сегмент кода). Если сегмент является сегментом данных или стека, то ED определяет тип сегмента (данные -0, сегмент стека -1).

R/W – несет различную функциональную нагрузку в зависимости от типа сегмента.

Если дескриптор указывает на сегмент кода. То при R=0 запрещается чтение сегмента, а при R=1 – разрешается.

Для сегмента данных при W = 0 модификация данных запрещена, а при W=1 - разрешена.

A – бит доступа к сегменту, устанавливается аппаратно при обращении к сегменту

        1. I

C/ED

R/W

описание

0

0

0

Сегмент данных только для чтения

0

0

1

Разрешены чтение и запись

1

0

0

Сегмент кода с разрешением только выполнения

1

0

1

Сегмент кода с разрешением выполнения и чтения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]