Защищённый режим процессора¶
Защищённый режим (англ. protected mode) — это режим работы центрального процессора архитектуры x86, обеспечивающий аппаратную поддержку многозадачности, защиты памяти, виртуальной памяти и привилегированных уровней выполнения. В отличие от реального режима, защищённый режим позволяет операционной системе изолировать процессы друг от друга и от ядра, предотвращая несанкционированный доступ к данным и коду. Впервые реализован в процессоре Intel 80286 (1982 год) и получил полноценное развитие в Intel 80386 (1985 год), где стала доступна 32-битная адресация и страничная организация памяти.
¶История
¶Предпосылки и появление
До появления защищённого режима процессоры x86 (Intel 8086/8088) работали исключительно в реальном режиме. В этом режиме программа могла обращаться к любому участку памяти и портам ввода-вывода, что делало систему уязвимой для сбоев и вредоносного кода. С ростом сложности программного обеспечения и необходимостью поддержки многозадачности возникла потребность в аппаратной защите.
Intel 80286 ввёл защищённый режим как расширение возможностей процессора. Он поддерживал 16-битную адресацию (до 16 Мбайт физической памяти) и механизм сегментной защиты с четырьмя уровнями привилегий (кольца защиты). Однако из-за ограничений 16-битной архитектуры и сложности переключения между режимами, защищённый режим 80286 не получил широкого распространения в операционных системах для массового пользователя.
¶Расцвет в 32-битной архитектуре
С выходом Intel 80386 защищённый режим стал 32-битным. Процессор получил возможность адресовать до 4 Гбайт физической памяти, а также поддерживал страничную организацию памяти (paging), что позволило реализовать виртуальную память. Операционная система Microsoft Windows 3.0 (1990 год) и её последующие версии, а также OS/2 и Linux, активно использовали защищённый режим для обеспечения многозадачности и стабильности.
¶Переход к 64-битным системам
В 64-битной архитектуре x86-64 (AMD64, Intel 64) защищённый режим остаётся основным режимом работы, но дополняется длинным режимом (long mode). В длинном режиме сохраняются принципы защиты памяти и привилегий, но адресация становится 64-битной, а поддержка 16-битного кода в реальном режиме и 32-битного кода в защищённом режиме осуществляется через подрежимы совместимости.
¶Архитектура и принципы работы
¶Таблицы дескрипторов
В защищённом режиме вся память описывается через таблицы дескрипторов. Основные из них:
- Глобальная таблица дескрипторов (GDT) — содержит дескрипторы сегментов, доступные всем задачам. Обычно включает сегменты ядра, кода и данных.
- Локальная таблица дескрипторов (LDT) — может быть создана для каждой задачи, описывая её собственные сегменты. Используется реже, чем GDT.
- Таблица дескрипторов прерываний (IDT) — содержит дескрипторы обработчиков прерываний и исключений.
Каждый дескриптор сегмента содержит базовый адрес, лимит (размер), тип (код/данные/системный), уровень привилегий (DPL) и флаги доступа.
¶Сегментная защита
Память делится на сегменты, каждый из которых имеет свой уровень привилегий (кольцо 0 — самое привилегированное, кольцо 3 — наименее привилегированное). Доступ к сегменту разрешён только в том случае, если текущий уровень привилегий (CPL) задачи не ниже уровня привилегий сегмента (DPL). Это позволяет изолировать ядро (кольцо 0) от пользовательских приложений (кольцо 3).
¶Страничная организация памяти
Страничная адресация (paging) — дополнительный механизм, который работает поверх сегментации. Память делится на страницы фиксированного размера (обычно 4 Кбайт). Процессор использует многоуровневые таблицы страниц для преобразования виртуальных адресов в физические. Каждая страница имеет флаги доступа (чтение, запись, выполнение) и может быть выгружена на диск (флаг присутствия). Это позволяет реализовать виртуальную память, защиту памяти между процессами и разделение адресных пространств.
¶Переключение задач
Защищённый режим поддерживает аппаратное переключение задач через сегменты состояния задачи (TSS). TSS содержит контекст процессора (регистры, указатели стека, карту ввода-вывода). Операционная система может инициировать переключение задач по прерыванию, исключению или команде. В современных ОС (Windows, Linux) аппаратное переключение задач используется редко, предпочитая программное переключение через сохранение контекста в памяти.
¶Классификация и виды
¶По разрядности
- 16-битный защищённый режим (80286) — редко используется, поддерживается только для обратной совместимости.
- 32-битный защищённый режим (80386 и новее) — основной режим для 32-битных операционных систем.
- 64-битный длинный режим (x86-64) — расширение защищённого режима для 64-битной адресации.
¶По режиму работы
- Реальный режим — не является защищённым, но процессор может переключаться между ними.
- Защищённый режим — основной режим для современных ОС.
- Режим системного управления (SMM) — специальный режим для управления питанием и аппаратными событиями, имеет собственное адресное пространство.
¶Применение
¶Операционные системы
Защищённый режим является обязательным для работы многозадачных операционных систем, таких как:
- Microsoft Windows (начиная с Windows 3.0, все версии для x86).
- Linux (ядро работает в кольце 0, пользовательские процессы — в кольце 3).
- macOS (для версий на архитектуре x86).
- FreeBSD, OpenBSD и другие Unix-подобные системы.
¶Виртуализация
Современные гипервизоры (VMware, VirtualBox, KVM) используют защищённый режим для создания виртуальных машин. Процессоры Intel и AMD поддерживают аппаратные расширения виртуализации (VT-x, AMD-V), которые работают поверх защищённого режима.
¶Встраиваемые системы
Некоторые встраиваемые системы и загрузчики (например, GRUB) используют защищённый режим для загрузки ядра ОС.
¶Критика и ограничения
¶Сложность
Программирование защищённого режима требует глубокого понимания архитектуры процессора. Ошибки в настройке GDT, IDT или таблиц страниц могут привести к сбоям системы.
¶Производительность
Механизмы защиты (проверка привилегий, преобразование адресов) вносят накладные расходы. Однако современные процессоры оптимизируют эти операции с помощью кэшей (TLB) и предсказания.
¶Ограничения 16-битной версии
Защищённый режим 80286 имел серьёзные ограничения: невозможность обратного переключения в реальный режим без сброса процессора, что усложняло разработку.
¶Интересные факты
- Первой операционной системой, полностью работавшей в защищённом режиме 80286, была OS/2 1.0 (1987 год).
- В защищённом режиме процессор может выполнять код из реального режима через механизм виртуального режима 8086 (V86), который позволяет запускать DOS-приложения в многозадачной среде.
- В процессорах Intel 80386 и новее защищённый режим включается установкой бита PE (Protection Enable) в регистре CR0.
¶Источники
- Intel Corporation. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volume 3A: System Programming Guide.
- AMD Corporation. AMD64 Architecture Programmer’s Manual. Volume 2: System Programming.
- Таненбаум Э., Бос Х. Современные операционные системы. — 4-е изд. — СПб.: Питер, 2015.
- Русскоязычная документация по архитектуре x86 (OSDev Wiki, раздел «Protected Mode»).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


