Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 102

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 96 97 98 99 100 101 < 102 > 103 104 105 106 107 108 .. 528 >> Следующая

SS и ESP из сегмента состояния задачи TSS нового содержимого, которое
определяет начальный адрес стека для программ данного уровня привилегий.
Необходимо отметить, что переключение стека реализуется только при
обращении к неподчиненным сегментам программ (имеющих в дескрипторе
значение бита С = 0). Если через шлюз осуществляется вызов подчиненного
сегмента программ (значение бита С = 1), то переключение стека не
производится.
По команде RET производится восстановление из стека старого содержимого
регистров CS, EIP (IP) и SS, ESP (SP). Таким образом, одновременное
возвратом к исходной программе происходит и возвращение к старому стеку.
Команда RET проверяет значение CPL и два младших разряда извлекаемого из
стека старого содержимого CS, определяющие уровень привилегий программы,
к которой осуществляется возврат. Команда выполняется только в том
случае, когда значение этих битов больше или равно CPL, т. е. возврат
осуществляется к программе с таким же или меньшим уровнем привилегий.
Нарушение командами JMP, CALL, RET указанных правил обращения к сегментам
программ вызывает исключение типа #GP ("нарушение защиты").
Чтобы избежать частых нарушений хода выполнения программы из-за
несоблюдения правил доступа к сегментам, в набор команд процессора
введены специальные команды, используемые для проверки различных условий
доступа. Команда LAR осуществляет загрузку в регистр байта доступа
сегмента, выбираемого с помощью селектора, который содержится в
адресуемой ячейке памяти или регистре. После этой операции процессор
может произвести побитный анализ содержимого байта доступа, определяя
возможности обращения к данному сегменту. Команда LSL загружает в регистр
значение границы сегмента, который выбирается таким же образом, как
командой LAR. Используя полученное значение этой границы, процессор может
организовать контроль формирования адреса, чтобы избежать прерывания
программы при выходе за пределы адресуемого сегмента. Команды VERR, VERW
проверяют
РАБОТА ПРОЦЕССОРА В ЗАЩИЩЕННОМ И РЕАЛЬНОМ РЕЖИМАХ
? -сегменты программы С ~) - шлюзы вызова
Рис. 2.50. Варианты реализации передачи управления с использованием шлюза
вызова
возможности записи в сегмент данных и чтения из сегмента программ,
устанавливаемые соответствующими битами дескрипторов. Если запись или
чтение разрешены, то устанавливается значение признака ZF = 1 в регистре
EFLAGS. Предварительный анализ значения этого признака позволяет избежать
запрещенных видов обращения к данному сегменту, вызывающих прерывание
текущей программы. Адресация необходимого сегмента при выполнении команд
VERR, VERW производится таким же образом, как и командой LAR.
Реализация ввода-вывода с помощью команд IN, OUT, INS, OUTS в защищенном
режиме производится с учетом CPL выполняемой программы. Величина CPL
сравнивается со значением поля IOPL в регистре EFLAG. Ввод/вывод
производится только при выполнении условия CPL >= IOPL. Нарушение этого
условия вызывает исключение типа #GP, если доступ к адресованному
командой порту не разрешен специальной битовой картой ввода-вывода,
задаваемой при решении отдельных задач.
2.7.4. ПОДДЕРЖКА МНОГОЗАДАЧНОГО РЕЖИМА
Многозадачностью называется такой способ организации работы системы, при
котором в ее памяти одновременно содержатся программы и данные для
выполнения нескольких процессов обработки информации (задач). При этом
должна обеспечиваться взаимная защита программ и данных, относящихся к
различным задачам, а также возможность перехода от выполнения одной
задачи кдругой (переключение задач). Процессоры семейства Р6 имеют
эффективные средства поддержки многозадачного режима, реализующие защиту
и быстрое переключение задач. В качестве таких средств используется
специальная структура данных, организованная в виде сегмента, который
называется сегментом состояния задачи TSS. Аппаратными средствами для
поддержки многозадачности служит
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
16-разрядный регистр задачи TR, в который заносится селектор дескриптора
TSS, и связанный с TR программно недоступный 64-разрядный регистр, в
который из GDT загружается 8-байтовый дескриптор TSS.
Сегмент состояния задачи TSS, структура которого показана на рис. 2.51,
состоит из двух частей. Обязательная часть TSS объемом 104 байта содержит
всю информацию, необходимую процессору для решения данной задачи.
Дополнительная часть может содержать какую-либо информацию об этой
задаче, используемую операционной системой (имя задачи, комментарии и т.
д.), и битовые карты, одна из которых определяет номера прерываний, для
которых реализуется виртуализация, другая указывает адреса устройств
ввода-вывода, к которым разрешено обращение при выполнении данной задачи.
Рассмотрим содержание обязательной части сегмента TSS.
Первые два байта в сегменте TSS используются для хранения селектора TSS
предыдущей задачи, при выполнении которой произошел вызов данной задачи.
Предыдущая << 1 .. 96 97 98 99 100 101 < 102 > 103 104 105 106 107 108 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed