Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 27
Текст из файла (страница 27)
Объясните сегментный способ организации виртуальной памяти. Что представляет собой (в общем случае) дескриптор сегмента?9. Что представляет собой динамическое присоединение программ? Что оно дает?10. Сравните сегментный и страничный способы организации виртуальной памяти. Перечислите достоинства и недостатки каждого.11. Какие дисциплины применяются для решения задачи замещения страниц?Какие из них являются наиболее эффективными и как они реализуются?12.
Что такое «рабочее множество»? Что позволяет разрешить реализация этогопонятия?13. В каких случаях возникает «пробуксовка»? Почему системы Windows NT/2000/ХР требуют для своей нормальной работы существенно большего объема оперативной памяти?Глава 4- Особенностиархитектурымикропроцессоров i80x86для организациимультипрограммныхоперационных системВ рамках данной книги мы, естественно, не будем рассматривать все многообразиесовременных 32-разрядных микропроцессоров, используемых в персональныхкомпьютерах и иных вычислительных системах, а ограничимся рассмотрениемтолько архитектурных, а не технических характеристик микропроцессоров, и подобозначением i80x86 будем понимать любые 32-разрядные микропроцессоры, имеющие основной набор команд такой же, как и в первом 32-разрядном микропроцессоре Intel 80386, и те же архитектурные решения, что и в микропроцессорахфирмы Intel.
Нас не будут интересовать новые наборы команд типа ММХ или SSE,не будем мы касаться и архитектурных особенностей микропроцессоров, повышающих их производительность. Мы опишем только те механизмы, которые позволяют организовать мультипрограммный и мультизадачный режимы, виртуальнуюпамять, обеспечить надежные вычисления.Реальный и защищенный режимыработы процессораШироко известно, что первым микропроцессором, на базе которого был созданперсональный компьютер IBM PC, был Intel 8088. Этот микропроцессор отличался от первого 16-разрядного микропроцессора фирмы Intel (микропроцессора"°6), прежде всего, тем, что у него была 8-разрядная шина данных, а не 16-разрядН а я(как у 8086).
Оба этих микропроцессора предназначались для создания вы-102Глава 4. Особенности архитектуры микропроцессоров i80x86числительных устройств, работающих в однозадачном режиме, то есть специальных аппаратных средств для поддержки надежных и эффективных мультипрограммных операционных систем в них не было.Однако к тому времени, когда разработчики осознали необходимость включенияспециальной аппаратной поддержки мультипрограммных вычислений, уже былосоздано очень много программных продуктов. Поэтому для совместимости с первыми компьютерами в последующих версиях микропроцессоров была реализована возможность использовать их в двух режимах: реальном (real mode) — так назвали режим работы первых 16-разрядных микропроцессоров — и защищенном(protected mode), означающем, что параллельные вычисления могут быть защищены аппаратно-программными механизмами.Подробно рассматривать архитектуру первых 16-разрядных микропроцессоровi8086/i8088 мы не будем, поскольку этот материал должен изучаться в другихдисциплинах.
Итак, мы исходим из того, что читатель знаком с архитектурой процессора i8086/i8088 и с программированием на ассемблере для этих 16-разрядных процессоров Intel. Для тех же, кто с ней незнаком, можно рекомендовать,например, такие книги, как [12, 24, 40] и многие другие. Однако мы напомним,что в этих микропроцессорах (а значит, и в остальных микропроцессорах семейства i80x86 при работе их в реальном режиме) обращение к памяти с возможнымадресным пространством в 1 Мбайт осуществляется посредством механизма сегментной адресации (рис. 4.1).
Этот механизм был использован для того, чтобыувеличить с 16 до 20 количество разрядов, участвующих в формировании адресаячейки памяти, по которому идет обращение, и тем самым увеличить доступныйобъем памяти.Значение регистра CS0 0 0 0150Регистр IP15Физический адрес0| | |190Рис. 4 . 1 . Схема определения физического адреса для процессора 8086Для конкретности будем рассматривать определение адреса команд, хотя для адресации операндов используется аналогичный механизм, только участвуют в этомслучае другие сегментные регистры. Напомним, что для определения физического адреса команды содержимое регистра сегмента кода (Code Segment, CS) умножается на 16 за счет добавления справа (к младшим битам) четырех нулей, послечего к полученному значению прибавляется содержимое регистра указателя ко-103Новые системные регистры микропроцессоров J80x861манд (Instruction Pointer, IP).
Получается 20-разрядное значение , которое и по20зволяет указать любой байт из 20 .В защищенном режиме работы определение физического адреса осуществляется совершенно иначе. Прежде всего, используется сегментный механизм дляорганизации виртуальной памяти. При этом адреса задаются 32-разряднымизначениями.
Кроме этого, возможна страничная трансляция адресов, также с32-разрядными значениями. Наконец, при работе в защищенном режиме, который по умолчанию предполагает 32-разрядный код, возможно исполнениедвоичных программ, созданных для работы микропроцессора в 16-разрядномрежиме. Для этого введен режим виртуальной 16-разрядной машины, и 20-разрядные адреса реального режима транслируются с помощью страничного механизма в 32-разрядные значения защищенного режима.
Наконец, есть еще одинрежим — 16-разрядный защищенный, позволяющий 32-разрядным микропроцессорам выполнять защищенный 16-разрядный код, который был характерендля микропроцессора 80286. Правда, следует отметить, что этот последний режим практически не используется, поскольку программ, созданных для него,не так уж и много.Для изучения этих возможностей рассмотрим сначала новые архитектурные возможности микропроцессоров i80x86.Новые системные регистрымикропроцессоров i80x86Основные регистры микропроцессора i80x86, знание которых необходимо для понимания защищенного режима работы, приведены на рис.
4.2. На этом рисункеследует обратить внимание на следующее:• указатель команды (EIP) — это 32-разрядный регистр, младшие 16 разрядовкоторого представляют регистр IP;• регистр флагов (EFLAGS) — это 32-разрядный регистр, младшие 16 разрядовкоторого представляют регистр FLAGS;Q регистры общего назначения ЕАХ, ЕВХ, ЕСХ, EDX, а также регистры ESP, EBP,ESI, EDI 32-разрядные, однако их младшие 16 разрядов представляют собойизвестные регистры АХ, ВХ, CX.DX, SP, BP, SI, DI;Q сегментные регистры CS, SS, DS, ES, FS, GS 16-разрядные, при каждом из нихпунктиром изображены скрытые от программистов (недоступные никому, кромесобственно микропроцессора) 64-разрядные регистры, в которые загружаютсяДескрипторы соответствующих сегментов;На самом деле, поскольку происходит именно сложение и каждое из слагаемых может иметь значение в интервале от нуля до 2'с' - 1 = 65 535 = 64 Кбайт, мы можем указать адрес начала сегмента, равнин FFFFFFFF00H, и к нему прибавить смещение FFFFFFFFH.
В этом случае мы получим переполнение разрядной сетки, но для современных 32-разрядных процессоров (и для уже забытого1о0286) имеется возможность указать первые 64 Кбайт выше первого мегабайта.104Глава 4. Особенности архитектуры микропроцессоров i80x86EIPIPEFLAGS311531FLAGS16ЕАХАХESPSPЕВХВХЕВРВРЕСХСХESISIEDXDXEDIDI156347Права доступаCS15Базовый адрес; Длина сегментаSSDSESFSGS16*48,0LDTRTRБазовый адресGDTRIDTR47Длина сегмента160CR3CR2CR1CR0Рис. 4.2. Основные системные регистры микропроцессоров i80x86при 16-разрядном регистре-указателе на локальную таблицу дескрипторов (Local Descriptor Table Register, LDTR) также имеется «теневой» (скрытый от программиста) 64-разрядный регистр, в который микропроцессор заносит дескриптор, указывающий на таблицу дескрипторов сегментов задачи, описывающихее локальное виртуальное адресное пространство;16-разрядный регистр задачи (Task Register, TR) указывает на дескриптор в глобальной таблице дескрипторов, который позволяет получить доступ к дескрип-Адресация в 32-разрядных микропроцессорах i80x86105тору сегмента состояния задачи (Task State Segment, TSS) — информационной структуре, которую поддерживает микропроцессор для управления задачами;р 48-разрядный регистр GDTR (Global Descriptor Table Register) глобальной таблицы дескрипторов (Global Descriptor Table, GDT) содержит как дескрипторыобщих сегментов, так и специальные системные дескрипторы, в частности,в GDT находятся дескрипторы, с помощью которых можно получить доступк сегментам TSS;• 48-разрядный регистр таблицы дескрипторов прерываний (IDTR) содержитинформацию, необходимую для доступа к таблице прерываний (IDT);О 32-разрядные регистры CR0-CR3 являются управляющими.Помимо перечисленных имеются и некоторые другие регистры.Управляющий регистр CRO содержит целый ряд флагов, которые определяют режимы работы микропроцессора.
Подробности об этих флагах можно найти, например, в [1, 8, 20]. Мы же просто ограничимся тем фактом, что самый младшийбит РЕ (Protect Enable) этого регистра определяет режим работы процессора. ПриРЕ = О процессор функционирует в реальном режиме работы, а при единичномзначении микропроцессор переключается в защищенный режим.
Самый старшийбит регистра CR0 — бит PG (PaGing) — определяет, включен (PG = 1 ) или нет(PG = 0) режим страничного преобразования адресов.Регистр CR2 предназначен для размещения в нем адреса подпрограммы обработки страничного исключения, то есть в случае страничного механизма отображенияпамяти обращение к отсутствующей странице будет вызывать переход на соответствующую подпрограмму диспетчера памяти, и для определения этой подпрограммы потребуется регистр CR2.Регистр CR3 содержит номер физической страницы, в которой располагается таблица каталога таблиц страниц текущей задачи.