stringtranslate.com

Защищенный режим

В вычислительной технике защищенный режим , также называемый защищенным виртуальным адресным режимом , [1] является рабочим режимом x86 -совместимых центральных процессоров (ЦП). Он позволяет системному программному обеспечению использовать такие функции, как сегментация , виртуальная память , подкачка и безопасная многозадачность, разработанные для повышения контроля операционной системы над прикладным программным обеспечением . [2] [3]

Когда процессор, поддерживающий защищенный режим x86, включается, он начинает выполнять инструкции в реальном режиме , чтобы сохранить обратную совместимость с более ранними процессорами x86. [4] Защищенный режим может быть введен только после того, как системное программное обеспечение настроит одну таблицу дескрипторов и включит бит включения защиты (PE) в регистре управления 0 (CR0). [5]

Защищенный режим был впервые добавлен в архитектуру x86 в 1982 году [6] с выпуском процессора Intel 80286 (286), а затем расширен с выпуском 80386 ( 386) в 1985 году [7]. Благодаря улучшениям, добавленным защищенным режимом, он получил широкое распространение и стал основой для всех последующих улучшений архитектуры x86 (IA-32), [8] хотя многие из этих улучшений, такие как добавленные инструкции и новые регистры, также принесли преимущества реальному режиму.

История

Intel 8086 , предшественник 286, изначально был разработан с 20- битной адресной шиной для своей памяти . [9] Это позволяло процессору получать доступ к 220 байтам памяти, что эквивалентно 1 мегабайту . [9] В то время 1 мегабайт считался относительно большим объемом памяти, [10] поэтому проектировщики персонального компьютера IBM зарезервировали первые 640 килобайт для использования приложениями и операционной системой, а оставшиеся 384 килобайта — для BIOS (базовой системы ввода-вывода) и памяти для дополнительных устройств . [11]

По мере снижения стоимости памяти и увеличения ее использования ограничение в 1 МБ стало существенной проблемой. Intel намеревалась решить это ограничение наряду с другими с выпуском 286. [11]

286

Первоначальный защищенный режим, выпущенный с 286, не получил широкого распространения; [11] например, он использовался Coherent (с 1982 г.), [12] Microsoft Xenix (около 1984 г.) [13] и Minix . [14] Несколько недостатков, таких как невозможность выполнять вызовы BIOS и DOS из-за невозможности переключиться обратно в реальный режим без сброса процессора, препятствовали широкому использованию. [15] Принятие было дополнительно затруднено тем фактом, что 286 допускал доступ к памяти только сегментами по 64  килобайта , адресуемыми его четырьмя сегментными регистрами, что означало, что за один раз можно было получить доступ только к 4 × 64 КБ , что эквивалентно 256 КБ. [11] Поскольку изменение сегментного регистра в защищенном режиме приводило к загрузке 6-байтового дескриптора сегмента в ЦП из памяти, инструкция загрузки сегментного регистра занимала многие десятки процессорных циклов, что делало ее намного медленнее, чем на 8086; Поэтому стратегия вычисления адресов сегментов «на лету» для доступа к структурам данных размером более 128  килобайт (совокупный размер двух сегментов данных) стала непрактичной даже для тех немногих программистов, которые освоили ее на 8086/8088.

286 поддерживал обратную совместимость со своим предшественником (8086), изначально входя в реальный режим при включении питания. [4] Реальный режим функционировал практически идентично 8086, позволяя подавляющему большинству существующего программного обеспечения 8086 работать без изменений на более новом 286. Реальный режим также служил более базовым режимом, в котором можно было настроить защищенный режим, решая своего рода проблему курицы и яйца. Чтобы получить доступ к расширенным функциональным возможностям 286, операционная система создавала в памяти некоторые таблицы, которые управляли доступом к памяти в защищенном режиме, устанавливала адреса этих таблиц в некоторые специальные регистры процессора, а затем переводила процессор в защищенный режим. Это включало 24-битную адресацию, что позволяло процессору получать доступ к 224 байтам  памяти, что эквивалентно 16  мегабайтам . [9]

386

Микропроцессор Intel 80386

С выпуском 386 в 1985 году [7] были решены многие проблемы, препятствовавшие широкому принятию предыдущего защищенного режима. [11] 386 был выпущен с размером адресной шины 32 бита, что позволяет осуществлять доступ к 232 байтам памяти, что эквивалентно 4 гигабайтам . [16] Размеры сегментов также были увеличены до 32 бит, что означает, что к полному адресному пространству в 4 гигабайта можно было получить доступ без необходимости переключения между несколькими сегментами. [16] В дополнение к увеличенному размеру адресной шины и сегментных регистров было добавлено много других новых функций с целью повышения операционной безопасности и стабильности. [17] Защищенный режим теперь используется практически во всех современных операционных системах , работающих на архитектуре x86, таких как Microsoft Windows , Linux и многих других. [18]

Кроме того, извлекая уроки из неудач защищенного режима 286 для удовлетворения потребностей многопользовательской DOS , Intel добавила отдельный виртуальный режим 8086 , [19] который позволял эмулировать несколько виртуализированных процессоров 8086 на 386. Однако аппаратная виртуализация x86 , необходимая для виртуализации самого защищенного режима, должна была ждать еще 20 лет. [20]

386 дополнений к защищенному режиму

С выпуском 386 в защищенный режим были добавлены следующие дополнительные функции: [2]

Вход и выход из защищенного режима

До выпуска 386 защищенный режим не предлагал прямого метода переключения обратно в реальный режим после входа в защищенный режим. IBM разработала обходной путь (реализован в IBM AT ), который включал сброс ЦП через контроллер клавиатуры и сохранение системных регистров, указателя стека и часто маски прерываний в ОЗУ чипа часов реального времени. Это позволяло BIOS восстанавливать ЦП до аналогичного состояния и начинать выполнение кода до сброса. [ необходимо разъяснение ] Позже для сброса ЦП 286 использовался тройной сбой , что было намного быстрее и чище, чем метод контроллера клавиатуры (и не зависит от совместимого с IBM AT оборудования, но будет работать на любом ЦП 80286 в любой системе).

Для входа в защищенный режим сначала необходимо создать таблицу глобальных дескрипторов (GDT) с минимум тремя записями: нулевой дескриптор, дескриптор сегмента кода и дескриптор сегмента данных. В IBM-совместимой машине также должна быть включена линия A20 (21-я адресная линия), чтобы разрешить использование всех адресных линий, чтобы процессор мог получить доступ к памяти свыше 1 мегабайта (только первые 20 линий разрешено использовать после включения питания, чтобы гарантировать совместимость со старым программным обеспечением, написанным для моделей IBM PC и PC/XT на базе Intel 8088 ). [22] После выполнения этих двух шагов бит PE должен быть установлен в регистре CR0, и должен быть выполнен дальний переход для очистки очереди входных данных предварительной выборки . [23] [24]

; Программа MASM ; войти в защищенный режим (установить бит PE) mov EBX , CR0 ; сохранить регистр управления 0 (CR0) в EBX или EBX , PE_BIT ; установить бит PE с помощью ORing, сохранить в EBX mov CR0 , EBX ; сохранить EBX обратно в CR0         ; очистить очередь предварительной выборки; (используя инструкцию дальнего перехода jmp) jmp CLEAR_LABEL CLEAR_LABEL: 

С выпуском 386 из защищенного режима можно было выйти, загрузив сегментные регистры значениями реального режима, отключив линию A20 и очистив бит PE в регистре CR0, без необходимости выполнять начальные шаги настройки, требуемые для 286. [25]

Функции

Защищенный режим имеет ряд функций, разработанных для улучшения контроля операционной системы над прикладным программным обеспечением с целью повышения безопасности и стабильности системы. [3] Эти дополнения позволяют операционной системе функционировать таким образом, который был бы значительно сложнее или даже невозможен без надлежащей аппаратной поддержки. [26]

Уровни привилегий

Пример использования кольца привилегий в операционной системе, использующей все кольца

В защищенном режиме существует четыре уровня привилегий или кольца , пронумерованные от 0 до 3, причем кольцо 0 является наиболее привилегированным, а 3 — наименее. Использование колец позволяет системному программному обеспечению ограничивать доступ задач к данным, вызов шлюзов или выполнение привилегированных инструкций. [27] В большинстве сред операционная система и некоторые драйверы устройств работают в кольце 0, а приложения — в кольце 3. [27]

Совместимость приложений реального режима

Согласно Справочному руководству программиста Intel 80286 , [28]

80286 сохраняет обратную совместимость с большинством прикладных программ 8086 и 80186. Большинство прикладных программ 8086 можно перекомпилировать или пересобрать и запустить на 80286 в защищенном режиме.

По большей части, бинарная совместимость с кодом реального режима, возможность доступа к 16 МБ физической памяти и 1 ГБ виртуальной памяти были наиболее очевидными изменениями для программистов приложений. [29] Это не было без ограничений. Если приложение использовало или полагалось на любой из нижеперечисленных методов, оно не запускалось: [30]

В действительности, почти все прикладные программы DOS нарушали эти правила. [32] Из-за этих ограничений виртуальный режим 8086 был введен с 386. Несмотря на такие потенциальные неудачи, Windows 3.0 и ее преемники могут использовать двоичную совместимость с реальным режимом для запуска многих приложений Windows 2.x ( Windows 2.0 и Windows 2.1x ) в защищенном режиме, которые работали в реальном режиме в Windows 2.x. [33]

Виртуальный режим 8086

С выпуском 386 защищенный режим предлагает то, что руководства Intel называют виртуальным режимом 8086. Виртуальный режим 8086 разработан, чтобы позволить коду, ранее написанному для 8086, работать без изменений и одновременно с другими задачами, не ставя под угрозу безопасность или стабильность системы. [34]

Однако виртуальный режим 8086 не полностью обратно совместим со всеми программами. Программы, требующие манипуляции сегментами, привилегированные инструкции, прямой доступ к оборудованию или использующие самомодифицирующийся код , будут генерировать исключение , которое должно быть обработано операционной системой. [35] Кроме того, приложения, работающие в виртуальном режиме 8086, генерируют ловушку с использованием инструкций, которые включают ввод/вывод (I/O), что может негативно повлиять на производительность. [36]

Из-за этих ограничений некоторые программы, изначально разработанные для работы на 8086, не могут быть запущены в виртуальном режиме 8086. В результате системное программное обеспечение вынуждено либо идти на компромисс с безопасностью системы, либо с обратной совместимостью при работе с устаревшим программным обеспечением . Пример такого компромисса можно увидеть в выпуске Windows NT , которая отказалась от обратной совместимости для «плохо себя ведущих» приложений DOS. [37]

Сегментная адресация

Виртуальные сегменты 80286

Реальный режим

В реальном режиме каждый логический адрес указывает непосредственно на физическую ячейку памяти, каждый логический адрес состоит из двух 16-битных частей: Сегментная часть логического адреса содержит базовый адрес сегмента с гранулярностью 16 байт, т. е. сегмент может начинаться с физического адреса 0, 16, 32, ..., 2 20  − 16. Смещенная часть логического адреса содержит смещение внутри сегмента, т. е. физический адрес можно вычислить как physical_address = segment_part × 16 + offset, если адресная строка A20 включена, или (segment_part × 16 + offset) mod 2 20 , если A20 выключена. [ необходимо пояснение ] Каждый сегмент имеет размер 2 16  байт.

Защищенный режим

В защищенном режиме segment_part заменяется 16-битным селектором , в котором 13 старших бит (бит 3–15) содержат индекс записи внутри таблицы дескрипторов . Следующий бит (бит 2) указывает, используется ли операция с GDT или LDT. Нижние два бита (бит 1 и бит 0) селектора объединяются для определения привилегии запроса, где значения 0 и 3 представляют наивысшую и наименьшую привилегию соответственно. Это означает, что смещение байтов дескрипторов в таблице дескрипторов такое же, как у 16-битного селектора, при условии, что нижние три бита обнулены.

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

286

Адрес сегмента внутри записи таблицы дескрипторов имеет длину 24 бита, поэтому каждый байт физической памяти может быть определен как граница сегмента. Предельное значение внутри записи таблицы дескрипторов имеет длину 16 бит, поэтому длина сегмента может быть от 1 байта до 2 16 байт. Вычисленный линейный адрес равен адресу физической памяти.

386

Адрес сегмента внутри записи таблицы дескрипторов расширяется до 32 бит, поэтому каждый байт физической памяти может быть определен как граница сегмента. Предельное значение внутри записи таблицы дескрипторов расширяется до 20 бит и дополняется флагом гранулярности (G-бит, для краткости):

Процессор 386 также использует 32-битные значения для смещения адреса.

Для поддержания совместимости с защищенным режимом 286 был добавлен новый флаг по умолчанию (D-бит, для краткости). Если D-бит сегмента кода выключен (0), все команды внутри этого сегмента будут интерпретироваться как 16-битные команды по умолчанию; если он включен (1), они будут интерпретироваться как 32-битные команды.

Структура записи дескриптора сегмента

Где:

Пейджинг

Распространенный метод использования страничного обмена для создания виртуального адресного пространства
Пейджинг (на Intel 80386) с размером страницы 4К

В дополнение к добавлению виртуального режима 8086, 386 также добавил подкачку в защищенный режим. [39] С помощью подкачки системное программное обеспечение может ограничивать и контролировать доступ задачи к страницам, которые являются разделами памяти. Во многих операционных системах подкачка используется для создания независимого виртуального адресного пространства для каждой задачи, предотвращая манипулирование одной задачей памятью другой. Подкачка также позволяет перемещать страницы из первичного хранилища в более медленное и большее вторичное хранилище , такое как жесткий диск . [40] Это позволяет использовать больше памяти, чем физически доступно в первичном хранилище. [40]

Архитектура x86 позволяет управлять страницами через два массива : каталоги страниц и таблицы страниц . Первоначально каталог страниц имел размер одной страницы, четыре килобайта и содержал 1024 записи каталога страниц (PDE), хотя последующие усовершенствования архитектуры x86 добавили возможность использовать страницы большего размера. Каждый PDE содержал указатель на таблицу страниц. Таблица страниц также изначально имела размер четыре килобайта и содержала 1024 записи таблицы страниц (PTE). Каждый PTE содержал указатель на фактический физический адрес страницы и используется только при использовании четырехкилобайтных страниц. В любой момент времени только один каталог страниц может активно использоваться. [41]

Многозадачность

Благодаря использованию колец, привилегированных шлюзов вызовов и сегмента состояния задачи (TSS), представленного в 286, на архитектуре x86 стала возможной вытесняющая многозадачность . TSS позволяет изменять регистры общего назначения, поля селектора сегмента и стеки, не затрагивая при этом другие задачи. TSS также позволяет уровню привилегий задачи и разрешениям порта ввода-вывода быть независимыми от других задач.

Во многих операционных системах не используются все функции TSS. [42] Обычно это происходит из-за проблем с переносимостью или из-за проблем с производительностью, возникающих при аппаратном переключении задач. [42] В результате многие операционные системы используют как аппаратное, так и программное обеспечение для создания многозадачной системы. [43]

Операционные системы

Операционные системы, такие как OS/2 1.x, пытаются переключать процессор между защищенным и реальным режимами. Это и медленно, и небезопасно, поскольку программа реального режима может легко привести к сбою компьютера. OS/2 1.x определяет ограничительные правила программирования, позволяющие API семейства или связанной программе работать как в реальном, так и в защищенном режиме. Некоторые ранние операционные системы Unix , OS/2  1.x и Windows использовали этот режим.

Windows 3.0 могла запускать программы реального режима в 16-битном защищенном режиме; при переключении в защищенный режим она решила сохранить модель с одним уровнем привилегий, которая использовалась в реальном режиме, поэтому приложения и библиотеки DLL Windows могут перехватывать прерывания и выполнять прямой доступ к оборудованию. Это продолжалось в течение всей серии Windows 9x . Если программа Windows 1.x или 2.x написана правильно и избегает сегментной арифметики, она будет работать одинаково как в реальном, так и в защищенном режимах. Программы Windows обычно избегают сегментной арифметики, поскольку Windows реализует схему программной виртуальной памяти, перемещая программный код и данные в памяти, когда программы не запущены, поэтому манипулирование абсолютными адресами опасно; программы должны хранить только дескрипторы блоков памяти, когда они не запущены. Запуск старой программы, когда Windows 3.0 работает в защищенном режиме, вызывает предупреждающее диалоговое окно, предлагающее либо запустить Windows в реальном режиме, либо получить обновленную версию приложения. Обновление хорошо себя ведущих программ с помощью утилиты MARK с параметром MEMORY позволяет избежать этого диалогового окна. Невозможно, чтобы некоторые программы GUI работали в 16-битном защищенном режиме, а другие программы GUI работали в реальном режиме. В Windows 3.1 реальный режим больше не поддерживался и не мог быть доступен.

В современных 32-разрядных операционных системах виртуальный режим 8086 по-прежнему используется для запуска приложений, например, совместимых с DPMI программ расширения DOS (через виртуальные машины DOS ) или приложений Windows 3.x (через подсистему Windows on Windows ) и определенных классов драйверов устройств (например, для изменения разрешения экрана с использованием функциональности BIOS) в OS/2 2.0 (и более поздних OS/2) и 32-разрядной Windows NT , все под управлением 32-разрядного ядра. Однако 64-разрядные операционные системы (которые работают в длинном режиме ) больше не используют его, поскольку виртуальный режим 8086 был удален из длинного режима.

Смотрите также

Ссылки

  1. ^ "Memory access control method and system for implementation the same". Патент США 5483646. 23 мая 1995 г. Архивировано из оригинала (Патент) 26 сентября 2007 г. Получено 2007-07-14 . Система управления доступом к памяти согласно пункту 4, в которой указанный первый режим адреса является режимом реального адреса, а указанный второй режим адреса является режимом защищенного виртуального адреса.
  2. ^ ab Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура. Intel . Май 2019 г. Раздел 2.1.3 Процессор Intel 386 (1985).
  3. ^ ab root (14 июля 2007 г.). "Руководство: Что означает защищенный режим?" (Руководство) . Delorie Software . Получено 14 июля 2007 г. Цель защищенного режима — не защита вашей программы. Цель — защита всех остальных (включая операционную систему) от вашей программы.
  4. ^ ab Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура. Intel . Май 2019 г. Раздел 3.1 Режимы работы.
  5. ^ Коллинз, Роберт (2007). "Основы защищенного режима" (PDF) . ftp.utcluj.ro. Архивировано из оригинала (PDF) 2011-07-07 . Получено 2009-07-31 .
  6. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Том 1: Базовая архитектура. Intel . Май 2019 г. Раздел 2.1.2 Процессор Intel 286 (1982).
  7. ^ ab "Intel Global Citizenship Report 2003". Архивировано из оригинала (Timeline) 2008-03-22 . Получено 2007-07-14 . 1985 Intel выпускает процессор Intel386
  8. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Том 1: Базовая архитектура. Intel . Май 2019 г. Раздел 2.1. Краткая история архитектуры Intel 64 и IA-32.
  9. ^ abc "A+ - Hardware" (Учебник/Руководство) . Учебники по разработкам и возможностям микропроцессоров для ПК . BrainBell.com . Получено 24.07.2007 .
  10. ^ Рисли, Дэвид (23 марта 2001 г.). "История ЦП". PCMechanic. Архивировано из оригинала (статья) 29 августа 2008 г. Получено 24 июля 2007 г. Интересно , что проектировщики того времени и не подозревали, что кому-то когда-либо понадобится больше 1 МБ ОЗУ.
  11. ^ abcde Каплан, Ярив (1997). "Введение в защищенный режим". Internals.com. Архивировано из оригинала (статья) 22-06-2007 . Получено 24-07-2007 .
  12. ^ "Часто задаваемые вопросы об общей информации по Coherent Operating System". 23 января 1993 г.
  13. ^ "Microsoft XENIX 286 Press Release" (PDF) (Пресс-релиз). Microsoft. Архивировано из оригинала (PDF) 2014-10-21 . Получено 2015-08-17 .
  14. ^ "Информационный лист MINIX". Архивировано из оригинала 7 января 2014 года.
  15. ^ Мюллер, Скотт (24 марта 2006 г.). "P2 (286) Процессоры второго поколения". Модернизация и ремонт ПК, 17-е издание (книга) (17-е изд.). Que. ISBN 0-7897-3404-4. Получено 11 июля 2017 г. .
  16. ^ ab 80386 Справочное руководство программиста (PDF) . Санта-Клара, Калифорния: Intel. 1986. Раздел 2.1 Организация и сегментация памяти.
  17. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Том 1: Базовая архитектура. Intel . Май 2019 г. Раздел 3.1. Режимы работы.
  18. ^ Хайд, Рэндалл (ноябрь 2004 г.). "12.10. Защищенный режим работы и драйверы устройств". Write Great Code . O'Reilly. ISBN 1-59327-003-8.
  19. Чарльз Петцольд , 32-битное чудо Intel: микропроцессор 80386, PC Magazine , 25 ноября 1986 г., стр. 150-152.
  20. Том Ягер (6 ноября 2004 г.). «Отправка программного обеспечения для выполнения работы оборудования». InfoWorld . Получено 24 ноября 2014 г.
  21. Швец, Геннадий (3 июня 2007 г.). "Семейство процессоров Intel 80386" (статья) . Получено 24 июля 2007 г. 80386SX — бюджетная версия 80386. Этот процессор имел 16-битную внешнюю шину данных и 24-битную внешнюю шину адреса.
  22. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию". Intel . Раздел 21.33.1. Обертывание сегмента, стр. 21–34.
  23. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию". Intel . 9.9.1 Переключение в защищенный режим, стр. 9-13.
  24. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию". Intel . Раздел 9.10.2 Листинг STARTUP.ASM, стр. 9-19.
  25. ^ "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию". Intel . Раздел 9.9.2. Переключение обратно в режим реального адреса, стр. 9-14.
  26. ^ Справочное руководство программиста Intel 80386 1986 (PDF) . Санта-Клара, Калифорния: Intel. 1986. Глава 7, Многозадачность.
  27. ^ ab Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура. Intel . Май 2019. Раздел 6.3.5 Вызовы других уровней привилегий.
  28. ^ 80286 и 80287 Справочное руководство программиста (PDF) . Санта-Клара, Калифорния: Intel. 1987. Раздел 1.2 Режимы работы.
  29. ^ 80286 и 80287 Справочное руководство программиста (PDF) . Санта-Клара, Калифорния: Intel. 1987. Раздел 1.3.1 Управление памятью.
  30. ^ Справочное руководство программиста 80286 и 80287 (PDF) . Санта-Клара, Калифорния: Intel. 1987. Приложение C. Вопросы совместимости 8086/8088.
  31. ^ "Memory access control method and system for implementation the same" (Патент) . Патент США 5483646. 6 мая 1998 г. Получено 25 июля 2007 г. До сих пор это было невозможно и вынудило команды разработчиков BIOS добавить в BIOS поддержку вызовов 32-битных функций из 32-битных приложений.
  32. ^ Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086». berliOS. Архивировано из оригинала (Руководство) 3 октября 2002 г. Получено 25 июля 2007 г. ... во-вторых, защищенный режим также был несовместим с огромным количеством кода реального режима, существовавшего в то время .
  33. ^ Робинсон, Тим (26 августа 2002 г.). "Виртуальный режим 8086". berliOS. Архивировано из оригинала (Руководство) 3 октября 2002 г. Получено 25 июля 2007 г.
  34. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию. Intel . Май 2019 г. Раздел 20.2 Виртуальный режим 8086.
  35. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию. Intel . Май 2019 г. Раздел 20.2.7. Конфиденциальные инструкции.
  36. ^ Робинсон, Тим (26 августа 2002 г.). "Виртуальный режим 8086". berliOS. Архивировано из оригинала (Руководство) 3 октября 2002 г. Получено 25 июля 2007 г. Недостатком использования режима V86 является скорость: каждая инструкция, чувствительная к IOPL, приведет к переходу ЦП в режим ядра, как и ввод-вывод на порты, которые замаскированы в TSS.
  37. ^ Дабак, Прасад; Миллинд Борате (октябрь 1999). Недокументированная Windows NT (книга). Hungry Minds. ISBN 0-7645-4569-8.
  38. ^ abc "Таблица глобальных дескрипторов - OSDev Wiki".
  39. ^ "Обзор ProtectedMode [deinmeister.de]" (Веб-сайт) . Получено 29-07-2007 .
  40. ^ ab "Что такое PAE X86?". Microsoft TechNet. 28 мая 2003 г. Архивировано из оригинала (статья) 22-04-2008 . Получено 29-07-2007 . Процесс подкачки позволяет операционной системе преодолевать реальные ограничения физической памяти. Однако он также напрямую влияет на производительность из-за времени, необходимого для записи или извлечения данных с диска.
  41. ^ Гаро, Жан. "Advanced Embedded x86 Programming: Paging". Embedded.com. Архивировано из оригинала (Guide) 2008-05-16 . Получено 2007-07-29 . Только один каталог страниц может быть активен в один момент времени, что указывается регистром CR3.
  42. ^ ab zwanderer (2 мая 2004 г.). "новости: многозадачность для x86 объяснена #1". NewOrer . NewOrder. Архивировано из оригинала (статья) 2007-02-12 . Получено 2007-07-29 . Причина, по которой программное переключение задач так популярно, заключается в том, что оно может быть быстрее, чем аппаратное переключение задач. Intel на самом деле никогда не разрабатывала аппаратное переключение задач, они реализовали его, увидели, что оно работает, и просто оставили его там. Достижения в области многозадачности с использованием программного обеспечения сделали эту форму переключения задач быстрее (некоторые говорят, что до 3 раз быстрее), чем аппаратный метод. Другая причина заключается в том, что способ переключения задач Intel вообще непереносим
  43. ^ zwanderer (2 мая 2004 г.). "новости: Многозадачность для x86 объяснена № 1". NewOrer . NewOrder. Архивировано из оригинала (статья) 12.02.2007 . Получено 29.07.2007 . ... оба полагаются на способность процессоров Intel переключаться между задачами, они полагаются на это по-разному.

Внешние ссылки