Организация побайтного ввода вывода – —

5. Организация системы ввода-вывода в эвм

5.1. Назначение и основные требования к системе ввода-вывода эвм

Назначение системы ввода-вывода– это обеспечение взаимодействия центральной части машины с внешней средой (пользователи, устройства, процессы), которое реализуется периферийными (или внешними) устройствами (ПУ или ВУ).

Связь процессора с периферийными устройствами осуществляется:

  1. Через аккумулятор (регистр общего назначения).

  2. Через оперативную память.

Оперативная память может непосредственно взаимодействовать с внешним устройством (ВУ) в режиме прямого доступа в память (ПДП).

Основные проблемы ввода-вывода.

  1. Существует большое количество ВУ с различными параметрами:

  1. По скорости передачи данных.

  2. Формату передачи данных (устройства последовательного, параллельного представления информации и т.д.).

  3. Различным размерам передаваемых данных (биты, байты, слова, блоки, секторы).

  4. Количеству выполняемых функций (чтение, запись, перемотка, подсчет, измерение).

  1. Различные скорости работы центральной части машины и ВУ (требуется многоуровневая буферная память).

  2. Асинхронность работы центральной части машины и ВУ (согласование операций в устройствах).

Требования к системе ввода-вывода

  1. Гарантировать эффективное согласование центральной части машины и ВУ с целью достижения максимальной производительности.

  2. Обеспечение распределения ВУ между одновременно выполняемыми задачами в системе (большинство машин работают в многозадачных режимах).

  3. Обеспечение управления каждым конкретным внешним устройством.

  4. Обеспечение дружественного интерфейса с пользователем.

5.2. Архитектура систем ввода-вывода

Существует два основных способа организации системы ввода вывода.

  1. Прямой ввод-вывод (рис. 5.1).

  2. Косвенный (канальный) ввод-вывод (рис. 5.2).

1 ОП

Системная шина

ЦП

2

ОП Контроллер ВУ Контроллер ВУ

ВУ ВУ1 ВУ2 ВУ3

Механизм

Носитель информации

Рис.5.1

При прямом вводе-выводе работа внешних устройств и памяти управляется центральным процессором, и все они подключаются к одной системной шине, при этом в зависимости от варианта подключения памяти может быть: в случае 1 – одно пространство адресов памяти и портов внешних устройств, а в случае 2 – отдельные адреса обращения к памяти и внешним устройствам. Процесс взаимодействия внешних устройств и центральной части машины определяется интерфейсом ввода вывода, под которым понимается совокупность сигналов, линий связи и алгоритмов управления, обеспечивающих заданный протокол взаимодействия внешних устройств и процессора. Под протоколом понимается последовательность формирования прямых и квитирующих сигналов взаимодействия (ответный сигнал называется квитирующим).

ВУ1 ВУ2 ВУ3 ВУ4

Контроллер 1 Контроллер 2

Канал 1

(Мультиплексный)

ЦП ОП

Канал 2 Контроллер ВУ

(Селекторный)

Рис. 5.2

На рис 5.2 показан процесс ввода-вывода по способу, называемому канальным.

Каналы делятся на следующие.

  1. Мультиплексные (обслуживают много ВУ, но медленных).

  2. Селекторные (обслуживают мало ВУ, но быстродействующих).

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

Состав и сравнение функций контроллеров и каналов

Контроллер

  1. В текущий момент времени он выполняет одну команду ввода-вывода, получаемую от процессора или канала, и одновременно обслуживает одно внешние устройство.

В его функции входит:

  1. Опознание своего адреса выборки.

  2. Подтверждение готовности внешних устройств.

  3. Управление операцией во внешнем устройстве.

  4. Согласование форматов данных.

  5. Согласование скоростей передачи (буферизация).

  6. Фиксация момента и характера операции ввода-вывода.

Контроллер должен содержать:

  1. Селектор адреса (логическая схема, выдающая разрешающий сигнал на один адрес).

  2. Регистры управления (содержит команду) и состояния. Состояния характеризуются следующими битами: DONE,BUSY,ERROR, часто применяются биты приоритета.

  3. Буферные регистры данных, которые служат для согласования форматов и скоростей передачи.

Канал

  1. Выполняет целую канальную программу из многих команд.

  2. Допускает одновременное управление несколькими внешними устройствами.

В его функции входит:

  1. Опознание своего адреса и подтверждения готовности.

  2. Прием команд процессора, инициализирующих работу канала, и нахождения в памяти своей канальной программы.

  3. Поиск контроллера и внешнего устройства, участвующего в операции, и проверки их готовности.

  4. Запуск канальной программы и управление обменом.

  5. Сообщение центрального процессора о завершении операции и всей программы.

Канал представляет собой специализированный процессор с расширенными управлениями, и ограниченный арифметическими возможностями.

studfiles.net

Организация и особенности использования однокристальных микроконтроллеров (продолжение) Организация ввода-вывода информации в мк 1816

Для связи МК 1816 с объектом управления, для ввода и вывода информации используется 27 линий. Эти линии сгруппированы в 3 порта по 8 линий в каждом и могут быть использованы для вывода, ввода или для вывода — ввода через двунаправленные линии. Кроме портов ввода — вывода, имеются 3 входные линии, сигналы на которых могут изменять ход программы, а именно:

  • линия ЗПР* используется для ввода в МК сигнала запроса прерывания от внешнего источника;

  • линия Т0 предназначена для ввода тестирующего сигнала от двоичного датчика объекта управления. Кроме того, под управлением программы (ENT0 CLC — команда «разрешение выдачи сигнала синхронизации») по этой линии из МК может выдаваться сигнал синхронизации;

  • линия Т1 используется для ввода тестирующего сигнала или в качестве входа счетчика событий (по команде STRT CNT — «запуск счетчика событий»).

Порты (или каналы) ввода — вывода Р1 и Р2.Каждая линия портов Р1 и Р2 может быть программным путем настроена на ввод, вывод или на работу с двунаправленной линией передачи. Специальная схемотехника цепей вывода портов Р1 и Р2, обеспечивающая квазидвунаправленную работу портов, несмотря на то, что выходы схем вывода статически заперты. На нижеследующем рисунке представлена схема одной линии (одного разряда) порта.

Каждый контакт ввода — вывода портов Р1 и Р2 является выходом с открытым стоком и входом с высоким импедансом, соответствующим по логическому уровню сигналу 1. Линия постоянно подключена к источнику электропитания +5 В через резистор большого сопротивления (50 КОм), чем обеспечивается для единичной стандартной ТТЛ-нагрузки достаточный ток, соответствующий логической 1. В то же время потенциал в линии может быть приближен к потенциалу «земли» (уровень логического 0) нулевым сигналом на выходе стандартной ТТЛ-схемы. Чем и обеспечивается возможность использовать статически запертую схему вывода как для ввода, так и для вывода информации.

При передаче на выход из МК уровня 1 по сигналу ЗАПИСЬ для ускорения переходного процесса от 0 к 1 на короткое время (0,5 мкс) открывается верхний МОП-транзистор с относительно низким сопротивлением (5 КОм). При передаче в линию уровня 0 открытым оказывается нижний МОП-транзистор выходной схемы с сопротивлением 3 КОм. Это сопртивление достаточно малое для того, чтобы обеспечить отвод тока из входной цепи ТТЛ-нагрузки.

Для того, чтобы настроить некоторую линию на режим ввода в МК, необходимо перед этим в буферный D-триггер этой линии записать 1. При этом нижний МОП-транзистор выходной схемы окажется закрытым и это обеспечит ТТЛ-источнику вводимого сигнала высокоимпедансную нагрузку. Сигнал системного сброса СБРОС* автоматически записывает во все линии портов Р1 и Р2 сигнал 1.

Квазидвунаправленная структура портов Р1 и Р2 для программиста МК 1816 специфична тем, что в процессе ввода информации выполняется операция логического И над вводимыми данными и текущими (последними выводимыми) данными. Для того, чтобы можно было осуществить ввод, программист должен следить за тем, чтобы в соответствующих линиях ввода сохранялось значение 1. Квазидвунаправленные буферные схемы портов Р1 и Р2 и команды логических операций ANL (логическое И аккумулятора с маской в регистре) и ORL (логическое ИЛИ аккумулятора с непосредственным операндом или с маской в регистре или в ячейке памяти) представляют программисту эффективное средство маскирования для обработки однобитовых входов и выходов в МК.

Порт ввода — вывода BUS (или DB).Порт ВUS представляет собой двунаправленный буфер с тремя состояниями и предназначен для побайтного ввода, вывода или ввода-вывода информации. Если порт ВUS используется для двунаправленных передач, то обмен информацией через него выполняется по командам МОVХ. При выводе байта генерируется стробирующий сигнал ЗП*, а выводимый байт фиксируется в буферном регистре. При вводе байта генерируется стробирующий сигнал ЧТ*, но вводимый байт в буферном регистре не фиксируется. В отсутствие передач порт ВUS по своим выходам находится в высокоимпедансном состоянии.

Если порт ВUS используется как однонаправленный, то вывод через него выполняется по команде OUTL, а ввод — по команде INS. Вводимые и выводимые через порт ВUS байтгы можно маскировать с помощью команд AND и OR, что позволяет выделять и обрабатывать в байте отдельный бит или группу бит. Для этого предварительно по команде «OUTL BUS,А» в порт ВUS из аккумулятора должна быть загружена маска. В МК-системах простой конфигурации, когда порт BUS не используется в качестве порта-расширителя системы, обмен выполняется по командам INS, OUTL и MOVX. Возможно попеременное использование команд OUTL и MOVX. Однако при этом необходимо помнить, что выводимый по команде OUTL байт фиксируется в буферном регистре порта BUS, а команда MOVX уничтожает содержимое буферного регистра порта.

В МК-системах, имеющих внешнюю память программ, порт BUS используется для выдачи адреса внешней памяти и для приема команды из внешней памяти программ. В таких системах использование команды «OUTL BUS» недопустимо, так как фиксация в буферном регистре порта ВUS выводимого байта явится причиной неправильной выборки сладующей команды.

В командах ввода — вывода информации имя порта, через который осуществляется ттередача, содержится в коде команды. Следовательно (из-за невозможности динамического определения имени порта в каком-либо рабочем регистре), отсутствует возможность использования одной программы управления идентичными устройствами, подключенными к разным портам. Это вынуждает программиста загружать в память программ две или более по существу (но не по кодам) одинаковых программ управления однотипными устройствами. Однако динамический выбор идеитичных устройств, а следовательно, и использование одной параметризуемой подпрограммы управления этими устройствами возможны в том случае, если обращение к внешним портам ввода — вывода выполнять по командам обращения к внешней памяти MOVX.

http://www.kosmos.mk.ua/usmtu/mpk/k1816/k1816org4.html

studfiles.net

СИСТЕМЫ ВВОДА ВЫВОДА

СИСТЕМЫ ВВОДА ВЫВОДА

Организация ввода — вывода микропроцессорного устройства

Ввод _ вывод _ это процесс обмена данными между ядром микропроцессорного устройства и периферийными устройствами. В микропроцессорном устройстве применяют три режима:

  • программный;
  • по прерываниям;
  • прямой доступ к памяти.
Группа бит, к которым обращается микропроцессор при вводе _ выводе, называется портом или регистром ввода _ вывода. При вводе выводе периферийные устройства представлены следующей программной моделью (рис.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 группы:

  1. ограничение использования сегментов, например, запрет записи в только читаемый сегмент данных. Доступность использования только сегментов дескрипторы которых описаны в GDT и LDT;
  2. ограничение доступа к сегментам через правила привилегий;
  3. выделение привилегированных инструкций или операций, которые можно выполнять только при определенных уровнях CPL и IOPL.
Проверки, порождающие исключения можно тоже разделить на 3 группы:
  1. проверка при загрузке сегментных регистров;
  2. проверка ссылок операндов;
  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 не может изменяться никакими другими способами. Более того, его значение не читается.

skachivaem.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *