Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Механизмы аппаратной поддержки операционных систем. Учебное пособие
.pdf
Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Рис. 15 – Сегментно-страничная адресация
31

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
4. Аппаратные режимы процессоров х86
Общая характеристика режимов
История архитектуры процессоров Intel семейства х86 началась с
16-разрядного процессора 8086 и его модификаций - 80186 и 80286 с
один возможным режимом работы.
Дальнейшее технологическое развитие семейства привело к
созданию линейки 32-разрядных процессоров, начиная с модели 80386.
Эта линейка носит обобщенное название х86-32. Эти процессоры
обладали двумя возможными режимами работы, имея полную
программную совместимость с предыдущими моделями «снизу-вверх».
Дальнейшее расширение разрядности этого семейства Intel не
планировал. 64-разрядной планировалась другая, несовместимая с х86,
архитектура процессоров под названием IA-64.
Продолжателем расширения разрядности процессоров х86 явилась
компания AMD, расширившая 32-разрядную архитектуру х86-32 до 64разрядной под названием AMD64. Идеологически ее можно называть
х86-64. Процессоры х86-64 имели три аппаратных режима работы и
программную совместимость с предыдущей линейкой.
Позже Intel был вынужден приобрести лицензию на эту
архитектуру под названием EM64T.
Рис.16 – История архитектуры х86
32

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Современные 64-разрядные процессоры архитектуры х86 (или
Intel Architecture 86) имеют три режима работы и два под-режима:
- режим реальных адресов, сокращенно – «реальный режим» (real
mode –R-mode);
- защищенный режим (protected mode – P-mode). В защищенном
режиме существует аппаратный под-режим «виртуального процессора
8086» (V86) для 16-разрядных программ;
- 64-разрядный режим. Имеет названия: long mode или IA-32e. В
64-разрядном режиме существует аппаратный под-режим
«совместимости» для 32-разрядных программ.
Рис.17 – Диаграмма режимов процессоров х86-64
Реальный режим. В него процессор переходит после включения
или перезагрузки. Исполняет только 16-разрядные программы, то есть
внутрисегментные адреса данных и команд должны быть 16-разрядные.
Шина адреса процессора в реальном режиме 20 бит, объем
адресуемой памяти 2
20
байтов ( 1 Мбайт). В этом режиме процессор не
оказывает аппаратной поддержки операционной систем для
33

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Режим
Intel
AMD
32-разрядный
режим
Режим реальных адресов
IA-32
Legacy mode
Защищенный режим
64-разрядный
режим
Режим совместимости
IA-32e
Long mode
64-разрядный режим
Характеристика
Реальный режим
Защищенный режим/64-разрядный
Система команд
Команды
реального режима
Команды реального режима и
системные команды
Длина операндов
8, 16, 32-бит
8,16,32 /64 бит
Адресуемая
физическая память
2
20
байтов (1Мб)
2
32
байтов (4 Гб) / 2
52
байтов (4Пб)
Адресация памяти
Сегментная:
Сегментная: с 32 /64-разр.сме-
организации многозадачного режима исполнения программ и защиты
ресурсов.
Защищенный режим. Является основным режимом процессоров.
Исполняемые программы в этом режиме должны иметь 32-разрядную
внутрисегментную адресацию. Адресное пространство адресуемой
физической памяти 232 байтов (4 Гбайт).
Поддержка процессором динамического управления памятью,
переключения процессов, механизмов защиты ресурсов.
64-разрядный режим. Процессор использует 64-разрядную
внутрисегментную адресацию. По основным характеристикам режим
практически аналогичен защищенному режиму, но поддерживает
большее адресное пространство физической памяти – 2
52
байт (4
Петабайт). В «длинный режим» процессор можно перевести
программно только из защищенного режима.
виртуальный 8086 – под-режим внутри защищенного режима
для исполнения 16-разрядных программ без переключения в реальный
режим.
режим совместимости – под-режим в 64-разрядном режиме для
исполнения 32-разрядных программ без переключения процессора в
защищенный режим.
Официальная терминология названий режимов у производителей
Сравнительные характеристики реального и защищенного /64-
разрядного режимов процессоров
34

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
с 16-разрядным
смещением.
Размер сегмента до
2
16
байт
щением. Размер сегмента до 2
20
байт
Страничная: с 32 /64-разрядным
смещением. Размер сегмента до 2
32 /
2
64
байт
Аппаратная
поддержка
«виртуальной
памяти»
нет
да
Объем виртуальной памяти – до 2
46
байтов (64 Тб) / 278 байтов
Аппаратная
поддержка
многозадачности
нет
да
Аппаратная
поддержка
защиты ресурсов
нет
да
Защита сегментов по доступу и по
уровню привилегий,
привилегированные команды,
расширенный набор системных
исключений
Структура
исполняемой
программы
.exe, .com
.exe
Организация
прерываний
Таблица
прерываний,
размещается с
адреса 0000:0000
Таблица дескрипторов прерываний
размещается по усмотрению
операционной системы
Аппаратная
эмуляция
программных сред
нет
да
среда реального режима / среда
защищенного режима
Любой процессор архитектуры х86 после своего включения
(аппаратного сброса) находится в реальном режиме работы.
В реальном режиме он повторяет архитектуру 16-разрядного
микропроцессора 8086 - базового процессора семейства х86. Это
проявляется в 16-разрядной внутрисегментной адресации, способе
формирования физических адресов памяти из программных адресов,
выполнении прерываний, отсутствии функций контроля доступа к
памяти со стороны процессора.
Режим реальных адресов
35

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
С другой стороны, современный процессор сохраняет свое
высокое быстродействие, расширенную систему команд и
возможностью работать с 32-х или 64-разрядными данными (в
соответствии со своей разрядностью).
Операционной системой, разработанной для реального режима
процессоров, является MSDOS. Особенности архитектуры и
возможности процессора в реальном режиме отражаются и на
возможностях операционной системы.
Из-за отсутствия поддержки со стороны процессора в MSDOS
отсутствуют:
- многозадачность, как способ организации вычислительного
процесса. Этому препятствует небольшой объем физически адресуемой
процессором в реальном режиме памяти и отсутствие аппаратной
реализации переключения задач;
- управление привилегиями программ для надежного разделения
полномочий системных и прикладных программ;
- современные технологии структурной организации операционной
системы.
Программная модель процессора в реальном режиме
(на примере 32-разрядных процессоров)
Множество программно-доступных регистров процессоров в
реальном режиме включает в себя 8-ми и 16-разрядные регистры,
наследованные от 16-разрядных процессоров, и расширенные 32разрядные регистры.
Регистры общего назначения
Регистры общего назначения программист может использовать для
размещения своих данных.
К ним относятся 32-разрядные регистры EAX, EBX, ECX, EDX,
ЕSI, ЕDI, ЕBP и ЕSP. Их младшие половины - это 16-разрядные
регистры: AX, BX, CX, DX, SI, DI, BP и SP. Половинки ряда регистров
доступны самостоятельно, как 8-разрядные регистры: AH, AL, BH, BL,
CH, CL, DH и DL.
Следует помнить, что регистр SP используется процессором при
выполнении стековых команд в качестве указателя вершины стека.
Для косвенной 16-разрядной внутрисегментной адресации в
реальном режиме обычно используют регистры SI, DI, BP и BХ, как
предусмотрено в процессоре 8086.
36

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
31 15
0
EAX
AX
Регистры
AH
AL
общего назначения
EBX BX
BH
ВL
ECX CX
CH
CL
EDX DX
DH
DL
ESP SP
EBP BP
ESI SI
EDI DI
CS
Регистры -
DS
указатели сегментов
ES
SS
GS
FS
EIP IP
Регистр- указатель команд
Флаги
Регистр флагов
В принципе, 32-разрядные процессоры позволяют использовать
любые 32-разрядные регистры для внутрисегментной адресации.
Главное, чтобы результирующее смещение в сегменте не превышало
значения FFFFh.
Рис.18 - Программная модель 32-разрядного процессора в реальном
Регистры – указатели сегментов памяти
Регистрами-указателями сегментов являются 16-разрядные CS, DS,
ES, SS, GS и FS. Регистр CS всегда должен указывать процессору на
режиме
37

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
кодовый программный сегмент. Остальные сегментные регистры
используются в качестве указателей на сегменты данных.
Если сегмент данных используется программистом в качестве
стека, то есть в него есть обращение стековыми командами Рush/Pop,
регистр SS должен быть «настроен» на стековый сегмент.
Регистр - указатель команд
32-разрядный регистр EIP является для процессора указателем
внутрисегментного адреса очередной команды в кодовом сегменте. В
реальном режиме процессор использует только его младшую половину 16-ти разрядный IP.
Для процессора адрес команды в реальном режиме – это пара
значений из регистров CS:IP.
Регистр флагов
В реальном режиме в 32-разрядном регистре флагов используется
только младшая половина, повторяющая регистр флагов процессора
8086.
Отдельные биты регистра флагов используются процессором как
арифметические и управляющие признаки (флаги).
Рис.19 - Формат регистра флагов
Арифметические флаги устанавливаются процессором в
соответствующее состояние (0 или 1) после арифметических и
логических операций. По состоянию арифметических флагов можно
судить об определенных свойствах полученного результата. К
арифметическим флагам относятся:
- CF (Carry Flag) - флаг переноса / заема
- PF (Parity Flag) - флаг четности
- АF (Auxilary Flag) - флаг вспомогательного переноса
- ZF (Zero Flag) - флаг нуля
- SF (Sign Flag) - флаг знака
- ОF (Overflow Flag) - флаг переполнения
38

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
Адрес
Шина адреса 20 разрядов памяти (hex)
7 0
00000
00001
00002
Адресное пространство
памяти
FFFFF
Байт
.. . .
Байт
Управляющие флаги устанавливаются программистом
специальными командами по необходимости:
- DF (Direction Flag) - флаг направления для строковых команд;
- IF (Interrupt Flag) - флаг разрешения внешних прерываний;
- TF (Trace Flag) - флаг установки пошагового режима
исполнения команд (трассировки).
Адресация памяти
В реальном режиме (как и в защищенном) процессоры х86
аппаратно поддерживают сегментную адресацию памяти.
Сегментация памяти предполагает деление программ на блоки
(сегменты), которые будут загружаться в память независимо друг от
друга. Аппаратная поддержка сегментации памяти является
необходимым условием для динамического управления памятью
операционной системой.
Программно задаваемый процессору адрес памяти представляется
в виде двух компонент:
«указатель сегмента» и «внутрисегментное смещение».
Механизм адресации памяти в реальном режиме полностью
повторяет характеристики 16-разрядного процессора 8086 с 20разрядной шиной адреса. Особенности этой адресации следующие.
1. Физические адреса памяти 20- разрядные. Следовательно,
объем адресуемой памяти составляет 1 Мб (2
20
байт). Диапазон
физических адресов памяти - от 0 до FFFFFh.
Рис.20 - Адресное пространство памяти в реальном режиме
39

Ларина Т.Б. Механизмы аппаратной поддержки операционных систем
15 0
указатель сегмента 0000
15
0
0000
19 0
физический адрес памяти
внутрисегментное
смещение
2. Программные сегменты размещаются операционной системой
в физической памяти с адресов, кратных 16 ( то есть, значение адреса в
hex-коде заканчивается на 0 ). Адресами сегментов могут быть: 00000,
00010, 00020, .., FFFF0. Такие адреса называют «граница параграфа».
После загрузки программного сегмента в память в
соответствующий 16-разрядный регистр-указатель сегмента будут
занесены старшие 16-разрядов физического адреса сегмента.
Например, если сегмент размещен с физического адреса 1А760h, в
регистре - указателе этого сегмента будет значение 1А76h.
3. Внутрисегментные адреса (смещения) являются 16-
разрядными. Поэтому программы для реального режима называют
«16-разрядные». Разрядность внутрисегментного смещения
ограничивает размер сегмента величиной 2
16
байтов (или 64 Кбайт).
Диапазон внутрисегментных смещений составляет от 0000 до FFFFh.
4. При выполнении команды, в которой есть обращение к
памяти, процессор выполняет «отображение» (преобразование)
программных адресов в физические адреса памяти. Алгоритм
преобразования в реальном режиме таков.
Значение сегментного регистра сдвигается влево на 4 бита и
дополняется справа четырьмя двоичными нулями ( hex-ноль) до 20-ти
разрядной величины. Получается физический адрес сегмента.
Внутрисегментное смещение дополняется слева четырьмя
двоичными нулями до 20-ти разрядной величины. Полученные значения
суммируются, образуя 20-ти разрядный физический адрес памяти, по
которому будет происходить обращение.
Рис.21 - Аппаратный механизм «отображения» программных
адресов в физические адреса
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
