
- •История развития архитектуры эвм
- •Нулевое поколение (1492 – 1945)
- •Первое поколение (1937-1953)
- •Второе поколение (1954 - 1962)
- •Третье поколение (1963-1972)
- •Четвертое поколение (1972-1984)
- •Пятое поколение (1984-1990)
- •Шестое поколение (1990-)
- •Концепция машины с хранимой в памяти программой
- •Принцип двоичного кодирования
- •Принцип программного управления
- •Принцип однородности памяти
- •Принцип адресности
- •Типы структур вычислительных машин и систем
- •Структуры вычислительных машин
- •Структуры вычислительных систем
- •Процессор. Структурная схема процессора. Понятие о микропрограммном управлении Структурная схема процессора
- •Алгоритмы выполнения операций. Микропрограммы
- •Синтез микропрограммного автомата. Синтез устройства управления
- •Обратная структурная таблица
- •Управляющие автоматы с программируемой логикой
- •Адресная структура памяти
- •Принципы построения устройств памяти
- •Адресная, ассоциативная и стековая организация памяти
- •Адресная память
- •Ассоциативная память
- •Стековая память
- •Команды процессора
- •Методы повышения производительности работы процессора
- •1.Конвейеризация (конвейер операций)
- •2. Процессоры с risc – архитектурой
- •3. Организация кэш-памяти
- •3.1. Техническая идея кэш-памяти
- •3.2. Архитектура кэш-памяти
- •3.2.1. Кэш память с прямым отображением
- •3.2.2. Полностью ассоциативная кэш память
- •3.2.3. Частично ассоциативная кэш память
- •3.3 Алгоритм замещения строк в кэш памяти
- •3.4 Методы записи в кэш память
- •Микропроцессор Intel 80i86
- •Страничная организация памяти
- •Буфер ассоциативной трансляции
- •Организация виртуальной памяти
- •Встроенные средства защиты информации в микропроцессорах фирмы intel
- •1. Концепции и компоненты защищенного режима
- •Независимость подготовки пользовательских программ и их защита от взаимных помех.
- •Защита программ операционной системы от помех при сбоях в программах пользователей.
- •Защита программ ос верхнего уровня от помех при сбоях в программах ос нижнего уровня.
- •Защита программ от отрицательных последствий при программных сбоях.
- •Защита целостности функционирования вычислительной системы.
- •2. Информационная основа работы механизма защиты
- •3. Уровни привилегий
- •Концепция уровней привилегий.
- •Задание уровней привилегий.
- •Проверка корректности использования отдельных команд.
- •Защита данных.
- •4.3 Защита программ.
- •Принципы организации системы прерывания
- •Программируемый контроллер прямого доступа к памяти
- •Лабораторная работа №1
- •Размещение байт и слов в памяти.
- •Лабораторная работа №2
- •Список операций
-
Защита данных.
Все
прикладные программы в многопрограммном
режиме выполняются на одном третьем
уровне привилегий. Механизм виртуальной
памяти обеспечивает их защиту от взаимных
помех . Всем программам разрешено
обращаться к любым данным на своем
уровне привилегий. Логика сервисных
функций современных ОС предусматривает
работу с данными программ менее защищенных
режимов. Поэтому программам разрешено
обращаться к данным и на менее
привилегированных уровнях. Однако
программам не разрешается чтение/запись
элементов данных, которые имеют более
высокий уровень привилегий, т.е. движение
к данным внутрь колец защиты запрещается.
Любая такая попытка приводит к фиксации
нарушения общей защиты. Это общее правило
доступа к данным можно записать в виде
следующего условия: CPLDPL
(1), т.е. PL
текущей программы должен быть меньше
или равен PL
данных. Условие допустимых схем обращения
графически можно представить в следующем
виде:
Здесь стрелками без перекрещивания указаны разрешенные схемы доступа. В приведенном примере запрещено обращение к сегменту данных, находящему на 1 уровне привилегии, а остальные обращения разрешены. Однако, программы менее защищенных уровней, используя сервисные программы более защищенных уровней, могут выполнять разные процедуры на уровне этих сервисных программ, в том числе процедуры изменения данных. Поэтому возникает опасность несанкционированного нарушения данных на более защищенном уровне привилегий PL. Для блокирования этой опасности механизм защиты использует более сложную схему проверки условий доступа. В условие проверки вводится параметр - эффективный уровень привилегий (Effective Privilege Level – EPL) как функция уровня привилегий запросчика RPL:
EPL=max(CPL,RPL)
Параметр EPL используется в условии (1) проверки разрешения доступа к сегментам данных вместо параметра CPL. С учетом RPL условие проверки (1) доступа к данным имеет следующий вид:
EPLDPL
или max(CPL,RPL)
DPL
или (CPL
DPL)&(RPL
DPL)
Из приведенных выражений для условий доступа видно, что значение RPL может только усилить неравенство (1), т.е. уменьшить возможности обращения текущей программы к сегментам данных. Например, пусть CPL=RPL=2. Тогда EPL=2 и текущей программе с CPL=2 разрешено обращение к сегментам данных, расположенным на втором и третьем уровнях привилегий. Если RPL=3, а CPL=2, то EPL=3 и текущая программа, имеющая CPL=2, уже не сможет обратиться к сегментам данных второго уровня привилегий и ей доступны сегменты только третьего уровня привилегий. Таким образом, за счет RPL можно настраивать механизм защиты на нужный режим работы. Это основное назначение параметра RPL.
4.3 Защита программ.
Стратегии защиты программ и защиты данных имеют много общего, но имеются и различия. При этом защита, как программ, так и данных на одном уровне привилегий производится на основе разделения адресных пространств механизмом виртуальной памяти при помощи локальных таблиц дескрипторов, каталогов и страниц. При обращении к программам также производятся проверки на выход за пределы сегмента и таблиц, проверки соответствия типа сегмента и проверки прав использования содержимого сегмента или страницы. Различия в защите программ и данных проявляются при межсегментных передачах управления.
Рассмотрим работу механизма защиты программ на примере межсегментных передач управления без изменения уровня привилегий. Существуют две разновидности таких передач управления. Это – переходы на программы сегмента того же уровня привилегий и переходы на программы подчиненных сегментов.
Среди сервисных программ операционной системы имеется ряд программ, которые используют другие программы на каждом уровне привилегий. Обычно такие программы просты по конструкции, требуют обращения только к своему параметру и возвращают результат вызывающей программе. Для упрощения обращения к таким программам можно было бы разместить их на уровне пользовательских программ. Но их используют на всех уровнях. Следовательно, такие программы нужно либо дублировать для каждого уровня привилегий, либо использовать более сложные межсегментные переходы с увеличением уровня привилегий. Для таких ситуаций в процессоре Intel предусмотрено альтернативное решение – использование подчиненных программных сегментов.
Программный сегмент определяется, как подчиненный установкой бита C – conforming в байте прав доступа AR дескриптора программного сегмента. Обычные правила защиты по значениям CPL и DPL не действуют, если бит подчиненности С установлен в единицу (С=1). В этом случае используются другие правила.
С подчиненными программными сегментами, у которых С=1, не ассоциируется конкретный уровень привилегий, так как эти программы подчиняются уровню привилегий той программы, которая передает им управление. Например, если программа, у которой PL=3, передает управление подчиненному программному сегменту, то такая подчиненная программа будет работать с CPL=3, если же этот сегмент вызывает программа с PL=0, то подчиненная программа из этого сегмента будет выполняться, имея CPL=0. Когда управление передается подчиненному программному сегменту, то биты поля CPL регистра кодов CS не принимает значение поля DPL дескриптора нового программного сегмента, а сохраняют значение DPL последнего выполнявшегося неподчиненного программного сегмента. Таким образом, переход на подчиненные программные сегменты являются переходом без изменения текущего уровня привилегий PL.
Но
даже для подчиненных программных
сегментов имеются ограничения по их
использованию. Передавать управление
подчиненному сегменту может только та
программа, уровень привилегий которой
CPL
не выше уровня привилегий DPL
подчиненного программного сегмента,
т.е. проверяется условие CPLDPL.
Чтобы программа подчиненного сегмента
была доступна на всех уровнях привилегий,
она должна иметь наивысший уровень
привилегий, т.е. DPL=0.
Такое условие соответствует общему
правилу использования сервисных
программ: любая программа может быть
сервисом только для программ более
низкого уровня иерархии.
При
переходе на программы сегментов того
же уровня привилегий механизм защиты
контролирует соблюдение равенства
уровней привилегий , вызывающей CPL
и вызываемой DPL
программ, а также, чтобы значение поля
RPL
в селекторе было меньше или равно
значению CPL,
т.е. в этом случае должно выполняться
условие (CPL=DPL)&(CPLRPL).
Рассмотренная модель взаимодействия программ проста по реализации, но имеет минимум защиты программ от возможных ошибок.
В процессоре Intel запрещена передача управления обычными средствами, программному сегменту, находящемуся на другом уровне привилегий. Ограничивая передачу управления в пределах одного кольца защиты, процессор тем самым предотвращает произвольное изменение уровней привилегий. Если бы значение CPL можно было легко изменять, все остальные средства защиты оказались бы бессмысленными.
Но передача управления на программы ОС необходима. Для решения этой проблемы в микропроцессоре предусмотрены особые системные объекты – шлюзы. Шлюзы являются ключевыми объектами для организации межсегментных переходов с увеличением уровня привилегий, т.е. на программы ОС. Любые переходы с увеличением уровня привилегий производится только с использованием шлюзов. Дескриптор шлюза вызова действует как посредник между программными сегментами, находящимися на различных уровнях привилегии.
Шлюзы идентифицируют разрешенные точки (метки) в программе, которым может быть передано управление. Таким образом, разрешенные точки входа в сервисные программы ОС задаются не вызывающей программой, а шлюзом. Использование шлюзов является защитой от несанкционированного использования программного сегмента. Шлюзы имеют свои уровни привилегий PL. При вызове шлюза проверяется его доступность по соотношению PL вызывающей программы и PL шлюза. Кроме того, проверяется соотношение уровней привилегий вызывающей и вызываемой программ.
Доступность
шлюза аналогична доступности данных.
Шлюз доступен, если его уровень привилегий
DPL
шл не
выше текущего уровня привилегий CPL
вызывающей программы и уровня привилегий
RPL
запроса. Таким образом, механизм защиты
проверяет условие: (CPLDPLшл)&(RPL
DPLшл)
(2)
В
результате получается следующий алгоритм
проверок при использовании шлюзов. На
первом этапе вызывающая программа
производит чтение дескриптора шлюза
вызова и проверяется условие его доступа
(2). Уровень привилегий шлюза DPLшл
выбирается
из дескриптора шлюза. Если условие (2)
выполняется, то на втором этапе
производится чтение дескриптора
программного сегмента из локальной LDT
или глобальной GDT
таблиц дескрипторов. Обращение к этим
таблицам производится с помощью
селектора, заданного в дескрипторе
шлюза вызова. После этого проверяется
условие доступности программного
сегмента. Межсегментная передача
управления допустима только на программы
своего или более высоких уровней
привилегий DPL.
Таким образом, на втором этапе проверяется
условие (CPLDPL)
(3). Если условие (3) выполняется, то
значение DPL
из дескриптора вызываемого программного
сегмента заносится в поле уровня
привилегий CPL
сегментного регистра CS.
После сохранения в стеке параметров
вызывающей программы, таких как точки
возврата, и проведения необходимых
проверок управление передается вызываемой
программе.