При вычислении, защищенный режим , называемый также защищенный режим виртуального адреса , [1] является режим работы x86 совместимыми с RIHD центральных процессоров (CPU). Он позволяет системному программному обеспечению использовать такие функции, как виртуальная память , подкачка страниц и безопасная многозадачность, предназначенные для увеличения контроля операционной системы над прикладным программным обеспечением . [2] [3]
Когда процессор, поддерживающий защищенный режим x86, включен, он начинает выполнять инструкции в реальном режиме , чтобы поддерживать обратную совместимость с более ранними процессорами x86. [4] В защищенный режим можно войти только после того, как системное программное обеспечение установит одну таблицу дескрипторов и активирует бит включения защиты (PE) в регистре управления 0 (CR0). [5]
Защищенный режим был впервые добавлен к x86 архитектуре в 1982 году, [6] с выходом Intel «с 80286 (286) процессора, а затем продлен с выпуском 80386 (386) в 1985 году [7] Из - за усовершенствования добавленный защищенным режимом, он получил широкое распространение и стал основой для всех последующих улучшений архитектуры x86 [8], хотя многие из этих улучшений, такие как добавленные инструкции и новые регистры, также принесли пользу реальному режиму.
История
Intel 8086 , предшественник 286 был первоначально разработан с 20- битной шиной адреса для своей памяти . [9] Это позволило процессору получить доступ к 2 20 байтам памяти, что эквивалентно 1 мегабайту . [9] В то время 1 мегабайт считался относительно большим объемом памяти, [10] поэтому разработчики IBM Personal Computer зарезервировали первые 640 килобайт для использования приложениями и операционной системой, а остальные 384 килобайта для BIOS. (Базовая система ввода / вывода) и память для дополнительных устройств . [11]
Поскольку стоимость памяти снизилась, а использование памяти увеличилось, ограничение в 1 МБ стало серьезной проблемой. Intel намеревалась устранить это ограничение вместе с другими с выпуском 286. [11]
286
Первоначальный защищенный режим, выпущенный с 286, не получил широкого распространения; [11] например, он использовался Coherent (с 1982 г.) [12] [13] Microsoft Xenix (около 1984 г.) [14] и Minix . [15] Ряд недостатков, таких как невозможность доступа к BIOS или вызовам DOS из-за невозможности вернуться в реальный режим без перезагрузки процессора, препятствовали широкому использованию. [16] Принятие было дополнительно затруднено тем фактом, что 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
С выпуском 386 в 1985 году [7] были решены многие проблемы, препятствующие широкому распространению предыдущего защищенного режима. [11] 386 был выпущен с размером адресной шины 32 бита, что обеспечивает доступ к памяти 2 32 байта, что эквивалентно 4 гигабайтам . [17] Размеры сегментов также были увеличены до 32 бит, что означает, что доступ к полному адресному пространству в 4 гигабайта можно было получить без необходимости переключения между несколькими сегментами. [17] В дополнение к увеличенному размеру адресной шины и регистров сегментов было добавлено множество других новых функций с целью повышения безопасности и стабильности работы. [18] Защищенный режим сейчас используется практически во всех современных операционных системах, работающих на архитектуре x86, таких как Microsoft Windows , Linux и многие другие. [19]
Кроме того, обучение от сбоев защищенного режима 286 , чтобы удовлетворить потребности в многопользовательском DOS , Intel добавила отдельный виртуальный режим 8086 , [20] , что позволило множественному виртуализировать 8086 процессоров , которые будут эмулировать на 386. виртуализации x86 Hardware , необходимую для виртуализации Однако самого защищенного режима пришлось ждать еще 20 лет. [21]
386 дополнений к защищенному режиму
С выпуском модели 386 в защищенный режим были добавлены следующие дополнительные функции: [2]
- Пейджинг
- 32-битное физическое и виртуальное адресное пространство (32-битное физическое адресное пространство отсутствует на 80386SX и других вариантах процессора 386, которые используют старую шину 286 [22] ).
- 32-битные смещения сегмента
- Возможность вернуться в реальный режим без перезагрузки
- Виртуальный режим 8086
Вход и выход из защищенного режима
До выпуска модели 386 защищенный режим не предлагал прямого способа переключения обратно в реальный режим после входа в защищенный режим. IBM разработала обходной путь (реализованный в IBM AT ), который включал сброс ЦП с помощью контроллера клавиатуры и сохранение системных регистров, указателя стека и часто маски прерывания в ОЗУ микросхемы часов реального времени. Это позволило BIOS восстановить ЦП до аналогичного состояния и начать выполнение кода до сброса. [ требуется пояснение ] Позже для сброса ЦП 286 использовалась тройная ошибка , которая была намного быстрее и чище, чем метод контроллера клавиатуры (и не зависит от IBM AT-совместимого оборудования, но будет работать на любом ЦП 80286 в любом система).
Чтобы войти в защищенный режим, сначала необходимо создать глобальную таблицу дескрипторов (GDT) как минимум с тремя записями: нулевой дескриптор, дескриптор сегмента кода и дескриптор сегмента данных. На IBM-совместимом компьютере линия A20 (21-я адресная строка) также должна быть включена, чтобы разрешить использование всех адресных строк, чтобы ЦП мог получить доступ к памяти, превышающей 1 мегабайт (после включение питания, чтобы гарантировать совместимость со старым программным обеспечением, написанным для моделей IBM PC и PC / XT на базе Intel 8088 ). После выполнения этих двух шагов в регистре CR0 должен быть установлен бит PE, и должен быть сделан дальний переход, чтобы очистить входную очередь предварительной выборки .
; установить бит PE mov eax , cr0 или eax , 1 mov cr0 , eax; дальний прыжок (cs = селектор сегмента кода) jmp cs : @ pm@ Вечер: ; Сейчас мы в личку.
С выпуском 386 из защищенного режима можно было выйти, загрузив в сегментные регистры значения реального режима, отключив линию A20 и очистив бит PE в регистре CR0, без необходимости выполнять начальные шаги настройки, необходимые для 286.
Функции
Защищенный режим имеет ряд функций, разработанных для улучшения контроля операционной системы над прикладным программным обеспечением с целью повышения безопасности и стабильности системы. [3] Эти дополнения позволяют операционной системе работать так, как это было бы значительно сложнее или даже невозможно без надлежащей аппаратной поддержки. [23]
Уровни привилегий
В защищенном режиме существует четыре уровня привилегий или кольца , пронумерованные от 0 до 3, причем кольцо 0 является наиболее привилегированным, а 3 - наименьшим. Использование колец позволяет системному программному обеспечению ограничивать задачи от доступа к данным, шлюзов вызова или выполнения привилегированных инструкций. [24] В большинстве сред операционная система и некоторые драйверы устройств работают в кольце 0, а приложения - в кольце 3. [24]
Совместимость приложений в реальном режиме
Согласно Справочному руководству программиста Intel 80286 , [25]
80286 остается совместимым снизу вверх с большинством прикладных программ 8086 и 80186. Большинство прикладных программ 8086 можно перекомпилировать или перекомпилировать и запустить на 80286 в защищенном режиме.
По большей части, двоичная совместимость с кодом реального режима, возможность доступа до 16 МБ физической памяти и 1 ГБ виртуальной памяти были наиболее очевидными изменениями для программистов приложений. [26] Это было не без ограничений. Если приложение использовало или полагалось на какой-либо из нижеприведенных методов, оно не запускалось: [27]
- Сегментная арифметика
- Привилегированные инструкции
- Прямой доступ к оборудованию
- Запись в сегмент кода
- Выполнение данных
- Перекрывающиеся сегменты
- Использование функций BIOS, поскольку прерывания BIOS зарезервированы Intel [28]
На самом деле почти все прикладные программы DOS нарушали эти правила. [29] Из-за этих ограничений виртуальный режим 8086 был введен в 386. Несмотря на такие потенциальные неудачи, Windows 3.0 и ее преемники могут использовать преимущества двоичной совместимости с реальным режимом для запуска многих Windows 2.x ( Windows 2.0 и Windows 2.1 x ) приложения в защищенном режиме, которые работали в реальном режиме в Windows 2.x. [30]
Виртуальный режим 8086
С выпуском 386 защищенный режим предлагает то, что в руководствах Intel называют виртуальным режимом 8086 . Виртуальный режим 8086 предназначен для того, чтобы код, ранее написанный для 8086, мог выполняться без изменений и одновременно с другими задачами без ущерба для безопасности или стабильности системы. [31]
Однако режим Virtual 8086 не полностью обратно совместим со всеми программами. Программы, которые требуют манипулирования сегментами, привилегированных инструкций, прямого доступа к оборудованию или используют самомодифицирующийся код, будут генерировать исключение, которое должно обслуживаться операционной системой. [32] Кроме того, приложения, работающие в виртуальном режиме 8086, генерируют ловушку с использованием инструкций, которые включают ввод / вывод (I / O), что может отрицательно сказаться на производительности. [33]
Из-за этих ограничений некоторые программы, изначально разработанные для работы на 8086, не могут работать в виртуальном режиме 8086. В результате системное программное обеспечение вынуждено либо ставить под угрозу безопасность системы, либо обеспечивать обратную совместимость при работе с устаревшим программным обеспечением . Пример такого компромисса можно увидеть с выпуском Windows NT , в котором упала обратная совместимость для «плохо себя ведающих» приложений DOS. [34]
Сегментная адресация
Реальный режим
В реальном режиме каждый логический адрес указывает непосредственно на физическую ячейку памяти, каждый логический адрес состоит из двух 16-битных частей: сегментная часть логического адреса содержит базовый адрес сегмента с гранулярностью 16 байтов, т. Е. Сегмент может начинаться с физический адрес 0, 16, 32, ..., 2 20 -16. Часть смещения логического адреса содержит смещение внутри сегмента, то есть физический адрес может быть вычислен как physical_address : = segment_part × 16 + offset
(если адресная строка A20 включена), соответственно (сегмент_часть × 16 + смещение) 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-бит для краткости):
- Если G-бит равен нулю, предел имеет гранулярность 1 байт, т.е. размер сегмента может составлять 1, 2, ..., 2 20 байтов.
- Если G-бит равен одному пределу, его гранулярность составляет 2 12 байтов, то есть размер сегмента может составлять 1 × 2 12 , 2 × 2 12 , ..., 2 20 × 2 12 байтов. Если подкачка отключена, вычисленный линейный адрес равен адресу физической памяти. Если пейджинг включен, вычисленный линейный адрес используется как вход пейджинга.
Процессор 386 также использует 32-битные значения для смещения адреса.
Для обеспечения совместимости с 286 защищенным режимом был добавлен новый флаг по умолчанию (для краткости D-бит). Если бит D сегмента кода выключен (0), все команды внутри этого сегмента по умолчанию будут интерпретироваться как 16-битные команды; если он включен (1), они будут интерпретироваться как 32-битные команды.
Структура записи дескриптора сегмента
80286 Дескриптор сегмента | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
80386 Дескриптор сегмента | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Где:
- A - бит доступа ;
- R - читаемый бит;
- C (бит 42) зависит от X : [35]
- если X = 1, то C является битом согласования и определяет, какие уровни привилегий могут далеко перейти к этому сегменту (без изменения уровня привилегий):
- если C = 0, то сюда может перейти только код с тем же уровнем привилегий, что и DPL ;
- если C = 1, то сюда может перейти код с таким же или более низким уровнем привилегий относительно DPL .
- если X = 0, то C - бит направления :
- если С = 0 , то сегмент растет вверх ;
- если C = 1, то отрезок растет вниз .
- если X = 1, то C является битом согласования и определяет, какие уровни привилегий могут далеко перейти к этому сегменту (без изменения уровня привилегий):
- X - исполняемый бит: [35]
- если X = 1, то сегмент является сегментом кода;
- если X = 0, то сегмент является сегментом данных.
- S - это бит типа сегмента , который обычно должен быть очищен для системных сегментов; [35]
- DPL - это уровень привилегий дескриптора ;
- P является Present бит;
- D - размер операнда по умолчанию ;
- G - бит гранулярности ;
- Бит 52 дескриптора 80386 не используется оборудованием.
Пейджинг
В дополнение к добавлению виртуального режима 8086, 386 также добавил пейджинг в защищенный режим. [36] Посредством разбиения на страницы системное программное обеспечение может ограничивать и контролировать доступ задачи к страницам, которые представляют собой разделы памяти. Во многих операционных системах подкачка используется для создания независимого виртуального адресного пространства для каждой задачи, не позволяя одной задаче манипулировать памятью другой. Пейджинг также позволяет перемещать страницы из основного хранилища в более медленное и большее дополнительное хранилище , такое как жесткий диск . [37] Это позволяет использовать больше памяти, чем физически доступно в первичной памяти. [37]
Архитектура x86 позволяет управлять страницами через два массива : каталоги страниц и таблицы страниц . Первоначально каталог страниц имел размер одной страницы, четыре килобайта, и содержал 1024 записи каталога страниц (PDE), хотя последующие усовершенствования архитектуры x86 добавили возможность использовать страницы большего размера. Каждый PDE содержал указатель на таблицу страниц. Таблица страниц также изначально имела размер четыре килобайта и содержала 1024 записи таблицы страниц (PTE). Каждый PTE содержит указатель на фактический физический адрес страницы и используется только при использовании страниц размером 4 килобайта. В любой момент времени может использоваться только один каталог страниц. [38]
Многозадачность
Благодаря использованию колец, привилегированных шлюзов вызовов и сегмента состояния задачи (TSS), представленного в 286, в архитектуре x86 стала возможной приоритетная многозадачность . TSS позволяет изменять регистры общего назначения, поля селектора сегментов и стеки, не затрагивая регистры другой задачи. TSS также позволяет уровню привилегий задачи и разрешениям порта ввода-вывода быть независимыми от другой задачи.
Во многих операционных системах не используются все функции TSS. [39] Обычно это происходит из-за проблем с переносимостью или из-за проблем с производительностью, создаваемых аппаратными переключателями задач. [39] В результате многие операционные системы используют как оборудование, так и программное обеспечение для создания многозадачной системы. [40]
Операционные системы
Операционные системы, такие как OS / 2 1.x, пытаются переключить процессор между защищенным и реальным режимами. Это одновременно медленно и небезопасно, потому что программа, работающая в реальном режиме, может легко вывести компьютер из строя. OS / 2 1.x определяет ограничительные правила программирования, позволяющие семейному 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 был удален из длинного режима.
Смотрите также
- Длинный режим
- язык ассемблера
- Intel
- Кольцо (компьютерная безопасность)
- язык ассемблера x86
Рекомендации
- ^ "Метод контроля доступа к памяти и система для реализации того же самого" . Патент США 5483646 . 23 мая 1995 г. Архивировано 26 сентября 2007 г. из оригинала (Патент) . Проверено 14 июля 2007 .
Система управления доступом к памяти по п.4, в которой упомянутый первый режим адреса является режимом реального адреса, а упомянутый второй режим адреса является режимом защищенного виртуального адреса.
- ^ а б Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура . Intel . Май 2019 г. Раздел 2.1.3 Процессор Intel 386 (1985 г.).
- ^ а б root (14 июля 2007 г.). "Руководство: Что означает защищенный режим?" (Гид) . Delorie Software . Проверено 14 июля 2007 .
Защищенный режим предназначен не для защиты вашей программы. Цель состоит в том, чтобы защитить всех остальных (включая операционную систему) от вашей программы.
- ^ а б Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура . Intel . Май 2019. Раздел 3.1 Режимы работы.
- ^ Коллинз, Роберт (2007). «Основы защищенного режима» (PDF) . ftp.utcluj.ro. Архивировано из оригинального (PDF) 07.07.2011 . Проверено 31 июля 2009 .
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура . Intel . Май 2019 г. Раздел 2.1.2 Процессор Intel 286 (1982 г.).
- ^ а б «Отчет Intel Global Citizenship Report 2003» . Архивировано из оригинала (Timeline) на 2008-03-22 . Проверено 14 июля 2007 .
1985 Intel выпускает процессор Intel386
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура . Intel . Май 2019. Раздел 2.1 Краткая история архитектуры Intel 64 и IA-32.
- ^ а б в «A + - Оборудование» (Учебник / Руководство) . Учебные пособия по разработке и функциям микропроцессоров ПК . BrainBell.com . Проверено 24 июля 2007 .
- ^ Рисли, Дэвид (23 марта 2001 г.). «История процессора» . PCMechanic. Архивировано из оригинала (статьи) 29 августа 2008 года . Проверено 24 июля 2007 .
Что интересно, дизайнеры того времени никогда не подозревали, что кому-то понадобится более 1 МБ оперативной памяти.
- ^ а б в г д Каплан, Ярив (1997). «Введение в защищенный режим» . Internals.com. Архивировано из оригинала (статьи) 22.06.2007 . Проверено 24 июля 2007 .
- ^ https://de.zxc.wiki/wiki/Mark_Williams_Company
- ^ «Часто задаваемые вопросы по общей информации для согласованной операционной системы» . 23 января 1993 г.
- ^ «Microsoft XENIX 286 Press Release» (PDF) (Пресс-релиз). Microsoft.
- ^ «Информационный лист MINIX» . Архивировано из оригинала на 7 января 2014 года.
- ^ Мюллер, Скотт (24 марта 2006 г.). «P2 (286) Процессоры второго поколения» . Обновление и ремонт ПК, 17-е издание (книга) (17-е изд.). Que. ISBN 0-7897-3404-4. Проверено 11 июля 2017 .
- ^ а б Справочное руководство программиста 80386 (PDF) . Санта-Клара, Калифорния: Intel. 1986. Раздел 2.1 Организация памяти и сегментация.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура . Intel . Май 2019. Раздел 3.1 Режимы работы.
- ^ Хайд, Рэндалл (ноябрь 2004 г.). «12.10. Работа в защищенном режиме и драйверы устройств» . Напишите отличный код . О'Рейли. ISBN 1-59327-003-8.
- ↑ Чарльз Петцольд , Intel's 32-bit Wonder: The 80386 Microprocessor, PC Magazine , 25 ноября 1986 г., стр. 150-152.
- ^ Том Ягер (6 ноября 2004 г.). «Отправка программного обеспечения для работы с оборудованием» . InfoWorld . Проверено 24 ноября 2014 года .
- ^ Швец, Геннадий (3 июня 2007 г.). «Семейство процессоров Intel 80386» (Статья) . Проверено 24 июля 2007 .
80386SX - недорогая версия 80386. Этот процессор имел 16-битную внешнюю шину данных и 24-битную внешнюю шину адреса.
- ^ Справочное руководство программиста Intel 80386 1986 (PDF) . Санта-Клара, Калифорния: Intel. 1986. Глава 7, Многозадачность.
- ^ а б Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 Том 1: Базовая архитектура . Intel . Май 2019 г. Раздел 6.3.5. Обращения к другим уровням привилегий.
- ^ Справочное руководство программиста 80286 и 80287 (PDF) . Санта-Клара, Калифорния: Intel. 1987. Раздел 1.2 Режимы работы.
- ^ Справочное руководство программиста 80286 и 80287 (PDF) . Санта-Клара, Калифорния: Intel. 1987. Раздел 1.3.1 Управление памятью.
- ^ Справочное руководство программиста 80286 и 80287 (PDF) . Санта-Клара, Калифорния: Intel. 1987. Приложение C Вопросы совместимости 8086/8088.
- ^ «Метод контроля доступа к памяти и система для его реализации» (Патент) . Патент США 5483646 . 6 мая 1998 . Проверено 25 июля 2007 .
На сегодняшний день это было невозможно, и команды разработчиков BIOS вынуждены были добавить в BIOS поддержку 32-разрядных вызовов функций из 32-разрядных приложений.
- ^ Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086» . berliOS. Архивировано из оригинала (Guide) 3 октября 2002 года . Проверено 25 июля 2007 .
... во-вторых, защищенный режим также был несовместим с огромным количеством кода реального режима в то время.
- ^ Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086» . berliOS. Архивировано из оригинала (Guide) 3 октября 2002 года . Проверено 25 июля 2007 .
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию . Intel . Май 2019. Раздел 20.2 Виртуальный режим 8086.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию . Intel . Май 2019 г. Раздел 20.2.7 Конфиденциальные инструкции.
- ^ Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086» . berliOS. Архивировано из оригинала (Guide) 3 октября 2002 года . Проверено 25 июля 2007 .
Обратной стороной использования режима V86 является скорость: каждая команда, чувствительная к IOPL, заставляет ЦП переключаться в режим ядра, как и ввод-вывод для портов, которые замаскированы в TSS.
- ^ Дабак, прасад; Миллинд борат (октябрь 1999 г.). Недокументированная Windows NT (Книга). Голодные умы. ISBN 0-7645-4569-8.
- ^ а б в «Глобальная таблица дескрипторов - OSDev Wiki» .
- ^ «Обзор ProtectedMode [deinmeister.de]» (веб-сайт) . Проверено 29 июля 2007 .
- ^ а б "Что такое PAE X86?" (Статья) . Microsoft TechNet. 28 мая 2003 . Проверено 29 июля 2007 .
Процесс подкачки позволяет операционной системе преодолеть реальные ограничения физической памяти. Однако это также оказывает прямое влияние на производительность из-за времени, необходимого для записи или извлечения данных с диска.
- ^ Гаро, Жан. «Расширенное встроенное программирование x86: пейджинг» (Руководство) . Embedded.com . Проверено 29 июля 2007 .
Одновременно может быть активна только одна директория страниц, на что указывает регистр CR3.
- ^ а б zwanderer (2 мая 2004 г.). "Новости: Многозадачность для x86 объяснена №1" . NewOrer . Новый порядок. Архивировано из оригинала (статьи) 12 февраля 2007 года . Проверено 29 июля 2007 .
Причина, по которой переключение задач программного обеспечения так популярно, заключается в том, что оно может быть быстрее, чем переключение задач на аппаратном уровне. Intel никогда не разрабатывала аппаратное переключение задач, они реализовали его, убедились, что это работает, и просто оставили это там. Прогресс в многозадачности с использованием программного обеспечения сделал эту форму переключения задач быстрее (некоторые говорят, что до 3 раз быстрее), чем аппаратный метод. Другая причина в том, что способ переключения задач Intel вообще не переносится.
- ^ zwanderer (2 мая 2004 г.). "Новости: Многозадачность для x86 объяснена №1" . NewOrer . Новый порядок. Архивировано из оригинала (статьи) 12 февраля 2007 года . Проверено 29 июля 2007 .
... оба полагаются на способность процессоров Intel переключать задачи, они полагаются на это по-разному.
Внешние ссылки
- Основы защищенного режима
- Введение в защищенный режим
- Обзор операций в защищенном режиме архитектуры Intel
- TurboIRC.COM: как войти в защищенный режим из DOS
- Обзор и руководство по защищенному режиму
- Учебное пособие по защищенному режиму проекта кода
- Переключение Akernelloader из реального режима в защищенный.