ZLONOV.ru
Средства защиты от несанкционированного вывода (ввода) информации (DLP – системы) — программные средства, используемые в целях обеспечения защиты (некриптографическими методами) информации, содержащей сведения, составляющие государственную тайну, иной информации с ограниченным доступом, и реализующим функции обнаружения и предотвращения несанкционированной передачи (вывода) информации ограниченного доступа из защищенного сегмента информационной системы на основе анализа смыслового содержания информации.
Представлено 9 товаров
» data-medium-file=»https://zlonov.ru/wp-content/uploads/Solar-Dozor-300×300.png» data-large-file=»https://zlonov.ru/wp-content/uploads/Solar-Dozor.png» data-lazy-srcset=»https://zlonov.ru/wp-content/uploads/Solar-Dozor-400×400.png 400w, https://zlonov.ru/wp-content/uploads/Solar-Dozor-150×150.png 150w, https://zlonov.ru/wp-content/uploads/Solar-Dozor-300×300.png 300w, https://zlonov.ru/wp-content/uploads/Solar-Dozor-200×200.png 200w, https://zlonov.ru/wp-content/uploads/Solar-Dozor-100×100.png 100w, https://zlonov.ru/wp-content/uploads/Solar-Dozor.png 570w» data-lazy-sizes=»(max-width: 400px) 100vw, 400px» data-lazy-src=»https://zlonov.ru/wp-content/uploads/Solar-Dozor-400×400.png?is-pending-load=1″ srcset=»data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7″/>
[->] Solar Dozor
DeviceLock DLP
» data-image-caption=»» data-medium-file=»https://zlonov.ru/wp-content/uploads/InfoWatch-EndPoint-Security.png» data-large-file=»https://zlonov.ru/wp-content/uploads/InfoWatch-EndPoint-Security.png» data-lazy-srcset=»https://zlonov.ru/wp-content/uploads/InfoWatch-EndPoint-Security.png 160w, https://zlonov.ru/wp-content/uploads/InfoWatch-EndPoint-Security-150×150.png 150w, https://zlonov.ru/wp-content/uploads/InfoWatch-EndPoint-Security-100×100.png 100w» data-lazy-sizes=»(max-width: 160px) 100vw, 160px» data-lazy-src=»https://zlonov.ru/wp-content/uploads/InfoWatch-EndPoint-Security.png?is-pending-load=1″ srcset=»data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7″/>
InfoWatch EndPoint Security
InfoWatch Traffic Monitor
» data-medium-file=»https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor-300×300.jpg» data-large-file=»https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor.jpg» data-lazy-srcset=»https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor.jpg 400w, https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor-150×150.jpg 150w, https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor-300×300.jpg 300w, https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor-200×200.jpg 200w, https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor-100×100.jpg 100w» data-lazy-sizes=»(max-width: 400px) 100vw, 400px» data-lazy-src=»https://zlonov.ru/wp-content/uploads/InfoWatch-Traffic-Monitor-400×400.jpg?is-pending-load=1″ srcset=»data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7″/>
InfoWatch Traffic Monitor
StaffCop
» data-medium-file=»https://zlonov.ru/wp-content/uploads/Zecurion-300×300.png» data-large-file=»https://zlonov.ru/wp-content/uploads/Zecurion-1024×1024.png» data-lazy-srcset=»https://zlonov.ru/wp-content/uploads/Zecurion-400×400.png 400w, https://zlonov.ru/wp-content/uploads/Zecurion-150×150.png 150w, https://zlonov.ru/wp-content/uploads/Zecurion-300×300.png 300w, https://zlonov.ru/wp-content/uploads/Zecurion-768×768.png 768w, https://zlonov.ru/wp-content/uploads/Zecurion-1024×1024.png 1024w, https://zlonov.ru/wp-content/uploads/Zecurion-200×200.png 200w, https://zlonov.ru/wp-content/uploads/Zecurion-100×100.png 100w, https://zlonov.ru/wp-content/uploads/Zecurion-800×800.png 800w, https://zlonov.ru/wp-content/uploads/Zecurion-600×600.png 600w, https://zlonov.ru/wp-content/uploads/Zecurion.png 1200w» data-lazy-sizes=»(max-width: 400px) 100vw, 400px» data-lazy-src=»https://zlonov.ru/wp-content/uploads/Zecurion-400×400.png?is-pending-load=1″ srcset=»data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7″/>
Zecurion DLP
Zecurion Zlock (Device Control)
» data-medium-file=»https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-300×300.png» data-large-file=»https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-1024×1024.png» data-lazy-srcset=»https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-400×400.png 400w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-150×150.png 150w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-300×300.png 300w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-768×768.png 768w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-1024×1024.png 1024w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-200×200.png 200w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-100×100.png 100w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-800×800.png 800w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-600×600.png 600w, https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control.png 1200w» data-lazy-sizes=»(max-width: 400px) 100vw, 400px» data-lazy-src=»https://zlonov.ru/wp-content/uploads/Zecurion-Zlock-Device-Control-400×400.png?is-pending-load=1″ srcset=»data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7″/>
Zlock
КИБ Серчинформ
» data-medium-file=»https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС-300×300.png» data-large-file=»https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС.png» data-lazy-srcset=»https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС-400×400.png 400w, https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС-150×150.png 150w, https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС-300×300.png 300w, https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС-200×200.png 200w, https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС-100×100.png 100w, https://zlonov.ru/wp-content/uploads/ПК-ЛОГОС.png 403w» data-lazy-sizes=»(max-width: 400px) 100vw, 400px» data-lazy-src=»https://zlonov.ru/wp-content/uploads/%D0%9F%D0%9A-%D0%9B%D0%9E%D0%93%D0%9E%D0%A1-400×400.png?is-pending-load=1″ srcset=»data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7″/>
Программный комплекс ЛОГОС
Каталог СрЗИ — средств защиты информации
Большую часть Каталога средств защиты информации составляют СрЗИ, присутствующие в реестрах ФСБ/ФСТЭК.
Источник
Способы защиты ввода-вывода
Перед создателями ОС встает очень непростая задача — обеспечить эффективное управление устройствами ввода/вывода. Необходимо обеспечить доступ к устройствам ввода/вывода для множества параллельно выполняющихся задач, причем так, чтобы они как можно меньше мешали друг другу.
Поэтому самым главным является следующий принцип: любые операции по управлению вводом/выводом объявляются привилегированными и могут выполняться только кодом самой ОС. Для обеспечения этого принципа в большинстве процессоров даже вводятся режимы пользователя и супервизора. Как правило, в режиме супервизора выполнение команд ввода/вывода разрешено, а в пользовательском режиме — запрещено. При использовании команд ввода/вывода в пользовательском режиме управление через механизм прерываний передается коду ОС.
Можно назвать три основные причины, по которым нельзя разрешать каждой отдельной пользовательской программе обращаться к внешним устройствам непосредственно:
Необходимость разрешать возможные конфликты доступа к устройствам ввода/вывода. Например, две параллельно выполняющиеся программы пытаются вывести на печать результаты своей работы. Если не предусмотреть внешнее управление устройством печати, то в результате мы можем получить абсолютно нечитаемый текст, так как каждая программа будет время от времени выводить свои данные, которые будут перемежаться данными другой программы. Другой пример: ситуация, когда одной программе необходимо прочитать данные с некоторого сектора магнитного диска, а другой — записать результаты в другой сектор того же накопителя. Если операции ввода/вывода не будут отслеживаться каким-то третьим (внешним) процессом-арбитром, то после позиционирования магнитной головки для первого запроса может тут же появиться команда позиционировании головки для второй задачи, и обе операции ввода/вывода не смогут быть выполнены корректно.
Желание увеличить эффективность использования этих ресурсов. Например, у накопителя на магнитных дисках время подвода головки чтения/записи к необходимой дорожке и обращение к определенному сектору может значительно (до тысячи раз) превышать время пересылки данных. В результате, если задачи по очереди обращаются к цилиндрам, далеко отстоящим друг от друга, го полезная работа, выполняемая накопителем, может быть существенно снижена.
Ошибки в программах ввода/вывода могут привести к краху всех вычислительных процессов, ибо часть операций ввода/вывода осуществляется для самой операционной системы. В ряде ОС системный ввод/вывод имеет существенно более высокие привилегии, чем ввод/вывод задач пользователя. Поэтому системный код, управляющий операциями ввода/вывода, очень тщательно отлаживается и оптимизируется для повышения надежности вычислений и эффективности использования оборудования.
И так, управление вводом/выводом осуществляется операционной системой, компонентом, который чаще .всего называют супервизором ввода/вывода. В перечень основных задач, возлагаемых на супервизор, входят следующие:
— супервизор ввода/вывода получает запросы па ввод/вывод от прикладных задач и от программных модулей самой операционной системы. Эти запросы проверяются па корректность, и если запрос выполнен но спецификациям и не содержит ошибок, он обрабатывается дальше, а противном случае пользователю (задаче) выдается соответствующее диагностическое сообщение о недействительности (некорректности) запроса;
— супервизор ввода/вывода вызывает соответствующие распределители каналов и контроллеров, планирует ввод/вывод (определяет очередность предоставления устройств ввода/вывода задачам, затребовавшим их). Запрос па ввод/ вывод либо тут же выполняется, либо ставится в очередь на выполнение;
— супервизор ввода/вывода инициирует операции ввода/вывода (передает управление соответствующим драйверам) и в случае управления вводом/выводом с использованием прерывании предоставляет процессор диспетчеру задач с тем, чтобы передать его первой задаче, стоящей в очереди на выполнение;
— при получении сигналов прерываний от устройств ввода/вывода супервизор идентифицирует их (рис. 4.1) и передаст управление сопутствующей программе обработки прерывания (как правило, на секцию продолжения драйвера — см. раздел «Режимы управления вводом/выводом»);
— супервизор ввода/вывода осуществляет передачу сообщений об ошибках, если таковые происходят в процессе управления операциями ввода/вывода;
— супервизор ввода/вывода посылает сообщения о завершении операции ввода/вывода запросившему эту операцию процессу и снимает сто с состояния
— ожидания ввода/вывода, если процесс ожидал завершения операции.
В случае если устройство ввода/вывода является инициативным1, управление со стороны супервизора ввода/вывода будет заключаться в активизации соответствующего вычислительного процесса (перевод его в состояние готовности к выполнению).
Таким образом, прикладные программы (а в общем случае — все обрабатывающие программы) не могут непосредственно связываться с устройствами ввода/ вывода независимо от использования устройств (монопольно или совместно). Установив соответствующие значения параметров в запросе на ввод/вывод, определяющих требуемую операцию и количество потребляемых ресурсов, они могут передать управление супервизору ввода/вывода, который и запускает необходимые логические и физические операции.
Упомянутый выше запрос на ввод/вывод должен удовлетворять требованиям API той операционной системы, в среде которой выполняется приложение. Параметры, указываемые в запросах на ввод/вывод, передаются не только в вызывающих последовательностях, создаваемых по спецификациям API, но и как данные, хранящиеся в соответствующих системных таблицах. Все параметры, которые будут стоять в вызывающей последовательности, поставляются компилятором и отражают требования программиста и постоянные сведения об операционной системе и архитектуре компьютера в целом. Переменные сведения о вычислительной системе (се конфигурация, состав оборудования, состав и особенности системного программного обеспечения) содержатся в специальных системных таблицах. Процессору, каналам прямого доступа в память, контроллерам необходимо передавать конкретную двоичную информацию, с помощью которой и осуществляется управление оборудованием. Эта конкретная двоичная информация в виде кодов и данных часто готовится с помощью препроцессоров, но часть ее хранится в системных таблицах.
Контрольные задания для СРС (темы 2) [(1;547-590)(3;129-146)(4;175-200)]
1.Буферизация и кэширование операций ввода/вывода.
2.Использование и обоснованность применения RAID массивов
3.Прямой доступ к памяти
Рекомендуемая литература
1. Столингс Операционные системы
2.Олифер В.Г.,Олифер Н.А. Сетевые ОС
3.Гордеев А.В, Молчанов А.Ю. Системное программное обеспечение.
4.Таненбаум Э, Вудхал А Операционные системы: разработка и реализация.
Источник
Способы защиты ввода вывода
СИСТЕМЫ ВВОДА ВЫВОДА
Организация ввода — вывода микропроцессорного устройства
Ввод _ вывод _ это процесс обмена данными между ядром микропроцессорного устройства и периферийными устройствами. В микропроцессорном устройстве применяют три режима:
- программный;
- по прерываниям;
- прямой доступ к памяти.
Группа бит, к которым обращается микропроцессор при вводе _ выводе, называется портом или регистром ввода _ вывода. При вводе выводе периферийные устройства представлены следующей программной моделью (рис.10).
Все реестры имеют адрес, в зависимости от конкретной реализации порты могут объединяться. Признак готовности периферийного устройства к вводу _ выводу обычно содержится в одном из разрядов порта состояния, различают изолированный и неизолированный ввод _ вывод. В первом случае в системе команд есть специальные команды ввода _ вывода, в которых содержится номер порта, указываемый во втором слове код операции ввода _ вывода. Адресное пространство портов и ячеек памяти в этом случае изолированы, так как для пересылки в память имеются особые команды. В этом случае адреса портов ввода _ вывода, некоторых, ячеек могут совпадать. Во втором случае адресные пространства едины и совпадения адресов нет. При постоянном способе ввода _ вывода инициализируется программой выполняемой в микропроцессорном устройстве. При вводе _ выводе важна проверка готовности периферийного устройства, то есть состояние определяющего бита порта состояния. В некоторых микропроцессорах, это делается независимо от вида команды и при неготовности периферийного устройства микропроцессор переходит в состояние ожидания. Тем самым достигается согласование во времени работы микропроцессора и более медленных периферийных устройств. При асинхронном вводе _ выводе в программу включаются специальные команды проверки готовности.
Микропроцессор проверяет бит готовности с помощью одной или нескольких команд. Если бит установлен в единицу, то инициируется собственно ввод или вывод одного или нескольких слов данных. Если бит сброшен, то микропроцессор выполняет цикл из двух-трех команд, проверяющих состояние бита до тех пор пока периферийное устройство не будет готово к вводу выводу. Этот цикл называется циклом ожидания. Из-за него микропроцессор непроизводительно теряет время, что является главным недостатком программного ввода вывода, достоинство: простота реализации без дополнительных аппаратных затрат.
Ввод вывод по прерываниям лишен недостатка программного ввода вывода и применяется при работе в реальном времени. Периферийное устройство подает сигнал `запрос прерывания’ на соответствующий вход микропроцессора. Микропроцессор после выполнения текущей команды приостанавливает выполнение основной программы, вырабатывает сигнал подтверждения прерывания и переходит к подпрограмме обработки прерывания, расположенной в фиксированной области памяти. После выполнения этой подпрограммы происходит возврат к основной программе. Для реализации подпрограммы обработки прерывания в микропроцессоре должны выполнятся следующие действия:
- идентификация источника прерывания;
- сохранение состояния основных регистров микропроцессора с тем, чтобы обеспечить возможность возобновления прерванной программы;
- собственное выполнение программы обработки прерывания;
- восстановление запомненного состояния основных регистров микропроцессора;
- возврат к выполнению основной программы.
Данная последовательность действий может реализоваться в двух вариантах : с опросом периферийных устройств и по вектору прерывания. Наиболее распространенным является второй способ. В этом случае в ответ на сигнал подтверждения прерывания периферийное устройство посылает в микропроцессор параллельный двоичный код, вектор прерывания по которому управление передается соответствующей подпрограмме обслуживания прерываний. При наличии нескольких периферийных устройств возможна ситуация при которой во время обслуживания запроса прерывания от одного периферийного устройства поступает запрос от другого. Если оно более приоритетно, то происходит вложение прерываний ( т.е. прерывание прерывания). Для создания систем приоритетных прерываний используются контроллеры прерываний. С помощью специальных команд запрещающих прием запроса прерывания можно управлять способностью микропроцессора реагировать на запрос прерывания, например для защиты определенных критичных по времени частей программы, некоторые прерывания, например связанные с аварией питания замаскировать нельзя.
Ввод вывод в режим прямого доступа к памяти используют канал прямого доступа к памяти по которому массивы данных передаются непосредственно между периферийным устройством и АЗУ, минуя микропроцессор. Это позволяет достичь наибольшей скорости передачи, но требует специального контроллера прямого доступа к памяти. Периферийное устройство посылает в контроллер прямого доступа к памяти запрос, который транслируется контроллером в микропроцессор, на что микропроцессор отвечает сигналом подтверждения. При этом микропроцессор прекращает работу по выполнению текущей программы, переводит свои буферные регистры, подключенные к шине адреса и шине данных, в высоко эмпедансное состояние и прекращает выработку управляющих сигналов. В контроллер прямого доступа к памяти в его счетчики заносится адрес ячейки АЗУ с которой начинается массив данных и число слов в нем, а также взводится триггер прямого доступа к памяти. Адрес ячейки выдается затем на шину адреса и начинается обмен. При передаче каждого слова содержимое счетчиков в контроллере изменяется на единицу и обмен данными производиться автоматически пока триггер прямого доступа к памяти не сбросится сигналом переполнения или обнуления счетчика. Запрос снимается и микропроцессор возобновляет приостановленную программу.
Как в 86 32 разрядные микропроцессоры позволяют адресовать до 64К однобайтных или 32К двухбайтных регистров в пространстве отдельным от памяти. Дополнительно имеется возможность обращения к 32 битным портам. При операциях ввода вывода линии А16-А31 не используются в шине адреса. Адрес устройства задается либо в команде (только младший байт), либо берется из регистра DX (16 бит). Команды ввода вывода вызывают шинные циклы с активными сигналами OWRD, строковые команды обеспечивают блочный ввод вывод со скоростью превышающей аналогичные операции со стандартным контроллером DMA. В адресном пространстве ввода вывода область 0F8-0FF зарезервирована для использования сопроцессором. В защищенном режиме инструкции ввода вывода являются привилегированными это означает, что они могут исполняться задачами только с определенным уровнем привилегий определяемым полем IOPL, регистром флагов или битовой картой разрешения ввода вывода хранящейся в TSS. Несанкционированная попытка выполнения этих инструкций вызывает исключение 13.
Защищенный режим позволяет адресовать до 4 Гбайт физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 64 Кбайт виртуальной памяти каждой задачи. Режим виртуального 86 является особым состоянием задачи защищенного режима, в котором микропроцессор функционирует как 86, но с возможностью использования 32 разрядных адресов и операндов. Защищенный режим предназначен для обеспечения независимости выполнения нескольких задач, что подразумевает защиту ресурсов одной задачи от возможного воздействия другой. Основным защищаемым ресурсом является память, в которой хранятся коды, данные, и различные системные таблицы . Защищать требуется и совместно используемую аппаратуру обращение, к которой обычно происходит через операцию ввода вывода и прерывания. Защита памяти основана на использовании сегментации.
Сегмент _ это блок адресного пространства памяти определенного назначения. К элементам сегмента возможно обращение с помощью различных инструкций использующих разные режимы адресации для формирования адреса в пределах сегмента. Сегменты выделяются операционной системой, но в реальном режиме любая задача может переопределить значение сегментных регистров, задающих положение сегмента в пространстве памяти. В защищенном режиме прикладная программа может использовать только разрешенное для нее сегменты, выбирая их с помощью селекторов через предварительно сформулированные таблицы дескрипторов сегментов.
Селекторы _ это 16 битные указатели, загруженные в сегментные регистры.
Дескрипторы _ это структуры данных используемые для определения свойств программных элементов (сегментов, вентилей и таблиц). Дескриптор определяет положение в памяти размер занимаемой им области элемента (лимит), его назначение и характеристики защиты . Защита памяти с помощью сегментации не позволяет:
- использовать сегменты не по назначению;
- нарушать права доступа;
- адресоваться к элементам выходящим за лимит сегмента;
- изменять содержимое таблиц дескрипторов, т.е. параметров сегмента задачам без достаточных привилегий.
Защищенный режим предоставляет средства переключения задач состояния каждой задачи, т.е. значения всех связей с ней регистров может быть сохранено в специальном сегменте состояния задачи (TSS) на который указывает селектор в регистре задачи. При переключении задач достаточно загрузить новый селектор в TR и состояние предусматривающей задачи автоматически сохраняется в ее TSS. А в процессор загружается состояние новой, возможно и ранее прерванной задачи, и начнется ее выполнение. 4 уровневая иерархическая система привилегий предназначена для управления использованием привилегированных инструкций и доступом к дескрипторам. Нулевой уровень соответствует неограниченным возможностям доступа и отводится для ядра операционной системы. Уровень 3 имеет самые ограниченные права и предоставляется прикладным задачам. Сервисы, предоставляемые задачам могут находиться на разных уровнях привилегий. Передача управления между задачами контролируется вентилями, проверяющими правильность использования уровня привилегий. Через вентили задачи могут получить доступ только к разрешенным им сервисам других сегментов. Уровни привилегий относятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется поле привилегий ввода вывода, с помощью которого обеспечивается управление доступом к инструкциям ввода вывода и управление флагом прерываний. Дескрипторы и привилегии являются основой системы защиты. Дескрипторы определяют структуры элементов без, которых невозможно их использование, а привилегии определяют возможность доступа к дескрипторам и выполнение привилегированных инструкций. Любое нарушение защиты приводит к возникновению специальных исключений обрабатываемых ядром операционной системы.
Механизм виртуальной памяти позволяет любой задаче использовать логическое адресное пространство размером до 16К сегментов по 4 Гбайта. Для этого каждый сегмент в своем дескрипторе имеет специальный бит, который указывает на присутствие данного сегмента в оперативной памяти в текущий момент времени. Не используемый сегмент может быть выгружен из оперативной во внешнюю память, о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может восстановиться содержимое другого сегмента и в его дескрипторе делается пометка о присутствии. При обращении задачи к отсутствующему сегменту микропроцессор вырабатывает соответствующее исключение обработчик, которого и заведует виртуальной памятью в операционной системе. После свопинга страницы или сегмента выполнение задачи продолжается. Поэтому виртуализация памяти для прикладных задач прозрачна.
Дескрипторы имеют 8 байтный формат, назначение определяется полями байта управления доступа. Два стартовых байта содержат расширение полей базового адреса и лимита, бит дробности G определяющий в каких единицах задан лимит (0 в байтах, 1 в страницах по 4К). Дескрипторы сегментов кода и данных определяют базовый адрес, размер сегмента, права доступа (чтение, чтение/запись, только исполнение кода или исполнение/чтение), а для систем с виртуальной памятью еще и присутствие сегментов физической памяти. В байте управления доступом в этих дескрипторах бит S=1, бит Р присутствие в памяти, биты DPL— уровень привилегий сегмента, бит А — обращения, бит Е — определяет тип сегмента данных или кода, свойства сегмента определяет поле TYPE. В этом поле бит ED контролируемое направления задает расширение вверх, т.е. смещение не должно превышать значение лимита, или расширение вниз (для стека, у которого смещение должно превышать значение лимита). Бит В в предпоследнем байте дескриптора сегмента стека определяет разрядность используемого указателя стека. Бит WQ разрешение или запрет записи данных в сегмент. В сегмент кода запись невозможна, лимит указывает на его последний байт, а биты поля типа имеют следующие назначения: бит С _ подчиненность, при С=1 код может исполняться если текущий уровень привилегий CPL не ниже уровня привилегий дескриптора; DPL при С=0 управление к данному сегменту передается если DPL=CPL; бит R _ это разрешение или запрет чтения сегмента, запись в сегмент кода возможна только через псевдоним, т.е. сегмент данных с разрешенной записью имеющий те же значения базы и лимита; бит D в предпоследнем байте определяет разрядность адресов и данных по умолчанию.
Системные сегменты предназначены для хранения LDT и TSS. Их дескрипторы определяют базовый адрес, лимит от 1 до 64Кбайт, права доступа и присутствие сегментов физической памяти. В байте управления доступом байт S у них равен 0. Бит Р определяет действительность или недействительность данного сегмента. Поле DPL используется только в дескрипторах TSS. Поле типа определяет тип сегмента 2 _ LDT, 9 _ доступный TSS, В _ занятый TSS. Межсегментная передача управления непосредственно (командами JMP, CALL, INT, RET и IRET) возможно только к сегментам кода с тем же уровнем привилегий либо к подчиненным сегментам, уровень привилегий которых выше чем CPL (при этом CPL не изменяется). Для переходов с изменение уровней привилегий используются вентили иногда называемые шлюзами. Для каждого способа косвенной передачи управления имеются соответствующие вентили, их использование позволяет микропроцессору автоматически выполнять контроль защиты. Вентили вызова используются для вызова процедур со сменой уровня привилегий. Вентили задач используются для переключения задач. Вентили прерываний и ловушек определяют процедуру обслуживания прерываний. Вентили вызова позволяют автоматически копировать заданное число слов из старого стека в новый. Вентили прерываний отличаются от вентилей ловушек только тем, что они запрещают прерывания сбрасывая IF, а вентили ловушек не запрещают. Для каждого типа вентилей используются соответствующие дескрипторы вентилей.
В защищенном режиме имеется 4-уровневая система привилегий, которая управляет использованием привилегированных инструкций и доступом к дескрипторам. Уровни привилегий нумеруются от 0 до 3, нулевой имеет высшие привилегии. Уровни привилегий обеспечивают защиту задач изолируемых друг от друга локальными таблицами дескрипторов. Программы, операционные системы, обработчики прерываний и другое системное обеспечение могут включаться в виртуальное адресное пространство каждой задачи и защищаться системой привилегий. Каждая часть системы работает на своем уровне привилегий. Задачи, дескрипторы и селекторы имеют свои атрибуты привилегий. Привилегии задач действуют на выполнение инструкций и использование дескрипторов. Текущий уровень привилегий и задачи CPL определяются двумя младшими битами регистра CS, и может изменяться только при передаче управления к новому сегменту через дескриптор вентиля. Привилегии дескриптора задаются полем DPL байта управления доступом. DPL определяет наименьший уровень привилегий с которым возможен доступ к данному дескриптору. Привилегии селектора задаются полем RPL т.е. двумя младшими битами селектора. С помощью RPL можно урезать эффективный уровень привилегий EPL, который определяется как максимальное арифметическое из значений CPL и RPL. Контроль доступа к сегментным данным производится при исполнении команд загрузки селекторов в SS, DS, ES, FS и GS. Для получения доступа эффективный уровень привилегий EPL должен быть EPL DPL. Контроль типов и привилегий при передаче управления производится при загрузке селектора в регистр CS. Тип дескриптора на который ссылается данный селектор должен соответствовать выполняемой инструкции. Нарушение типа порождает исключение 13. Привилегии и битовая карта разрешения ввода вывода и управляет флагом прерываний IF. Уровень привилегий ввода вывода определяется полем IOPL регистра флагов. Значение IOPL можно изменить только при CPL=0.
Защита микропроцессора предназначена для предотвращения несанкционированного выполнения критических инструкций: команды HLT, которая останавливает микропроцессор и команд влияющих на сегменты кода и данных.
Механизмы защиты делятся на 3 группы:
- ограничение использования сегментов, например, запрет записи в только читаемый сегмент данных. Доступность использования только сегментов дескрипторы которых описаны в GDT и LDT;
- ограничение доступа к сегментам через правила привилегий;
- выделение привилегированных инструкций или операций, которые можно выполнять только при определенных уровнях CPL и IOPL.
Проверки, порождающие исключения можно тоже разделить на 3 группы:
- проверка при загрузке сегментных регистров;
- проверка ссылок операндов;
- проверка привилегий инструкций.
Для того, чтобы задачи не нарывались на срабатывание защиты, в систему команд введены специальные инструкции тестирования указателей. Они позволяют быстро удостовериться в возможности использования селектора или сегмента без риска порождения исключения.
Для многозадачных и многопользовательских операционных систем важна способность микропроцессора к быстрому переключению выполняемых задач. Операция переключения задач сохраняет состояние микропроцессора и связь с предыдущей задачей, загружает состояние новой задачи и начинает ее выполнение. Переключение задач выполняется по инструкции межсегментного перехода JMP или вызова CALL ссылающейся на сегмент состояния задачи TSS или дескриптор вентиля задачи в GDT или LDT. Переключение задач может происходить также по операциям и программным прерываниям и исключениям, если соответствующий элемент в IDT является дескриптором вентиля задачи. Дескриптор TSS указывает на сегмент, содержащий полное состояние микропроцессора, а дескриптор вентиля задачи содержит селектор указывающий на дескриптор TSS. Для возврата управления вызвавшей текущую или ей прерванной используется задачи инструкция IRET. Каждая задача должна иметь связанный с ней TSS. В формате TSS содержатся образы регистров микропроцессора, раздельные указатели стеков для уровней привилегий 0, 1, 2., и обратную ссылку на селектор TSS вызвавшей задачи. Кроме того, в TSS содержится битовая карта разрешения ввода вывода и бит отладочной ловушки Т. Карта разрешения ввода вывода расположена в конце TSS и имеет по одному биту на каждый адрес портов ввода вывода. Разрешению обращения соответствует единичное значение бита. Текущий TSS идентифицируется регистром задачи TR в нем содержится селектор, ссылающийся на дескриптор текущего TSS. Смена контекста сопроцессора при переключении задач автоматически не производится, однако микропроцессор обнаруживает первое использование сопроцессора после переключения задач и вырабатывает исключение 7, обработчик которого сам определяет, необходима ли смена контекста.
Страничное управление памятью
Страничное управление памятью является дополнительным средством для организации виртуальной памяти. Страницы не имеют прямой связи с логической структурой данных или программ. Селекторы можно рассматривать как логические имена модулей кодов и данных, страницы же представляют части этих модулей. Учитывая обычные свойства локальности кода и ссылок на данные в оперативной памяти в каждый момент времени надо хранить только небольшие части сегментов необходимые активным задачам. Эту возможность и обеспечивает страничное управление памятью.
Механизм страничного управления использует 2 уровневую табличную трансляцию линейного адреса в физический. Механизм имеет 3 части: каталог страниц, таблицы страниц и собственно страницы.
Регистр CR3 хранит физический адрес каталога страниц. Каталог страниц в 4 Кбайта имеет 1024 строки. Каждая строка содержит 20 старших бит адреса таблицы следующего уровня и признаки этой страницы. Каждая таблица страниц имеет 1024 строки аналогичного формата, но эти строки содержат базовый физический адрес и атрибуты самих страниц. Индексом поиска в каталоге является 10 старших бит линейного адреса, а индексом поиска в таблице является 12-21 биты линейного адреса. Физический адрес собирается из адреса страницы взятого из таблицы и младших 12 бит линейного адреса. Механизм защиты страниц 2 уровня привилегий: пользователь и супервизор. Пользователю соответствует уровень привилегий 3, супервизору уровни 0, 1 и 2. Обращение при каждой операции при доступе к памяти через 2 таблицы расположенные в памяти существенно снижает производительность микропроцессора. Для предотвращения этого замедления существует буфер ассоциативной трансляции TLB для хранения интенсивно используемы строк таблицы. Он представляет собой 4-канальную наборно-ассоциативную КЭШ память на 32 строки таблицы трансляции. Микропроцессоры Pentium и старше позволяют оперировать страницами размером в 4 Мбайта.
Режим виртуального 86 (V86)
Этот режим является особым состоянием задачи защищенного режима. В нем работает защита и механизм страничной переадресации. Основным различием реального и защищенного режимов является интерпретация сегментных регистров. В режиме V86 для получения линейного адреса содержимое сегментных регистров сдвигается на 4 разряда влево и суммируется с эффективным адресом. Один Мбайт адресуемого таким образом пространство с памятью страничной трансляции может отображаться в любую область 4 Гбайт физической памяти. Все программы, выполняемые в режиме V86, имеют уровень привилегий 3. Поэтому программы V86 выполняются со всеми проверками защиты. Прерывание V86 для полной эмуляции машины на микропроцессоре 86 обрабатывается особым образом. Все прерывания и исключения влекут собой смену уровня привилегий обратно к уровню операционной системы защищенного режима. Эта операционная система может распознать по образу регистра флагов в стеке, что прерывание пришло из V86. Далее операционная система может либо обработать это прерывание самостоятельно либо переслать его к операционной системе реального режима работающей в V86. В конечном итоге операционная система защищенного режима может эмулировать окружение обычной 86 машины. Прозрачно для приложения работающего в V86. Вход в режим V86 возможен либо выполнением инструкций IRET в 32 битном режиме, либо переключением задач на задачу, у которой в TSS образ регистра флагов имеет установленный в единицу бит VM. Выход из режима V86 возможен только при обработке прерывания. Если задача имеет CPL=0, то бит VM сбрасывается, и вызываемая задача будет выполняться в защищенном режиме. Если CPI>0, то генерируется исключение 13. Если прерывание вызывает переключение задач, то регистры с флагом VM сохраняются в TSS старой задачи. Новый режим устанавливается по TSS новой задачи. Значение VM не может изменяться никакими другими способами. Более того, его значение не читается.
Источник