Защищенный режим
Часть серии о |
Режимы микропроцессора для x86 архитектуры |
---|
|
В скобках указана первая поддерживаемая платформа. |
В вычислениях защищенный режим , также называемый режимом защищенного виртуального адреса , [ 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 ] и Миникс . [ 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
[ редактировать ]С выпуском модели 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 ]
- Пейджинг
- 32-битное физическое и виртуальное адресное пространство (32-битное физическое адресное пространство отсутствует в 80386SX и других вариантах процессора 386, которые используют старую шину 286. [ 21 ] )
- 32-битные сегментов смещения
- Возможность вернуться в реальный режим без перезагрузки.
- Виртуальный режим 8086
Вход и выход из защищенного режима
[ редактировать ]До выпуска 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 program
; enter protected mode (set PE bit)
mov EBX, CR0 ; save control register 0 (CR0) to EBX
or EBX, PE_BIT ; set PE bit by ORing, save to EBX
mov CR0, EBX ; save EBX back to CR0
; clear prefetch queue; (using far jump instruction 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 ]
- Сегментная арифметика
- Привилегированные инструкции
- Прямой доступ к оборудованию
- Запись в сегмент кода
- Выполнение данных
- Перекрывающиеся сегменты
- Использование функций BIOS, поскольку прерывания BIOS зарезервированы Intel. [ 31 ]
В действительности почти все прикладные программы DOS нарушали эти правила. [ 32 ] Из-за этих ограничений виртуальный режим 8086. в модели 386 был введен Несмотря на такие потенциальные неудачи, Windows 3.0 и ее преемники могут использовать преимущества двоичной совместимости с реальным режимом для запуска многих Windows 2.x ( Windows 2.0 и Windows 2.1x приложений ). в защищенном режиме, который работал в реальном режиме в 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 ]
Сегментная адресация
[ редактировать ]Реальный режим
[ редактировать ]В реальном режиме каждый логический адрес указывает непосредственно на ячейку физической памяти, каждый логический адрес состоит из двух 16-битных частей: Сегментная часть логического адреса содержит базовый адрес сегмента с точностью 16 байт, т. е. сегмент может начать с физического адреса 0, 16, 32, ..., 2 20 − 16. Смещенная часть логического адреса содержит смещение внутри сегмента, т.е. физический адрес может быть рассчитан как физический_адрес = часть_сегмента × 16 + смещение, если адресная строка A20 включена, или (часть_сегмента × 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-бит):
- Если 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 : [ 38 ]
- если X = 1, то C является битом соответствия и определяет, какие уровни привилегий могут перейти в этот сегмент (без изменения уровня привилегий):
- если C только код с тем же уровнем привилегий, что и DPL ; = 0, то сюда может перейти
- если C = 1, то сюда может перейти код с тем же или более низким уровнем привилегий относительно DPL .
- если X = 0, то C — бит направления :
- если C = 0, то сегмент растет вверх ;
- если C = 1, то сегмент растет вниз .
- если X = 1, то C является битом соответствия и определяет, какие уровни привилегий могут перейти в этот сегмент (без изменения уровня привилегий):
- X — бит исполняемого файла : [ 38 ]
- если X = 1, то сегмент является сегментом кода;
- если X = 0, то сегмент является сегментом данных.
- S — бит типа сегмента , который обычно следует сбрасывать для системных сегментов; [ 38 ]
- DPL — уровень привилегий дескриптора ;
- P — бит настоящего времени ;
- D — размер операнда по умолчанию ;
- G — бит детализации ;
- Бит 52 дескриптора 80386 не используется аппаратным обеспечением.
Пейджинг
[ редактировать ]Помимо добавления виртуального режима 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.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Метод контроля доступа к памяти и система для его реализации» . Патент США 5483646 . 23 мая 1995 г. Архивировано из оригинала (Патент) 26 сентября 2007 г. . Проверено 14 июля 2007 г.
Система управления доступом к памяти по п.4, в которой упомянутый первый режим адреса является режимом реального адреса, а упомянутый второй режим адреса является режимом защищенного виртуального адреса.
- ^ Jump up to: а б Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура . Интел . Май 2019 г. Раздел 2.1.3 Процессор Intel 386 (1985 г.).
- ^ Jump up to: а б корень (14 июля 2007 г.). «Гид: Что означает защищенный режим?» (Гид) . Программное обеспечение Делори . Проверено 14 июля 2007 г.
Целью защищенного режима не является защита вашей программы. Цель состоит в том, чтобы защитить всех остальных (включая операционную систему) от вашей программы.
- ^ Jump up to: а б Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура . Интел . Май 2019 г. Раздел 3.1 Режимы работы.
- ^ Коллинз, Роберт (2007). «Основы защищенного режима» (PDF) . ftp.utcluj.ro. Архивировано из оригинала (PDF) 7 июля 2011 г. Проверено 31 июля 2009 г.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура . Интел . Май 2019 г. Раздел 2.1.2 Процессор Intel 286 (1982 г.).
- ^ Jump up to: а б «Отчет Intel о глобальной гражданственности за 2003 год» . Архивировано из оригинала (хронология) 22 марта 2008 г. Проверено 14 июля 2007 г.
1985 Intel выпускает процессор Intel386.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура . Интел . Май 2019 г. Раздел 2.1. Краткая история архитектуры Intel 64 и IA-32.
- ^ Jump up to: а б с «А+ — Аппаратное обеспечение» (Учебное пособие/Руководство) . Учебные пособия по разработкам и функциям микропроцессоров ПК . BrainBell.com . Проверено 24 июля 2007 г.
- ^ Рисли, Дэвид (23 марта 2001 г.). «История процессора» . ПКМеханик. Архивировано из оригинала (статья) 29 августа 2008 года . Проверено 24 июля 2007 г.
Что интересно, дизайнеры того времени никогда не подозревали, что кому-то когда-нибудь понадобится более 1 МБ оперативной памяти.
- ^ Jump up to: а б с д и Каплан, Ярив (1997). «Введение в защищенный режим» . Внутренности.com. Архивировано из оригинала (статьи) 22 июня 2007 г. Проверено 24 июля 2007 г.
- ^ «Общая информация и часто задаваемые вопросы по Coherent Operating System» . 23 января 1993 года.
- ^ «Пресс-релиз Microsoft XENIX 286» (PDF) (пресс-релиз). Майкрософт. Архивировано из оригинала (PDF) 21 октября 2014 г. Проверено 17 августа 2015 г.
- ^ «Информационный листок МИНИКС» . Архивировано из оригинала 7 января 2014 года.
- ^ Мюллер, Скотт (24 марта 2006 г.). «Процессоры P2 (286) второго поколения» . Модернизация и ремонт компьютеров, 17-е издание (книга) (17-е изд.). Que. ISBN 0-7897-3404-4 . Проверено 11 июля 2017 г.
- ^ Jump up to: а б 80386 Справочное руководство программиста (PDF) . Санта-Клара, Калифорния: Intel. 1986. Раздел 2.1 Организация и сегментация памяти.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура . Интел . Май 2019 г. Раздел 3.1 Режимы работы.
- ^ Хайд, Рэндалл (ноябрь 2004 г.). «12.10. Работа в защищенном режиме и драйверы устройств» . Напишите отличный код . О'Рейли. ISBN 1-59327-003-8 .
- ^ Чарльз Петцольд , 32-битное чудо Intel: микропроцессор 80386, журнал PC Magazine , 25 ноября 1986 г., стр. 150-152.
- ^ Том Ягер (6 ноября 2004 г.). «Отправка программного обеспечения для выполнения работы оборудования» . Инфомир . Проверено 24 ноября 2014 г.
- ^ Швец, Геннадий (3 июня 2007 г.). «Семейство процессоров Intel 80386» (Статья) . Проверено 24 июля 2007 г.
80386SX — дешевая версия 80386. Этот процессор имел 16-битную внешнюю шину данных и 24-битную внешнюю шину адреса.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . Раздел 21.33.1 Обход сегмента, стр. 21–34.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . 9.9.1 Переключение в защищенный режим, стр. 9-13.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . Раздел 9.10.2 Листинг STARTUP.ASM, стр. 9-19.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию» . Интел . Раздел 9.9.2 Возврат в режим реального адреса, стр. 9-14.
- ^ Справочное руководство для программиста Intel 80386, 1986 г. (PDF) . Санта-Клара, Калифорния: Intel. 1986. Глава 7, Многозадачность.
- ^ Jump up to: а б Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура . Интел . Май 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» . берлиОС. Архивировано из оригинала (Руководство) 3 октября 2002 года . Проверено 25 июля 2007 г.
... во-вторых, защищенный режим также был несовместим с огромным количеством кода реального режима, существовавшего в то время.
- ^ Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086» . берлиОС. Архивировано из оригинала (Руководство) 3 октября 2002 года . Проверено 25 июля 2007 г.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию . Интел . Май 2019 г. Раздел 20.2 Виртуальный режим 8086.
- ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. Объединенные тома 3A, 3B, 3C и 3D: Руководство по системному программированию . Интел . Май 2019 г. Раздел 20.2.7 Конфиденциальные инструкции.
- ^ Робинсон, Тим (26 августа 2002 г.). «Виртуальный режим 8086» . берлиОС. Архивировано из оригинала (Руководство) 3 октября 2002 года . Проверено 25 июля 2007 г.
Обратной стороной использования режима V86 является скорость: каждая инструкция, чувствительная к IOPL, приводит к переходу ЦП в режим ядра, как и ввод-вывод к портам, которые замаскированы в TSS.
- ^ Дабак, Прасад; Миллинд Борат (октябрь 1999 г.). Недокументированная Windows NT (Книга). Голодные умы. ISBN 0-7645-4569-8 .
- ^ Jump up to: а б с «Таблица глобальных дескрипторов — OSDev Wiki» .
- ^ «Обзор ProtectedMode [deinmeister.de]» (веб-сайт) . Проверено 29 июля 2007 г.
- ^ Jump up to: а б «Что такое PAE X86?» . Microsoft TechNet. 28 мая 2003 г. Архивировано из оригинала (статьи) 22 апреля 2008 г. Проверено 29 июля 2007 г.
Процесс подкачки позволяет операционной системе преодолеть реальные ограничения физической памяти. Однако это также оказывает прямое влияние на производительность из-за времени, необходимого для записи или извлечения данных с диска.
- ^ Гаро, Жан. «Расширенное программирование для встраиваемых систем x86: пейджинг» . Встроенный.com. Архивировано из оригинала (Руководство) 16 мая 2008 г. Проверено 29 июля 2007 г.
Одновременно может быть активен только один каталог страниц, на что указывает регистр CR3.
- ^ Jump up to: а б Цвандерер (2 мая 2004 г.). "новости: объяснение многозадачности для x86 №1" . НовыйОрер . Новый Ордер. Архивировано из оригинала (статьи) 12 февраля 2007 г. Проверено 29 июля 2007 г.
Причина, по которой программное переключение задач так популярно, заключается в том, что оно может быть быстрее, чем аппаратное переключение задач. Intel на самом деле никогда не разрабатывала аппаратное переключение задач, они реализовали его, увидели, что оно работает, и просто оставили его там. Достижения в области многозадачности с использованием программного обеспечения сделали эту форму переключения задач быстрее (некоторые говорят, что до 3 раз быстрее), чем аппаратный метод. Другая причина заключается в том, что способ переключения задач Intel вообще не переносим.
- ^ Цвандерер (2 мая 2004 г.). "новости: объяснение многозадачности для x86 №1" . НовыйОрер . Новый Ордер. Архивировано из оригинала (статьи) 12 февраля 2007 г. Проверено 29 июля 2007 г.
... оба полагаются на способность процессоров Intel переключать задачи, они полагаются на это по-разному.
Внешние ссылки
[ редактировать ]- Основы защищенного режима
- Введение в защищенный режим
- Обзор операций защищенного режима архитектуры Intel
- Учебное пособие TurboIRC.COM по входу в защищенный режим из DOS
- Обзор и руководство по защищенному режиму
- Учебное пособие по защищенному режиму проекта кода
- Akernelloader переключается из реального режима в защищенный режим