Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 17 стр.

UptoLike

Составители: 

17
В представленной выше таблице биты, входящие в поля типа,
рассмотрены по отдельности. Часто для их совместной интерпретации
рассматривают комбинации этих битов в целом. В таблице 1.4 показаны
некоторые комбинации этих битов.
Таблица 1.4 – Типичные комбинации в поле типа сегмента
Комбинации
битов в поле
type_seg
Назначение сегмента
000 Сегмент данных только для чтения
001 Сегмент данных с разрешение чтения и записи
010 Не определено
011 Сегмент стека с разрешение чтения и записи
100 Сегмент кода с разрешение только выполнения
101 Сегмент кода с разрешением выполнения и чтения из него
110 Подчиненный сегмент кода с разрешением выполнения
111 Подчиненный сегмент кода с разрешением выполнения и чтения из
него
Как видно из содержимого поля типа в байте AR, возможны два
принципиально разных вида сегментов: данных и кода. Сегмент стека
является разновидностью сегмента данных, но с особой трактовкой поля
размера сегмента. Это объясняется спецификой использования стека (он
растет в направлении от старших адресов памяти к младшим). Ясно, что
поле типа
ограничивает использование объявленных сегментов. В
частности, программные сегменты не могут быть модифицированы без
применения специальных мер. Доступ к сегменту данных также может
быть ограничен только чтением.
Системные сегменты предназначены для хранения локальных
таблиц дескрипторов LDT и состояния задач TSS (Task State Segment). Их
дескрипторы определяют базовый адрес, лимит сегмента (1 – 64 Кбайт),
права доступа (чтение, чтение
/запись, только исполнение кода,
исполнение/чтение) и присутствие сегмента в физической памяти (рисунок
1.6)
        В представленной выше таблице биты, входящие в поля типа,
рассмотрены по отдельности. Часто для их совместной интерпретации
рассматривают комбинации этих битов в целом. В таблице 1.4 показаны
некоторые комбинации этих битов.
          Таблица 1.4 – Типичные комбинации в поле типа сегмента
 Комбинации
 битов в поле   Назначение сегмента
   type_seg
      000       Сегмент данных только для чтения
      001       Сегмент данных с разрешение чтения и записи
      010       Не определено
      011       Сегмент стека с разрешение чтения и записи
      100       Сегмент кода с разрешение только выполнения
      101       Сегмент кода с разрешением выполнения и чтения из него
      110       Подчиненный сегмент кода с разрешением выполнения
      111       Подчиненный сегмент кода с разрешением выполнения и чтения из
                него


        Как видно из содержимого поля типа в байте AR, возможны два
принципиально разных вида сегментов: данных и кода. Сегмент стека
является разновидностью сегмента данных, но с особой трактовкой поля
размера сегмента. Это объясняется спецификой использования стека (он
растет в направлении от старших адресов памяти к младшим). Ясно, что
поле типа ограничивает использование объявленных сегментов. В
частности, программные сегменты не могут быть модифицированы без
применения специальных мер. Доступ к сегменту данных также может
быть ограничен только чтением.
        Системные сегменты предназначены для хранения локальных
таблиц дескрипторов LDT и состояния задач TSS (Task State Segment). Их
дескрипторы определяют базовый адрес, лимит сегмента (1 – 64 Кбайт),
права    доступа   (чтение,    чтение/запись,   только   исполнение    кода,
исполнение/чтение) и присутствие сегмента в физической памяти (рисунок
1.6)



                                      17