Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Стековая архитектура.docx
Скачиваний:
7
Добавлен:
01.08.2019
Размер:
330.14 Кб
Скачать
  • LDT (Local Descriptor Table) - локальная дескрипторная таблица;

  • Idt (Interrupt Descriptor Table) - таблица дескрипторов прерываний;

  • TSS (Task Status Segment) - сегмент состояния задачи.

Регистр глобальной таблицы дескрипторов GDTR (Global Descriptor Table Register) и регистр таблицы дескрипторов прерываний IDTR (Interrupt Descriptor Table Register) содержат 32-разрядные базовые адреса и 16-разрядные размеры таблиц GDT и IDT. Эти таблицы являются общими для всех задач. В регистр локальной таблицы дескрипторов LDTR (Local Descriptor Table register) и регистр задачи TR (Task Register) заносятся 16-разрядные селекторы дескрипторов, позволяющие обратится к таблице LDT и сегменту TSS, которые определены для каждой отдельной задачи. С каждым из этих регистров связан программно недоступный регистр дескриптора сегмента. Загрузка LDTR и TR вызывает автоматическую загрузку самих дескрипторов, содержащих 32-битные поля линейного базового адреса и размера, а также полей атрибутов соответствующих сегментов в связанные с ними невидимые регистры дескрипторов.

Регистры отладки (Debug Register) предназначены для задания и управления отладочными точками останова.

Регистры DR0-DR3 (Linear Breakpoint Address) хранят 32-разрядные линейные адреса точек останова.

Регистры DR4, DR5 в существующих процессорах не используются, обращение к ним эквивалентно обращению к регистрам DR6, DR7. В процессоре Pentium и выше при включенном расширении отладки обращение к этим регистрам вызывает исключение недопустимого кода операции (#UD).

Регистр DR6 (Breakpoint Status) - регистр состояния, указывающий причину останова в контрольной точке.

Регистр DR7 (Breakpoint Control) - регистр управления, задающий условия останова в контрольных точках.

Состав регистров тестирования (Test Register) варьируется в зависимости от типа процессора. Процессоры 80386 имели только два регистра, предназначенных для тестирования буфера страничной переадресации - TR6 и TR7, для процессора 486 состав регистров расширен за счет добавления возможности тестирования внутренней кэш-памяти - TR3-TR5. В процессорах Pentium и выше тестовые регистры входят в группу модельно-специфических регистров MSR. Для этих процессоров обращение к регистрам TRx вызывает исключение #UD недопустимого кода операции.

Модельно-специфические регистры MSR. Модельно-специфические регистры MSR (Model-Specific Registers) предназначены для управления расширениями отладки, мониторингом производительности, машинным контролем, кэшированием областей физической памяти и другими функциями. Их назначение привязывается к архитектуре конкретного процессора, состав меняется от модели к модели, доступ привилегирован. Команды обмена с этими 64-битными регистрами WRMSR и RDMSR подразумевают, что данные находятся в паре ЕDХ:ЕАХ, а номер указывается в регистре ЕСХ, что позволяет неограниченно (до 4 миллиардов) увеличивать число этих регистров.

Доступность регистров различных групп зависит от режима работы процессора и уровня привилегий задачи.

5. Режимы работы универсальных микропроцессоров

Запуск микропроцессорной системы означает запуск операционной системы (ОС), которая в процессе его работы постоянно хранится в памяти. В той же памяти хранятся также прикладные программы. ОС инициирует прикладную программу, причем в том месте прикладной программы, где используется периферийное устройство, управление передается ОС, то же происходит и при возникновении прерывания от периферийного устройства. По окончании работы операционной системы возобновляется функционирование прикладной программы.

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

программным прерыванием, и при ее поступлении выполняется одна и та же последовательность действий:

  1. содержимое программного счетчика заносится в системный стек;

  2. содержимое регистра состояния заносится в системный стек;

  3. в регистре состояния изменяется разряд режима;

  4. в программный счетчик помещается адрес подпрограммы ОС.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]