<<
>>

Описатели

Ссылки пользовательского режима на объекты режима ядра не могут использовать указатели, поскольку их трудно проверить. Поэтому объекты режима ядра приходится именовать как-то иначе (чтобы пользовательский код мог ссылаться на них).
Для ссылки на объекты режима ядра Windows использует описатели (handles, часто также называемые дескрипторами). Описатели — это неявные значения, которые конвертируются диспетчером объектов в ссылки на представляющие объект специфические структуры данных режима ядра. На рис. 11.9 показана структура данных таблицы дескрипторов, используемой для трансляции описателей в указатели на объекты. Таблица описателей расширяется путем добавления дополнительных уровней косвенного обращения. Каждый процесс имеет свою таблицу, включая и системный процесс, который содержит все потоки ядра, не связанные с процессом пользовательского режима.

Рис.

11.9. Структуры данных таблицы описателей (для минимальной таблицы для одной страницы с не более чем 512 описателями)

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

Рис.

11.10. Структуры данных таблицы описателей (для максимальной таблицы размером до 16 млн описателей)

Пользователи могут создавать новые объекты или открывать уже существующие объекты (при помощи выполнения вызовов Win32, таких как СтеаХеБетаркоте или ОрепБешаркоте). Это вызовы библиотечных процедур, которые в итоге приводят к выполнению соответствующих системных вызовов. Результатом любого успешного вызова, который создает или открывает объект, является 64-битный элемент таблицы описателей, который записывается в частную таблицу описателей процесса (в памяти ядра). Пользователю возвращается 32-битный индекс логического положения описателя в таблице (для использования при последующих вызовах). 64-битный элемент таблицы описателей в ядре состоит из двух 32-битных слов. Одно слово содержит 29-битный указатель на заголовок объекта. Младшие 3 бита используются как флаги (например, наследуется ли описатель создаваемыми им процессами). Эти 3 бита маскируются перед переходом по указателю. Второе слово содержит 32-битную маску привилегий. Она нужна, поскольку проверка прав производится только в момент создания или открывания объекта. Если процесс имеет на объект только право чтения, то все прочие биты привилегий в маске будут равны 0, что даст операционной системе возможность отвергнуть любую другую операцию с объектом (кроме чтения).

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Описатели:

  1. ОБРАЗЦЫ ОСНОВНЫХ ДОКУМЕНТОВ
  2. «ЧЕЛОВЕК ИГРАЮЩИЙ»
  3. НЕОБХОДИМОЕ АВТОРСКОЕ ПРЕДИСЛОВИЕ
  4. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  5. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  6. ПЕРЕДМОВА
  7. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
  8. Розділ І. Загальні положення цивільного права
  9. Тема 1. Поняття цивільного права. Предмет та метод, система цивільного права. Функції та принципи цивільного права
  10. Тема 2. Цивільне законодавство України
  11. Тема 3. Поняття, елементи та види цивільних правовідносин
  12. Тема 4. Здійснення цивільних прав і виконання обов’язків
  13. Тема 5. Захист цивільних прав та інтересів
  14. Тема 6. Об’єкти цивільних прав
  15. Тема 7.ФІЗИЧНІ особи як суб’єкти цивільного права
  16. Тема 8. Юридичні особи
  17. Тема 9. Держава як суб’єкт цивільного права. Територіальні громади та Автономна Республіка Крим як суб’єкти цивільного права
  18. Тема 10. Правочини: поняття, види. Умови чинності правочину
  19. Тема 11. Представництво і довіреність
  20. Тема П.Строки. Позовна давність