760e358a

E.4.2.2. Шлюзы вызова.


Шлюзы вызова применяются для фактического изменения уровней привилегий. Другое название шлюза – "вентиль".

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

Правила пользования шлюзами:

  1. Шлюз может передавать управление на сегмент кода, имеющий больший уровень привилегий, чем уровень привилегий самого дескриптора шлюза.
  2. Программа может обращаться к шлюзу, имеющий тот же или более высокий уровень привилегий, чем уровень привилегий вызывающей программы.

Вообще при обращении через шлюз происходит генерация сегмента состояния задачи, после чего происходит переключение (вызов) на новую задачу как на новый процесс! Поэтому использование шлюза является более сложным способом вызова подпрограммы с другим уровнем привилегий. Подробнее об использовании шлюзов смотри [В.Л. Григорьев.].

| |

 

Содержание раздела