Иллюстрированный самоучитель по теории операционных систем

Сегменты, страницы и системные вызовы

Все допускаемые этими правилами комбинации прав могут быть закодированы при помощи четырех бит в дескрипторе страницы (табл. 5.1). Переключение режимов осуществляется командами СНМК, СНМЕ, CHMS и CHMU. Эти команды помещают слово состояния процессора и счетчик команд в стек, соответствующий новому режиму, сохраняют предыдущий режим в специальном поле слова состояния (зачем нужно сохранять режим в двух местах, мы поймем чуть позже), устанавливают новый режим и, наконец, передают управление по фиксированному адресу, аналогично команде SYSCALL в системах с двумя уровнями доступа.

Таблица 5.1. Коды защиты для различных режимов доступа процессора VAX. Цитируется по [Прохоров, 1990].

Код Kernel Executive Supervisor User
0000 - - - -
0001 Не предсказуем
0010 RW - - -
0011 R - - -
0100 RW RW RW RW
0101 RW RW - -
0110 RW R - -
0111 R R - -
1000 RW RW RW -
1001 RW RW R -
1010 RW R R -
1011 R R R -
1100 RW RW RW R
1101 RW RW R RW
1110 RW R R R
1111 R R R R

R – право чтения, W – право записи, - – отсутствие прав.

Передача управления по фиксированному адресу позволяет нам защититься от бесконтрольного повышения уровня доступа, а все предыдущие операции дают возможность вернуться на предыдущий уровень доступа с одновременной передачей управления, используя специальную команду REI, которая восстанавливает и счетчик команд, и слово состояния. Команды СHМ(Х) обычно используются для повышения уровня доступа, а REI может использоваться только для его понижения или возврата на тот же уровень (рис. 5.6).

Иллюстрированный самоучитель по теории операционных систем › Сегментная и страничная виртуальная память › Сегменты, страницы и системные вызовы
Рис. 5.6. Переключение режимов процессора VAX

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.