Лучший саит для изучения программирования. Самая свежая информация вилатерм для швов купить в москве на сайте.
При выполнении программой тех или иных действий, в частности, обращений к памяти, процессор аппаратно проверяет также некоторые условия. При их несоблюдении вместо продолжения выполнения команды генерируется прерывание по исключительной ситуации (и затем, как правило, осуществляется передача управления операционной системе).
Проверки, выполняемые процессором при выполнении команд, можно подразделить на следующие категории:
•Limit checks — проверки превышения границы сегмента;
•Type checks — проверки допустимости типа дескриптора при обращении, возможности чтения или записи в сегмент;
•Privilege level checks — проверки уровня привилегий;
•Restriction of addressable domain — ограничение доступа к отдельным диапазонам адресов;
•Restriction of procedure entry-points — проверки доступности точек входа в процедуры (механизм шлюзования);
•Restriction of instruction set — проверки привилегированных команд.
Рассмотрим более подробно ситуации, в которых возможно срабатывание механизма защиты.
Прежде всего отметим, что в защищенном режиме каждой программе может быть присвоен один из четырех уровней привилегий (0 — наиболее привилегированный, 3 -наименее) — см. рисунок ниже.
Операционная система при формировании дескрипторов и заполнении дескрипторной таблицы назначает для каждого сегмента уровень привилегий (обычно 0 — для сегментов операционной системы, 3 — для программ-приложений) и записывает соответствующий код в поле DPL дескриптора.
При загрузке сегмента кода, его DPL помещается в младшие биты регистра CS это значение называется CPL (Current Privilege Level — текущий уровень привилегий), т.е. уровень привилегий выполняемого в данный момент кода.
Прикладная программа не может напрямую установить значения базы и предела для сегмента, а может лишь выбрать один из имеющихся в дескрипторной таблице, которую заполнила ОС.