Программное обеспечение вычислительной системы
Лекция, 20 Декабря 2012, автор: пользователь скрыл имя
Описание работы
Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и в непрерывном взаимодействии. Между программами, как и между физическими узлами и блоками существует взаимосвязь – многие программы работают, опираясь на другие программы более низкого уровня. Уровни программного обеспечения (ПО) представляют собой пирамидальную конструкцию. Каждый следующий уровень опирается на программное обеспечение предшествующих уровней.
Файлы: 1 файл
L_SPPO.doc
— 510.00 Кб (Скачать файл)
15
+
Регистр IP
=
15
|
|
Физический
адрес
Рис.4. Схема определения физического адреса для микропроцессоров 8086/88
Прерывания
Микропроцессоры Intel 8086/88 поддерживают 256 прерываний. Каждое из них имеет свой номер и ISR. Адрес точки входа в ISR называется вектором прерываний и хранится в специальной таблице, называемой таблицей векторов прерывания (ТВП). Код ISR может располагаться в любом месте памяти. Поэтому вектор прерывания занимает 4 байта:
- 2 байта отводится на значение сегмента адреса – значение регистра CS;
- 2 байта – на значение смещения, устанавливаемое в регистре IP.
Вся ТВП занимает 256*4 = 1024 байта и хранится в оперативной памяти, начиная с адреса 0000:0000.
При возникновении прерывания процессор помещает в стек 6 байт:
- текущее значение регистра CS;
- текущее значение регистра IP;
- 2 байта флагов процессора;
- в CS и IP устанавливаются значения из ТВП, задающие начальный адрес ISR.
Прерыванию «0» соответствует вектор прерывания по адресу 0000:0000.
Прерыванию «1» соответствует вектор прерывания по адресу 0000:0004h.
Прерыванию «2» соответствует вектор прерывания по адресу 0000:00008h.
………………………………………………………………………………
В процессе функционирования ПК могут встретиться 4 типа прерываний:
- Аппаратные.
Они возникают как результат внешних событий, и их генерирует специальная микросхема ПК i8259A – программируемый контроллер прерываний (PIC). Она рассчитана на 8 входов запросов прерываний (IR – Interrupt Request). Сигналы на ней возбуждают внешние устройства: таймер, клавиатура, дисководы и т.д. Выход этой микросхемы подается на специальный вход процессора INTR. Этот вход является маскируемым: если флаг IF равен 1, то процессор реагирует на прерывания по этой линии, флаг IF сброшен в 0, то – нет;
- Немаскируемые прерывания.
Процессор, кроме входа INTR, имеет вход немаскируемых прерываний NMI. Сигнал по этому входу не может быть блокирован программным образом и вызывает прерывание с номером «2». Это прерывание имеет более высокий приоритет, чем по входу INTR и используется для организации реакции процессора на критические ситуации.
- Программные прерывания.
Осуществляется по программной инструкции INT(«номер прерывания»).
- Исключительные ситуации.
Генерация внутренних прерываний
процессором при возникновении
необычных условий при
Особенности архитектуры микропроцессоров i80x86
Под обозначением i80x86 будем понимать любые 32-битовые микропроцессоры, имеющие такой основной набор команд, как и в первом 32-битовом микропроцессоре Intel 80386.
- Реальный и защищенный режимы работы процессора
Первым микропроцессором, на базе которого была создана IBM PC, был 16-ти разрядный микропроцессор Intel 8088. Он отличается от первого 16-битового микропроцессора Intel 8086 тем, что у него была 8-битовая шина данных, а не 16-ти битовая как у 8088. Эти микропроцессоры были предназначены для работы в однозадачном режиме, специальных аппаратных средств для поддержки мультипрограммных ОС в них не было. Поэтому для совместимости с первыми компьютерами (программных продуктов было создано уже много) в последующих версиях микропроцессоров была реализована возможность использовать их в двух режимах – реальном (real mode – так назвали режим работы первых 16-битовых микропроцессоров) и защищенном (protected mode – означает, что параллельные вычисления могут быть защищены аппаратно-программными механизмами)
В 16-ти битовых микропроцессорах i80x86 обращение к памяти в 1 Мбайт производилось посредством механизма сегментной адресации. Этот механизм увеличивал количество разрядов, участвующих в указании адреса ячейки памяти, с 16 до 20 и тем самым увеличивал объем адресуемой памяти от 64 Кбайт (216) до 1 Мбайт (220).
В защищенном режиме работы определение физического адреса осуществляется совершенно иначе. Прежде всего используется сегментный механизм для организации виртуальной памяти. При этом адреса задаются 32-битовыми значениями. Для изучения всего этого рассмотрим новые архитектурные возможности микропроцессора i80x86.
- Новые системные регистры микропроцессоров i80х86
- 32-битовый указатель команды EIP , младшие 16 разрядов есть регистр IP микропроцессора i8086/88;
- 32-битовый регистр флагов EFLAGS, младшие 16 разрядов есть регистр FLAGS микропроцессора i8086/88;
- 32-битовые регистры общего назначения EAX, EBX, ECX, EDX, а также ESP, EBP, ESI, EDI, а их младшие 16 разрядов есть регистры микропроцессора i8086/88: AX, BX, CX, DX, SP, BP, SI, DI;
- 16-битовые сегментные регистры CS, SS, DS, ES, FS, GS. При каждом из этих регистров есть недоступные никому, кроме собственно микропроцессора, 64-битовые регистры, в которые загружаются дескрипторы соответствующих сегментов;
- 16-битовый регистр-указатель на локальную таблицу сегментов текущей задачи – LDTR. При нем также имеется «теневой» (скрытый от программиста) 64-битовый регистр, в который микропроцессор заносит дескриптор, указывающий на таблицу дескрипторов сегментов задачи, описывающих ее локальное виртуальное адресное пространство;
- 16-битовый регистр-указатель задачи TR (task register). Указывает на дескриптор в глобальной таблице дескрипторов, позволяющий получить доступ к дескриптору задачи TSS – информационной структуре, которая поддерживает микропроцессор для управления задачами;
- 48-битовый регистр GDTR глобальной таблицы GDT (global descriptor table), содержащий как дескрипторы общих сегментов, так и специальные системные дескрипторы;
- 48-битовый регистр IDTR таблицы дескрипторов прерываний. Сдержит информацию, необходимую для доступа к таблице прерываний IDT.
- 32-битовые управляющие регистры CRO, CR1, CR2, CR3. Регистр CR0 содержит флаги, определяющие режим работы микропроцессора. Регистр CR1 предназначен для размещения в нем адреса подпрограммы обработки страничного исключения. Регистр CR3 содержит номер физической страницы, в которой располагается таблица каталогов таблиц страниц текущей задачи.
- Адресация в 32-разрядных микропроцессорах i80х86 при работе в защищенном режиме
Для организации эффективной и надежной работы ПК в мультипрограммном режиме необходимо, чтобы:
- у каждого вычислительного процесса было собственное (локальное) адресное пространство, которое бы не пересекалось с адресными пространствами других задач;
- существовало общее (разделяемое) адресное пространство.
Поэтому в микропроцессорах i80х86 реализован сегментный способ организации распределения памяти. Помимо этого, может быть задействована и страничная трансляция.
Сегментная организация виртуальной памяти состоит в том, что программа разбивается на логические элементы (например, блоки, процедуры) ─ так называемые сегменты разной длины, которые размещаются в памяти как до определенной степени самостоятельная единица. Логически обращение к элементам программы будет представляться как указание имени сегмента и смещения относительно начала этого сегмента. Физическое имя сегмента (его порядковый номер) будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу. Таким образом, адрес для этого способа состоит из двух полей: номер сегмента и смещение относительно сегмента. Каждый сегмент, размещаемый в памяти, имеет соответствующую информационную структуру, называемую дескриптором сегмента:
Старшее двойное слово дескриптора
31
|
База сегмента (биты 31-24) |
G |
D |
0 |
0 |
Биты 19-16 поля Limit |
P |
DPL |
S |
Type |
A |
База сегмента (биты 23-16) |
Базовый адрес сегмента (биты 15-0) |
Байт прав доступа | ||||||||||
Limit-размер (предел) сегмента (биты 15-0) | |||||||||||
31
Первое (младшее) двойное слово дескриптора
Рис.1. Дескриптор сегмента
При переключении микропроцессора в защищенный режим он начинает совершенно другим образом, чем в реальном режиме, вычислять физические адреса команд и операндов. Прежде всего, содержимое сегментных регистров интерпретируется иначе: считается, что там содержится не адрес начала сегмента, а номер соответствующего сегмента. Каждый сегментный регистр (в этом случае его называют селектор сегмента) разбивается на три поля:
- поле индекса ─ старшие 13 битов (3-15). Определяют номер сегмента:
- поле индикатора таблицы сегмента ─ бит с номером 2. Определяет часть виртуального адресного пространства.
- поле уровня привилегий ─ биты 0 и 1. Указывает запрашиваемый уровень привилегий.
Страничная организация виртуальной памяти состоит в том, что все фрагменты программы, на которые она разбивается произвольным образом, имеют одинаковую длину. Эти одинаковы части называют страницами и говорят, что память разбивается на физические страницы, а программа ─ на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть ─ во внешней. Величина страницы выбирается кратной степени двойки. Таким образом, вместо одномерного адресного пространства можно говорить о двумерном. Первая координата адресного пространства ─ это номер страницы, а вторая ─ номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Pp,i), а виртуальный адрес ─ парой (Pν,i), где Pν ─ номер виртуальной страницы, Pp ─ номер физической страницы, i ─ индекс ячейки внутри страницы. Количество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы ─ объем возможной виртуальной памяти, которой может воспользоваться программа. При это нет необходимости ограничивать число виртуальных страниц числом физических, то есть не поместившиеся страницы можно размещать во внешней памяти, которая в этом случае служит расширением оперативной. Для отображения виртуального адресного пространства задачи на физическую память для каждой задачи, как и в случае сегментного способа, необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий дескриптор.