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

UptoLike

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

8
Каждый из этих четырех селекторов позволяет адресовать все 4
Гбайта линейного адресного пространства, причем трансляция
производится в одни и те же физические адреса.
Первые два селектора имеют требуемый уровень привилегий DPL =
0 (наивысший приоритет, DPL – Descriptor Privilege Level, уровень
привилегий дескриптора) и используются драйверами и системными
компонентами для доступа к системному коду, данным и стеку. (
Здесь
следует отметить, что из четырех возможных уровней привилегий 0 – 4,
предоставляемых данным типом процессоров, в операционных системах
Windows используются лишь два уровня – 0 и 3.)
Вторые два селектора используются кодом пользовательского
режима для доступа к коду, данным и стеку пользовательского же режима.
Эти селекторы являются константами для Windows NT.
Преобразование пары селектор:смещение для указанных селекторов
дает 32-битный линейный адрес, совпадающий со значением смещения
виртуального адреса. То есть, в данном случае виртуальный и линейный
адреса совпадают.
Наличие в дескрипторе поля, определяющего возможность
чтения/записи/исполнения кода, может навести на мысль о том, что
именно на этом уровне может быть выполнена защита памяти от неверного
использования. Например, код
прикладной программы в пользовательском
режиме находится в сегменте с селектором 1b. Для этого селектора
разрешены только операции чтения и исполнения. То есть, используя
селектор 1b, программа не сможет модифицировать свой собственный код.
Однако, та же программа, обращаясь к данным или стеку (селектор 23)
найдет свой код по тому же смещению, что и в
сегменте 1b (так как для
всех указанных сегментов трансляция производится в одни и те же
физические адреса), но режим доступа в данном случае позволяет
     Каждый из этих четырех селекторов позволяет адресовать все 4
Гбайта   линейного     адресного   пространства,   причем    трансляция
производится в одни и те же физические адреса.
     Первые два селектора имеют требуемый уровень привилегий DPL =
0 (наивысший приоритет, DPL – Descriptor Privilege Level, уровень
привилегий дескриптора) и используются драйверами и системными
компонентами для доступа к системному коду, данным и стеку. (Здесь
следует отметить, что из четырех возможных уровней привилегий 0 – 4,
предоставляемых данным типом процессоров, в операционных системах
Windows используются лишь два уровня – 0 и 3.)
     Вторые два селектора используются кодом пользовательского
режима для доступа к коду, данным и стеку пользовательского же режима.
Эти селекторы являются константами для Windows NT.
     Преобразование пары селектор:смещение для указанных селекторов
дает 32-битный линейный адрес, совпадающий со значением смещения
виртуального адреса. То есть, в данном случае виртуальный и линейный
адреса совпадают.
     Наличие    в    дескрипторе   поля,   определяющего    возможность
чтения/записи/исполнения кода, может навести на мысль о том, что
именно на этом уровне может быть выполнена защита памяти от неверного
использования. Например, код прикладной программы в пользовательском
режиме находится в сегменте с селектором 1b. Для этого селектора
разрешены только операции чтения и исполнения. То есть, используя
селектор 1b, программа не сможет модифицировать свой собственный код.
Однако, та же программа, обращаясь к данным или стеку (селектор 23)
найдет свой код по тому же смещению, что и в сегменте 1b (так как для
всех указанных сегментов трансляция производится в одни и те же
физические адреса), но режим доступа в данном случае позволяет



                                    8