4

Я читаю операционную систему Multics. В слове дескриптора сегмента (книга) есть одна часть для числа ворот для сегмента. Что значит ворота? Я знаю, что процесс может войти в кольцо с более высоким уровнем привилегий, если ворота позволяют (используйте один из допустимых сегментов в качестве точки входа), но я не знаю правильно, что означает «ворота»?

Благодарю.

2 ответа2

4

Шлюз - это просто специально объявленная точка входа (точка входа на современном языке называется процедурой, функцией или процедурой). Компилятор или ассемблер сгенерирует дополнительную информацию для точек входа, которые являются воротами. Точка входа в шлюз может быть вызвана кодом, который работает по менее привилегированному кольцу, чем у шлюза. Точки входа без шлюза не могут быть вызваны из кода, выполняемого в кольцах с более высокими номерами (менее привилегированными).

См. Раздел 8 руководства AL-39 и описание инструкции call6 для более подробной информации. Вот фрагмент:

Ворота - это процедуры, расположенные в данном кольце и предназначенные для обеспечения контролируемого доступа к кольцу. Программа, находящаяся в кольце R, может войти во внутреннее кольцо r только путем вызова одной из процедур шлюза, связанных с этим внутренним кольцом r. Ворота должны быть тщательно закодированы и не должны доверять любым данным, которые были изготовлены или изменены вызывающим абонентом в менее привилегированном кольце. В частности, ворота должны проверить все аргументы, переданные им вызывающей стороной, чтобы не поставить под угрозу защиту любого сегмента, находящегося во внутреннем кольце.

0

К вашему сведению, очень похожий механизм стробирования вызовов для кольцевого перехода, который использовался в Multics, также доступен во всех системах Intel x86, поддерживающих "защищенный режим", начиная с 80286.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .