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] Это позволило процессору получить доступ к 2 20 байтам памяти, что эквивалентно 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 разрешал доступ к памяти только в 16-битных сегментах через каждый из четырех сегментных регистров, то есть одновременно можно было получить доступ только к 4*2 16 байтам, что эквивалентно 256 килобайтам . [11] Поскольку изменение регистра сегмента в защищенном режиме приводило к загрузке 6-байтового дескриптора сегмента в ЦП из памяти, инструкция загрузки регистра сегмента занимала многие десятки тактов процессора, что делало ее намного медленнее, чем на 8086; поэтому стратегия вычисления адресов сегментов на лету для доступа к структурам данных размером более 128 килобайт (совокупный размер двух сегментов данных) стала непрактичной даже для тех немногих программистов, которые освоили ее на 8086/8088. .

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

386

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

С выпуском 386 в 1985 году [7] были решены многие проблемы, мешавшие широкому распространению предыдущего защищенного режима. [11] Модель 386 была выпущена с размером адресной шины 32 бита, что обеспечивает доступ к 2 32 байтам памяти, что эквивалентно 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]

; программа МАСМ ; войти в защищенный режим (установить бит PE) mov EBX , CR0 ; сохранить регистр управления 0 (CR0) в EBX или EBX , PE_BIT ; установить бит PE с помощью OR, сохранить в 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] Из-за этих ограничений в модели 386 был введен виртуальный режим 8086. Несмотря на такие потенциальные неудачи, Windows 3.0 и ее преемники могут использовать преимущества двоичной совместимости с реальным режимом для запуска многих версий Windows 2.x ( Windows 2.0 и Windows 2.1). x ) приложения в защищенном режиме, которые работали в реальном режиме в Windows 2.x. [33]

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

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

Однако режим Virtual 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 + смещение) mod 2 20 (если A20 выключена) [ необходимы пояснения ] Каждый сегмент имеет размер 2 16 байт.

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

В защищенном режиме сегмент_часть заменяется 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) с размером страницы 4K

Помимо добавления виртуального режима 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 определяет ограничительные правила программирования, позволяющие Family API или связанной программе работать как в реальном, так и в защищенном режиме. Некоторые ранние операционные системы Unix , OS/2  1.x и Windows использовали этот режим.

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

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

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

Рекомендации

  1. ^ «Метод контроля доступа к памяти и система для его реализации» . Патент США 5483646 . 23 мая 1995 г. Архивировано из оригинала (Патент) 26 сентября 2007 г. . Проверено 14 июля 2007 г. Система управления доступом к памяти по п.4, в которой упомянутый первый режим адреса является режимом реального адреса, а упомянутый второй режим адреса является режимом защищенного виртуального адреса.
  2. ^ ab Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура. Интел . Май 2019 г. Раздел 2.1.3 Процессор Intel 386 (1985 г.).
  3. ^ ab root (14 июля 2007 г.). «Гид: Что означает защищенный режим?» (Гид) . Программное обеспечение Делори . Проверено 14 июля 2007 г. Целью защищенного режима не является защита вашей программы. Цель состоит в том, чтобы защитить всех остальных (включая операционную систему) от вашей программы.
  4. ^ ab Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура. Интел . Май 2019 г. Раздел 3.1 Режимы работы.
  5. ^ Коллинз, Роберт (2007). «Основы защищенного режима» (PDF) . ftp.utcluj.ro. Архивировано из оригинала (PDF) 7 июля 2011 г. Проверено 31 июля 2009 г.
  6. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура. Интел . Май 2019 г. Раздел 2.1.2 Процессор Intel 286 (1982 г.).
  7. ^ ab «Отчет Intel о глобальной гражданственности за 2003 год» . Архивировано из оригинала (хронология) 22 марта 2008 г. Проверено 14 июля 2007 г. 1985 Intel выпускает процессор Intel386.
  8. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура. Интел . Май 2019 г. Раздел 2.1. Краткая история архитектуры Intel 64 и IA-32.
  9. ^ abc «A+ — Аппаратное обеспечение» (Учебное пособие/Руководство) . Учебные пособия по разработкам и функциям микропроцессоров ПК . BrainBell.com . Проверено 24 июля 2007 г.
  10. Рисли, Дэвид (23 марта 2001 г.). «История процессора». ПКМеханик. Архивировано из оригинала (статья) 29 августа 2008 года . Проверено 24 июля 2007 г. Что интересно, дизайнеры того времени никогда не подозревали, что кому-то когда-нибудь понадобится более 1 МБ оперативной памяти.
  11. ^ abcde Каплан, Ярив (1997). «Введение в защищенный режим». Внутренности.com. Архивировано из оригинала (статьи) 22 июня 2007 г. Проверено 24 июля 2007 г.
  12. ^ «Часто задаваемые вопросы по общей информации для Coherent Operating System» . 23 января 1993 года.
  13. ^ «Пресс-релиз Microsoft XENIX 286» (PDF) (пресс-релиз). Майкрософт. Архивировано из оригинала (PDF) 21 октября 2014 г. Проверено 17 августа 2015 г.
  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: Базовая архитектура. Интел . Май 2019 г. Раздел 3.1 Режимы работы.
  18. ^ Хайд, Рэндалл (ноябрь 2004 г.). «12.10. Работа в защищенном режиме и драйверы устройств». Напишите отличный код . О'Рейли. ISBN 1-59327-003-8.
  19. ^ Чарльз Петцольд , 32-битное чудо Intel: микропроцессор 80386, журнал PC Magazine , 25 ноября 1986 г., стр. 150-152.
  20. ^ Том Ягер (6 ноября 2004 г.). «Отправка программного обеспечения для выполнения работы оборудования». Инфомир . Проверено 24 ноября 2014 г.
  21. Швец, Геннадий (3 июня 2007 г.). «Семейство процессоров Intel 80386» (Статья) . Проверено 24 июля 2007 г. 80386SX — дешевая версия 80386. Этот процессор имел 16-битную внешнюю шину данных и 24-битную внешнюю шину адреса.
  22. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . Раздел 21.33.1 Обход сегмента, стр. 21–34.
  23. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . 9.9.1 Переключение в защищенный режим, стр. 9-13.
  24. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . Раздел 9.10.2 Листинг STARTUP.ASM, стр. 9-19.
  25. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . Раздел 9.9.2 Возврат в режим реального адреса, стр. 9-14.
  26. ^ Справочное руководство для программиста Intel 80386, 1986 г. (PDF) . Санта-Клара, Калифорния: Intel. 1986. Глава 7, Многозадачность.
  27. ^ ab Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура. Интел . Май 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. ^ «Способ управления доступом к памяти и система для его реализации» (Патент) . Патент США 5483646 . 6 мая 1998 года . Проверено 25 июля 2007 г. На сегодняшний день это было невозможно, и группа разработчиков BIOS вынудила добавить в BIOS поддержку вызовов 32-битных функций из 32-битных приложений.
  32. Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086». берлиОС. Архивировано из оригинала (Руководство) 3 октября 2002 года . Проверено 25 июля 2007 г. ... во-вторых, защищенный режим также был несовместим с огромным количеством кода реального режима, существовавшего в то время.
  33. Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086». берлиОС. Архивировано из оригинала (Руководство) 3 октября 2002 года . Проверено 25 июля 2007 г.
  34. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию. Интел . Май 2019 г. Раздел 20.2 Виртуальный режим 8086.
  35. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию. Интел . Май 2019 г. Раздел 20.2.7 Конфиденциальные инструкции.
  36. Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086». берлиОС. Архивировано из оригинала (Руководство) 3 октября 2002 года . Проверено 25 июля 2007 г. Обратной стороной использования режима V86 является скорость: каждая инструкция, чувствительная к IOPL, приводит к переходу ЦП в режим ядра, как и ввод-вывод к портам, которые замаскированы в TSS.
  37. ^ Дабак, Прасад; Миллинд Борат (октябрь 1999 г.). Недокументированная Windows NT (Книга). Голодные умы. ISBN 0-7645-4569-8.
  38. ^ abc «Таблица глобальных дескрипторов — OSDev Wiki».
  39. ^ «Обзор ProtectedMode [deinmeister.de]» (Веб-сайт) . Проверено 29 июля 2007 г.
  40. ^ ab «Что такое PAE X86?». Microsoft TechNet. 28 мая 2003 г. Архивировано из оригинала (статьи) 22 апреля 2008 г. Проверено 29 июля 2007 г. Процесс подкачки позволяет операционной системе преодолеть реальные ограничения физической памяти. Однако это также оказывает прямое влияние на производительность из-за времени, необходимого для записи или извлечения данных с диска.
  41. ^ Гаро, Жан. «Расширенное программирование встраиваемых систем x86: пейджинг». Встроенный.com. Архивировано из оригинала (Руководство) 16 мая 2008 г. Проверено 29 июля 2007 г. Одновременно может быть активен только один каталог страниц, на что указывает регистр CR3.
  42. ↑ Ab Zwanderer (2 мая 2004 г.). «новости: объяснение многозадачности для x86 №1». НовыйОрер . Новый заказ. Архивировано из оригинала (статьи) 12 февраля 2007 г. Проверено 29 июля 2007 г. Причина, по которой программное переключение задач так популярно, заключается в том, что оно может быть быстрее, чем аппаратное переключение задач. Intel на самом деле никогда не разрабатывала аппаратное переключение задач, они реализовали его, увидели, что оно работает, и просто оставили его там. Достижения в области многозадачности с использованием программного обеспечения сделали эту форму переключения задач быстрее (некоторые говорят, что до 3 раз быстрее), чем аппаратный метод. Другая причина заключается в том, что способ переключения задач Intel вообще не переносим.
  43. ^ Zwanderer (2 мая 2004 г.). «новости: объяснение многозадачности для x86 №1». НовыйОрер . Новый заказ. Архивировано из оригинала (статьи) 12 февраля 2007 г. Проверено 29 июля 2007 г. ... оба полагаются на способность процессоров Intel переключать задачи, они полагаются на это по-разному.

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