Обмен технологиями

Замечания по сборке Windows 32 (1): базовые знания

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Режим работы процессора 80х86.

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

Обзор реального режима

Реальный режим — это самый ранний рабочий режим, поддерживаемый процессором 80x86, а также самый простой рабочий режим. Реальный режим в основном используется в ранних операционных системах MS-DOS и других простых операционных средах. В реальном режиме процессор имеет прямой доступ к 1 МБ физической памяти. Этот режим полностью совместим с работой процессора 8086, отсюда и название «реальный режим».

Возможности реального режима

  1. Ограничения адресного пространства

    • В реальном режиме процессор может получить доступ только к 1 МБ памяти (от 0x00000 до 0xFFFFF).
    • Объем памяти ограничен 20-битной адресной шиной.
  2. Адрес сегмента и адрес смещения

    • В реальном режиме для адресации памяти используется метод сегмент:смещение (сегмент).
    • Адрес сегмента умножается на 16 (то есть сдвигается влево на 4 бита) и добавляется к адресу смещения, чтобы сформировать 20-битный физический адрес.
    • Например, если адрес сегмента — 0x1234, а адрес смещения — 0x5678, физический адрес: Физический адрес = (0x1234×16) + 0x5678 = 0x12340 + 0x5678 = 0x179B8текст{физический адрес} = (0x1234×16) + 0x5678 = 0x12340 + 0x5678 = 0x179B8 физический адрес=(0x1234×16)+0x5678=0x12340+0x5678=0x179B8
  3. Нет защиты памяти

    • Реальный режим не имеет механизма защиты памяти, и программа может произвольно обращаться ко всему пространству памяти размером 1 МБ, включая область операционной системы и области других программ.
    • Это позволяет программам мешать друг другу и легко приводить к сбоям в работе системы.
  4. прямой доступ к оборудованию

    • Реальный режим обеспечивает прямой доступ к аппаратным устройствам и портам ввода-вывода.
    • В реальном режиме программы могут взаимодействовать с аппаратными устройствами напрямую, используя инструкции ввода-вывода, такие как IN и OUT.
  5. Прерывания и инициализация процессора

    • Реальный режим поддерживает аппаратные и программные прерывания, которые управляются с помощью таблицы векторов прерываний (IVT).
    • Таблица векторов прерываний хранится в самой нижней области памяти размером 1 КБ (от 0x00000 до 0x003FF).
    • После включения или перезагрузки процессора он автоматически перейдет в реальный режим и начнет выполнение кода с адреса 0xFFFF0.
  6. Ограничения на исполняемый код

    • Размер сегмента исполняемого кода в реальном режиме ограничен, обычно сегмент кода составляет до 64 КБ (от 0x0000 до 0xFFFF).

Схема памяти в реальном режиме

В реальном режиме структура памяти обычно включает в себя следующие части:

  1. Область биоса

    • Высокопроизводительная память (от 0xF0000 до 0xFFFFF) обычно используется для хранения кода и данных BIOS.
    • При включении питания или перезагрузке процессор начинает выполнять код BIOS по адресу 0xFFFF0.
  2. Таблица векторов прерываний

    • Самая нижняя область памяти размером 1 КБ (от 0x00000 до 0x003FF) хранит таблицу векторов прерываний.
    • Каждый вектор прерывания занимает 4 байта (2-байтовый адрес сегмента и 2-байтовый адрес смещения).
  3. Операционные системы и приложения

    • Оставшаяся область памяти используется для кода операционной системы, кода приложения и данных.

1.2 Режим защиты

Обзор

Защищенный режим — это расширенный рабочий режим, представленный процессором 80x86. По сравнению с реальным режимом он обеспечивает более мощные функции управления и защиты памяти. Защищенный режим впервые был представлен на процессоре 80286 и был расширен и улучшен на процессорах 80386 и более поздних версиях.

Особенности защищенного режима

  1. Расширенное адресное пространство памяти

    • Защищенный режим поддерживает 24-битную или 32-битную адресную шину и может получить доступ к 4 ГБ физической памяти (на 80386 и более поздних версиях).
    • Селекторы сегментов и дескрипторы сегментов используются для управления памятью, обеспечивая более сложное расположение и управление памятью.
  2. защита памяти

    • С помощью дескрипторов сегментов и таблиц страниц защищенный режим может реализовать защиту памяти, чтобы предотвратить несанкционированный доступ программ к памяти других программ или операционных систем.
    • Поддерживает сегменты кода и данных разных уровней привилегий (от уровня 0 до уровня 3) для достижения изоляции между пользовательским режимом и режимом ядра.
  3. Пейджинговый механизм

    • Поддерживает механизм подкачки и сопоставляет виртуальные адреса с физическими адресами через таблицы страниц для дальнейшего расширения возможностей управления памятью.
    • Размер страницы обычно составляет 4 КБ, но поддерживаются и большие страницы (например, 4 МБ).
  4. Многозадачность с аппаратной поддержкой

    • Обеспечивает аппаратно поддерживаемое многозадачное переключение, включая сегмент состояния задачи (TSS) и регистр задач (Task Register).
    • Поддерживает шлюз задач для переключения и защиты между задачами.
  5. Улучшенная обработка прерываний и исключений.

    • В защищенном режиме таблица дескрипторов прерываний (IDT) используется для управления прерываниями и обработки исключений.
    • IDT поддерживает дескрипторы шлюзов (Gate Descriptor), включая шлюзы прерываний, шлюзы ловушек и шлюзы задач.
  6. Виртуальная память

    • Поддерживает виртуальную память и реализует виртуальное адресное пространство посредством механизма подкачки, что позволяет программе использовать большее адресное пространство, чем фактическая физическая память.

Управление памятью в защищенном режиме

  1. Селекторы сегментов и дескрипторы сегментов

    • Каждый селектор сегмента указывает на дескриптор сегмента, который содержит базовый адрес сегмента, ограничение сегмента и атрибуты сегмента (такие как разрешения и тип).
    • Селекторы сегментов и дескрипторы сегментов управляются глобальной таблицей дескрипторов (GDT) и локальной таблицей дескрипторов (LDT).
  2. Пейджинговый механизм

    • Механизм подкачки делит виртуальный адрес на каталог страниц (Page Directory), таблицу страниц (Page Table) и страничный фрейм (Page Frame).
    • Через каталог страниц и таблицу страниц виртуальные адреса сопоставляются с физическими адресами для обеспечения защиты и управления памятью.

Приложение защищенного режима

Защищенный режим широко используется в современных операционных системах, таких как Windows, Linux, Unix и т. д. Они используют характеристики защищенного режима для реализации расширенных функций, таких как многозадачность, многопользовательская работа и защита памяти. Благодаря защищенному режиму операционная система может эффективно управлять аппаратными ресурсами и обеспечивать стабильную и безопасную рабочую среду.

Защищенный режим — это основа современных операционных систем и приложений, в которой в полной мере используются расширенные функции процессора 80x86 для повышения стабильности и безопасности системы.

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

Обзор виртуального режима 8086

Виртуальный режим 8086 (Virtual 8086 Mode) — это специальный режим, предоставляемый процессором 80x86 в защищенном режиме, позволяющий процессору запускать программы 8086 так, как если бы они выполнялись в реальном режиме. Этот режим в основном используется для обратной совместимости, позволяя старым версиям программ DOS работать в современных операционных системах, таких как Windows и Linux, не выходя из защищенного режима.

Особенности виртуального режима 8086

  1. Совместимость с реальным режимом

    • Виртуальный режим 8086 позволяет процессору моделировать операционную среду в реальном режиме и поддерживает набор команд 8086 и адресное пространство.
    • Процессор может выполнять 8086 программ в защищенном режиме, сохраняя при этом функции и преимущества защищенного режима.
  2. Механизмы пейджинга и защиты

    • В виртуальном режиме 8086 процессор по-прежнему может использовать механизм подкачки защищенного режима для реализации виртуальной памяти и защиты памяти.
    • С помощью таблицы страниц адресное пространство в виртуальном режиме 8086 можно сопоставить с физической памятью, обеспечивая изоляцию и защиту памяти.
  3. Обработка прерываний и исключений

    • Режим Virtual 8086 поддерживает обработку прерываний и исключений, которыми можно управлять с помощью таблицы дескрипторов прерываний защищенного режима (IDT).
    • Прерывания и исключения могут обрабатываться виртуальным монитором 8086 (обычно ядром операционной системы), обеспечивая стабильность и безопасность системы.
  4. Поддержка аппаратной виртуализации

    • Некоторые современные процессоры предоставляют аппаратно поддерживаемую технологию виртуализации, которая позволяет более эффективно реализовать виртуальный режим 8086.
    • Например, технологии Intel VT-x и AMD-V от AMD могут обеспечить поддержку виртуализации с аппаратным ускорением и повысить производительность.

Управление памятью в режиме виртуального 8086

  1. Сегмент: смещенная адресация

    • В виртуальном режиме 8086 метод адресации памяти такой же, как и в реальном режиме, с использованием режима сегмента: смещения (сегмента).
    • Адрес сегмента и адрес смещения вместе образуют 20-битный физический адрес, который может иметь доступ к 1 МБ памяти.
  2. Пейджинговый механизм

    • Виртуальный режим 8086 поддерживает механизм подкачки, который может отображать 20-битный адрес реального режима в виртуальное адресное пространство в защищенном режиме.
    • С помощью таблиц страниц можно обеспечить защиту и изоляцию памяти, чтобы предотвратить незаконный доступ программ в виртуальном режиме 8086 к другим областям памяти.

Применение виртуального режима 8086

  1. Запускайте старые программы DOS

    • Режим Virtual 8086 в основном используется для запуска старых версий программ и приложений DOS, обеспечивая обратную совместимость.
    • В современных операционных системах виртуальный режим 8086 позволяет запускать некоторые старые программы, которые необходимо выполнять в реальном режиме.
  2. Виртуальные машины и эмуляторы

    • Некоторые виртуальные машины и эмуляторы используют виртуальный режим 8086 для поддержки старых операционных систем и программного обеспечения.
    • Например, такие эмуляторы, как DOSBox, моделируют среду DOS через виртуальный режим 8086, позволяя пользователям запускать классические игры и приложения DOS.

Ограничения виртуального режима 8086

  1. адресное пространство памяти

    • В виртуальном режиме 8086 программа может получить доступ только к 1 МБ адресного пространства памяти, которое ограничено реальным режимом.
  2. Накладные расходы на производительность

    • Реализация виртуального режима 8086 требует поддержки защищенного режима, что может вызвать определенные потери производительности.
    • Обработка прерываний и исключений требует вмешательства виртуального монитора 8086 (ядра операционной системы), что увеличивает сложность обработки.
  3. Аппаратные ограничения

    • Не все оборудование полностью поддерживает виртуальный режим 8086, а некоторые аппаратные функции могут быть недоступны в виртуальном режиме 8086.

Подведем итог

Виртуальный режим 8086 — это специальный режим, предоставляемый процессором 80x86 в защищенном режиме, в основном для обратной совместимости со старыми версиями программ DOS. Режим Virtual 8086 позволяет процессору имитировать операционную среду реального режима в защищенном режиме, сохраняя при этом функции и преимущества защищенного режима. Этот режим широко используется для запуска устаревшего программного обеспечения, виртуальных машин и эмуляторов.

2. Управление памятью Windows

2.1 Организация памяти операционной системы DOS

Управление памятью операционной системы DOS (Дисковая операционная система) в основном основано на модели памяти реального режима процессора 8086/8088. Адресное пространство памяти в реальном режиме составляет 1 МБ, от 0x00000 до 0xFFFFF. Это адресное пространство размером 1 МБ разделено на несколько основных областей, каждая из которых имеет определенную цель. Ниже приводится подробное введение в организацию памяти операционной системы DOS.

модель памяти в реальном режиме

В реальном режиме доступ к адресу памяти осуществляется путем объединения адреса сегмента и адреса смещения в 20-битный физический адрес. Адрес сегмента сдвигается влево на 4 бита, а адрес смещения добавляется для формирования фактического физического адреса.

расположение памяти

Распределение памяти объемом 1 МБ в реальном режиме примерно следующее:

  1. Таблица векторов прерываний (IVT): 0x00000 - 0x003FF

    • Занимает 1 КБ (256 векторов по 4 байта каждый).
    • Сохраните адрес входа и соответствующую информацию о процедуре обслуживания прерываний.
  2. Область данных BIOS (BDA): 0x00400–0x004FF

    • Около 256 байт.
    • Хранит параметры системы и аппаратного устройства, такие как жесткий диск, последовательный порт, параллельный порт и т. д. информацию.
  3. Устаревшая память (обычная память): 0x00500 - 0x9FFFF

    • 640 КБ, в основном используется для операционных систем DOS, приложений DOS и программ резидентной памяти (TSR).
    • Может использоваться как программный код, данные, стек и т. д.
  4. Буфер дисплея: 0xA0000 – 0xBFFFF

    • Область памяти, используемая адаптером дисплея.
    • 0xA0000 - 0xAFFFF: 64 КБ, обычно используется в графическом режиме видеокарт EGA/VGA.
    • 0xB0000–0xB7FFF: 32 КБ, обычно используется для адаптеров монохромного дисплея (MDA).
    • 0xB8000 — 0xBFFFF: 32 КБ, обычно используется для отображения цветного текста (текстовый режим CGA, EGA, VGA).
  5. Расширенная область данных BIOS (EBDA): 0xC0000 – 0xC7FFF

    • Около 32 КБ, в которых хранятся некоторые расширенные данные BIOS и код BIOS адаптера.
  6. Область расширения BIOS: 0xC8000 - 0xEFFFF

    • В основном используется для BIOS и драйверов плат расширения (таких как сетевые адаптеры, контроллеры SCSI и т. д.).
  7. Системный BIOS: 0xF0000 - 0xFFFFFF

    • 64 КБ, хранит код BIOS системы.
    • Обеспечивает базовую инициализацию системы, процедуру обслуживания прерываний, управление оборудованием и другие функции.

2.2 Механизм адресации памяти 80386

Процессор Intel 80386 представил более совершенный механизм адресации памяти, обеспечивающий более мощные возможности управления и защиты памяти, чем его предшественники. 80386 поддерживает два режима адресации основной памяти:реальный режимизащищенный режим . В защищенном режиме также представлен механизм подкачки для дальнейшего расширения возможностей управления памятью. Ниже приводится подробное введение:

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

В реальном режиме процессор 80386 использует тот же метод адресации памяти, что и 8086/8088. Он использует 20-битную адресную шину и может получить доступ к 1 МБ памяти. Адрес рассчитывается из адреса сегмента и адреса смещения:

  • адрес сегмента: Сдвиг влево на 4 бита.
  • адрес смещения: Добавляя к результату левого сдвига адреса сегмента, получается 20-битный физический адрес.
物理地址 = (段地址 << 4) + 偏移地址

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

Защищенный режим — основной режим работы процессора 80386, обеспечивающий расширенные функции защиты и управления памятью. Адресация памяти в защищенном режиме включает два уровня механизмов:механизм сегментациииПейджинговый механизм

2.1 Механизм сегментации

В защищенном режиме процессор 80386 использует селектор сегмента и дескриптор сегмента для управления сегментами. Дескрипторы сегментов хранятся в глобальной таблице дескрипторов (GDT) или локальной таблице дескрипторов (LDT).

  • селектор сегмента: 16 бит, включая три поля:

    • индекс: 13 бит, определяет позицию дескриптора сегмента в GDT или LDT.
    • TI (табличный индикатор): 1 бит, указывающий, использовать ли GDT (0) или LDT (1).
    • RPL (запрашиваемый уровень привилегий): 2 бита, определяющие запрошенный уровень привилегий.
  • дескриптор сегмента: 8 байт, включая следующие поля:

    • Базовый адрес: 32 бита, начальный адрес сегмента.
    • Лимит сегмента (Лимит): 20 бит, размер сегмента.
    • Права доступа и свойства: 12 бит, описывающих тип сегмента, уровень привилегий и т. д.

Вычисление линейного адреса в рамках механизма сегментации выглядит следующим образом:

线性地址 = 段基址 + 偏移地址

2.2 Механизм пейджинга

Механизм подкачки — это еще один метод управления памятью, предоставляемый процессором 80386 в защищенном режиме. Он реализует виртуализацию и защиту памяти путем преобразования линейных адресов в физические адреса. Механизм подкачки включает в себя каталоги страниц, таблицы страниц и фреймы страниц.

  • каталог страниц: Содержит записи каталога страниц (PDE), каждый PDE указывает на таблицу страниц.
  • таблица страниц: Содержит записи таблицы страниц (PTE), каждый PTE указывает на страничный фрейм.
  • рамка страницы: Фактический блок физической памяти, обычно 4 КБ.

Трансляция адресов механизма подкачки выглядит следующим образом:

  1. Линейные адреса делятся на три части: каталог, таблица и внутристраничное смещение.
  2. Раздел каталога индексирует каталог страниц для поиска соответствующего PDE.
  3. Раздел таблицы индексирует таблицу страниц для поиска соответствующего PTE.
  4. Внутристраничное смещение добавляется к базовому адресу страничного кадра для получения физического адреса.
物理地址 = 页帧基址 + 页内偏移

Принципиальная схема механизма пейджинга:

  1. +----------------+----------------+----------------+
  2. | 页目录(10位) | 页表(10位) | 页内偏移(12位)|
  3. +----------------+----------------+----------------+

3. 80386 Блок управления памятью (MMU).

MMU (блок управления памятью) 80386 отвечает за сегментацию и трансляцию адресов подкачки, а также обеспечивает защиту памяти.

  • регистр CR0: Регистр управления для включения/выключения защищенного режима и подкачки.

    • Бит PE (включение защиты): Включить защищенный режим.
    • Бит PG (включение пейджинга): Включить пейджинг.
  • регистр CR3: базовый адрес каталога страниц хранилища.

  • регистр CR2: Сохраняет линейный адрес ошибки последней страницы.

4. Механизм защиты

В защищенном режиме процессор 80386 предоставляет различные механизмы защиты, обеспечивающие безопасность памяти и системы:

  • Уровни привилегий : всего существует четыре уровня от 0 до 3, причем уровень 0 является самым высоким. Контролируйте доступ к коду и данным.
  • защита сегмента: реализовать проверку границ сегмента и контроль доступа через поля атрибутов в дескрипторе сегмента.
  • защита страницы: через поле атрибута в PTE реализуется управление разрешениями на чтение, запись и выполнение страницы.

2.3 Расположение памяти Windows

1. Виртуальная память

Операционная система Windows использует управление виртуальной памятью, которое объединяет физическую память (ОЗУ) и файлы виртуальной памяти (файлы подкачки) на жестком диске, чтобы обеспечить независимое виртуальное адресное пространство для каждого процесса. Каждый процесс обычно имеет 4 ГБ виртуального адресного пространства (32-разрядные системы), из которых 2 ГБ используются программами пользовательского режима и 2 ГБ — режимом ядра. 64-битные системы имеют большее виртуальное адресное пространство.

2. Структура виртуального адресного пространства.

Виртуальное адресное пространство разделено на области пользовательского режима и режима ядра:

адресное пространство пользовательского режима

  • 0x00000000 - 0x7FFFFFFF: Адресное пространство пользовательского режима, предназначенное для использования приложениями.
  • Куча: область динамического выделения памяти. Приложение выделяет и освобождает память во время выполнения.
  • Куча: Каждый поток имеет собственный стек для вызовов функций и локальных переменных.
  • Общая память: сегменты данных, используемые разными процессами.

адресное пространство режима ядра

  • 0x80000000 - 0xFFFFFFFF: адресное пространство режима ядра, используемое ядром и драйверами операционной системы.
  • Код ядра и данные: код и глобальные данные ядра операционной системы.
  • Системный кеш: используется для кэширования файловой системы для повышения производительности доступа к файлам.
  • драйвер устройства: Код и данные драйвера.

3. Пейджинг памяти

Windows использует механизм подкачки для управления памятью и преобразования виртуальных адресов в физические адреса. Базовой единицей подкачки является страница, обычно 4 КБ.

Структура таблицы страниц

  • Каталог страниц: Содержит запись каталога страниц (PDE), указывающую на таблицу страниц.
  • Таблица страниц: Содержит записи таблицы страниц (PTE), которые указывают на реальные страницы физической памяти.

4. Блок управления памятью (MMU).

Блок управления памятью процессора (MMU) отвечает за преобразование виртуальных адресов в физические адреса, выполнение замены страниц и защиту памяти. Операционная система Windows реализует через MMU следующие функции:

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

5. Защита памяти

Операционная система Windows защищает память с помощью следующих механизмов:

  • Уровень привилегий: Убедитесь, что программы пользовательского режима не могут напрямую обращаться к памяти режима ядра.
  • Разрешения страницы: Управляйте типом доступа (чтение, запись, выполнение) каждой страницы.
  • Контроль доступа: Ядро операционной системы устанавливает права доступа для предотвращения несанкционированного доступа к памяти.

6. Распределение памяти

Windows использует несколько стратегий и структур данных для распределения памяти:

  • распределитель страниц: Управление распределением подкачки и освобождением виртуальной памяти.
  • Менеджер кучи: Обеспечивает эффективное распределение и освобождение памяти для приложений.
  • распределитель памяти ядра: Управляет памятью режима ядра, включая распределитель пула и невыгружаемый пул.

7. API управления памятью

Windows предоставляет набор API-интерфейсов управления памятью для использования приложениями и системой:

  • VirtualAlloc/VirtualFree: Выделить и освободить виртуальную память.
  • HeapAlloc/HeapFree: Выделить и освободить память в куче.
  • GlobalAlloc/GlobalFree: Выделить и освободить блоки глобальной памяти.
  • LocalAlloc/LocalFree: Выделить и освободить блоки локальной памяти.

8. Файл подкачки

Windows использует файл подкачки (Pagefile.sys) как часть виртуальной памяти. Когда физической памяти недостаточно, редко используемые страницы заменяются в файл подкачки. Местоположение и размер файла подкачки настраиваются пользователем.

3. Защита привилегий Windows

3.1 80386 прерываний и исключений

1. Классификация прерываний и исключений

Прерывания и исключения можно разделить на следующие категории:

  1. Аппаратные прерывания: Отправляется внешними устройствами, такими как клавиатура, мышь, жесткий диск и т. д.
  2. Программные прерывания: Проходит программно INT Команда срабатывает.
  3. Исключения: Запускается ошибками или особыми условиями, обнаруженными процессором, например, ошибками деления на ноль, ошибками страниц и т. д.

2. Таблица векторов прерываний (IVT).

Процессор 80386 использует таблицу векторов прерываний для управления прерываниями и исключениями. IVT представляет собой таблицу из 256 записей, каждая из которых занимает 4 байта, в которых хранится адрес обработчика прерываний или исключений. Базовый адрес IVT хранится в IDTR (регистр таблицы дескрипторов прерываний).

3. Таблица дескрипторов прерываний (IDT)

В защищенном режиме процессор 80386 использует таблицу дескрипторов прерываний (IDT) для хранения обработчиков прерываний и исключений. IDT содержит дескрипторы шлюза прерывания, шлюза ловушки и шлюза задачи, каждый дескриптор занимает 8 байт.

  • Прерывающие ворота: используется для аппаратных и программных прерываний, автоматически очищая IF (флаг прерывания).
  • Ворота-ловушки: используется для обработки исключений, IF не очищается.
  • Ворота задач: используется для переключения задач.

Базовый адрес и границы IDT хранятся в IDTR.

4. Процесс обработки прерываний

При возникновении прерывания или исключения процессор 80386 выполняет следующие действия:

  1. сохранить контекст: сохранить текущие CS (регистр сегмента кода), EIP (регистр указателя инструкций) и EFLAGS (регистр флагов) в стек.
  2. Найти IDT: Найдите соответствующий дескриптор из IDT на основе номера прерывания или исключения.
  3. Проверьте разрешения: проверьте текущий уровень привилегий (CPL) и целевой уровень привилегий (DPL), чтобы обеспечить законное преобразование разрешений.
  4. перейти к обработчику: загрузить новые CS и EIP, перейти к обработчику прерываний или исключений.
  5. Обработка прерываний или исключений:Выполнить код обработчика.
  6. восстановить контекст:проходить IRET Инструкция восстанавливает CS, EIP и EFLAGS и возвращается в состояние до возникновения прерывания или исключения.

5. Тип исключения

Процессор 80386 поддерживает несколько исключений, каждое исключение имеет разные коды ошибок и методы обработки:

  1. Неисправности: восстанавливаемое исключение. Когда обработчик возвращается, инструкция, вызвавшая исключение, будет выполнена повторно.
  2. Ловушки: Исключение, используемое для отладки или трассировки. Когда обработчик возвращается после возникновения исключения, следующая инструкция продолжает выполняться.
  3. Прерывает: Серьезная ошибка, обычно неустранимая.

Общие исключения включают в себя:

  • Ошибка деления: поднимается, когда делитель равен нулю.
  • Единственный шаг: используется для отладки, возникает при выполнении одного шага.
  • Точка останова: возникает при отладке точек останова.
  • Переполнение:использовать INTO Поднимается, когда инструкция обнаруживает переполнение.
  • Превышен диапазон BOUND: возникает, когда доступ к массиву выходит за пределы.
  • Неверный код операции: Возникает при выполнении недопустимой инструкции.
  • Устройство недоступно: Поднимается, когда сопроцессор недоступен.
  • Двойная ошибка: исключение возникает снова при обработке исключения.
  • Переполнение сегмента сопроцессора: Вызывается операциями сопроцессора.
  • Неверный TSS: возникает, когда сегмент состояния задачи является недопустимым.
  • Сегмент отсутствует: возникает при доступе к несуществующему сегменту.
  • Ошибка стека: возникает при возникновении ошибки операции стека.
  • Общая ошибка защиты: срабатывает при нарушении правил защиты.
  • Ошибка страницы: Появляется, когда операция пейджинга ненормальна.

6. Обработчики прерываний и исключений

Обработчики прерываний и исключений — это специальные процедуры, используемые для обработки определенных прерываний или исключений. Обычно они предоставляются операционной системой и отвечают за восстановление состояния системы, запись информации об ошибках, выполнение необходимых операций восстановления или реакцию на прерывание.

7. Приоритет прерываний и маскирование

Процессор 80386 поддерживает механизмы приоритета и маскировки прерываний, а также управляет приоритетом и маскированием аппаратных прерываний через PIC (программируемый контроллер прерываний). Прерывания высокого уровня могут прерывать обработку прерываний низкого уровня, чтобы обеспечить своевременную реакцию на критические события.

3.2 Механизм защиты 80386

1. Защита сегментации

Процессор 80386 использует механизм сегментации для управления памятью. Каждый сегмент имеет дескриптор, который содержит базовый адрес, границы и права доступа сегмента. Защита сегментации гарантирует, что процессы могут получать доступ только к областям памяти, к которым им разрешено.

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

Дескрипторы сегментов хранятся в глобальной таблице дескрипторов (GDT) и локальной таблице дескрипторов (LDT). Каждый дескриптор содержит следующую информацию:

  • Базовый адрес: Начальный адрес сегмента.
  • Лимит: Размер сегмента, указывающий конечный адрес сегмента.
  • Тип (Type) и уровень привилегий (DPL): тип сегмента (сегмент кода, сегмент данных, системный сегмент) и права доступа.
  • Бит присутствия сегмента (P): находится ли сегмент в памяти.

Реализация защиты от сегментации

При доступе к памяти процессор ищет дескриптор сегмента на основе селектора сегмента и выполняет следующие проверки:

  1. Проверка базового адреса и границ: Убедитесь, что адрес доступа находится в диапазоне сегмента.
  2. Проверка разрешения: убедитесь, что права доступа соответствуют типу и уровню привилегий в дескрипторе.

2. Защита пейджинговой связи

Механизм подкачки дополнительно совершенствует управление памятью, при этом каждая страница имеет свои собственные права доступа. Механизм защиты подкачки реализован через каталоги страниц и таблицы страниц.

Каталоги страниц и таблицы страниц

  • Каталог страниц: Содержит запись каталога страниц (PDE), указывающую на таблицу страниц.
  • Таблица страниц: Содержит записи таблицы страниц (PTE), которые указывают на реальные страницы физической памяти.

Каждая запись таблицы страниц содержит следующую информацию:

  • Базовый адрес страницы: Начальный адрес страницы физической памяти.
  • Бит присутствия (P): находится ли страница в памяти.
  • Бит чтения/записи (R/W): доступна ли запись на страницу.
  • Бит пользователя/суперпользователя (U/S): права доступа к странице.

Реализация пейджинговой защиты

При обращении к памяти процессор выполняет следующие проверки:

  1. Проверка существования страницы: Проверить, находится ли страница в памяти, если нет, вызвать ошибку страницы (Ошибка страницы).
  2. проверка чтения/записи: проверьте, доступна ли запись на страницу. Если вы попытаетесь выполнить запись на страницу, недоступную для записи, сработает ошибка защиты.
  3. Проверка пользователя/суперпользователя: проверьте права доступа, чтобы убедиться, что код пользовательского режима не может получить доступ к страницам режима ядра.

3. Уровень привилегий

Процессор 80386 поддерживает 4 уровня привилегий (Privilege Levels), от 0 до 3. Чем ниже уровень, тем выше привилегия.

  • Уровень привилегий 0 (Кольцо 0): самый высокий уровень привилегий, обычно используемый в ядре операционной системы.
  • Уровень привилегий 1 (Кольцо 1)иУровень привилегий 2 (Кольцо 2): Средний уровень привилегий, используется редко.
  • Уровень привилегий 3 (Кольцо 3): самый низкий уровень привилегий, обычно используемый приложениями пользовательского режима.

Реализация уровней привилегий

Уровни привилегий реализуются посредством следующих механизмов:

  1. Уровень привилегий сегмента кода (CPL): уровень привилегий текущего исполняемого кода.
  2. Уровень привилегий сегмента данных (DPL): уровень привилегий сегмента данных, который определяет, какие CPL могут получить доступ к сегменту.
  3. Запросить уровень привилегий (RPL): уровень привилегий селектора сегмента, указывающий запрошенное разрешение доступа.

При выполнении операции доступа процессор проверяет CPL, DPL и RPL на предмет соответствия правилам уровня привилегий. Если оно не совпадает, срабатывает общая ошибка защиты.

4. Дескрипторы системных сегментов и ворот

Процессор 80386 поддерживает дескрипторы системных сегментов и вентилей для переключения задач и обработки прерываний.

системный сегмент

  • Сегмент состояния задачи (TSS): Содержит контекстную информацию о задаче и используется для переключения задач.
  • Таблица локальных дескрипторов (LDT): Содержит дескрипторы сегментов, специфичные для задачи.

дескриптор ворот

  • Прерывающие ворота: используется для обработки прерывания с переходом к обработчику прерывания.
  • Ворота-ловушки: используется для обработки исключений и не маскирует прерывания.
  • Ворота задач: Используется для переключения задач, переключения задач через TSS.

5. Переключение задач

Процессор 80386 поддерживает аппаратное переключение задач, которое реализуется через сегмент состояния задачи (TSS). Переключение задач может быть вызвано прерываниями, исключениями или шлюзами задач.

Сегмент состояния задачи (TSS)

TSS содержит состояние регистра задачи, регистры сегмента, указатель стека и ссылки на задачу. При переключении задач процессор сохраняет в ТСС статус текущей задачи и загружает статус новой задачи.

Процесс переключения задач

  1. Сохранить текущий статус задачи: сохранить регистры и сегментные регистры текущей задачи в TSS.
  2. Загрузить новый статус задачи: загрузить регистры и регистры сегментов из TSS новой задачи.
  3. Обновление реестра задач (TR): Указывает на TSS новой задачи.

6. Обработка прерываний и исключений

Обработка прерываний и исключений являются важными частями механизма защиты процессора 80386. Прерывания и исключения управляются через таблицу дескрипторов прерываний (IDT), а во время обработки выполняются проверки разрешений и переключение контекста.

Процедуры обработки прерываний и исключений

  1. сохранить контекст: сохранить текущие CS, EIP и EFLAGS в стек.
  2. Найти IDT: Найдите соответствующий дескриптор из IDT на основе номера прерывания или исключения.
  3. Проверка разрешения: проверьте CPL и DPL, чтобы обеспечить законное преобразование разрешений.
  4. перейти к обработчику: загрузить новые CS и EIP и выполнить обработчик.
  5. восстановить контекст:проходить IRET Восстановите CS, EIP и EFLAGS и вернитесь в состояние до возникновения прерывания или исключения.

3.3 Механизм защиты Windows

1. Пользовательский режим и режим ядра

Операционная система Windows делит режим выполнения процессора на пользовательский режим (User Mode) и режим ядра (Kernel Mode):

  • пользовательский режим: Запускает приложение с ограниченным доступом и без прямого доступа к аппаратному обеспечению или структурам данных ядра.
  • режим ядра: запускает основные компоненты операционной системы и драйверы устройств с полным доступом и может выполнять привилегированные инструкции.

Переключение между пользовательским режимом и режимом ядра

Переключение между пользовательским режимом и режимом ядра обычно осуществляется посредством системных вызовов. Приложение запрашивает службы ядра, вызывая системный API, и операционная система переключает запрос в режим ядра для обработки.

2. Защита памяти

Виртуальная память

Windows использует механизм виртуальной памяти, чтобы предоставить каждому процессу независимое адресное пространство. Этот механизм предотвращает прямой доступ процессов к памяти друг друга, тем самым повышая безопасность и стабильность системы.

  • таблица страниц: Каждый процесс имеет независимую таблицу страниц, которая сопоставляет виртуальные адреса с физическими адресами.
  • обмен страницами: Когда физической памяти недостаточно, операционная система заменяет редко используемые страницы в файл подкачки на жестком диске.

сегмент памяти

Windows использует сегменты памяти для разделения различных типов данных и кода, и каждый сегмент имеет разные права доступа и механизмы защиты. Например, сегмент кода доступен только для чтения, а сегмент данных — для чтения и записи.

3. Контроль доступа

Операционная система Windows использует список контроля доступа (ACL) для управления правами доступа пользователей и процессов к ресурсам.

Идентификатор безопасности (SID)

Каждый пользователь, группа и компьютер имеют уникальный идентификатор безопасности (SID), который их идентифицирует.

Список контроля доступа (ACL)

Каждый объект (например, файл, каталог, ключ реестра и т. д.) имеет список управления доступом, который содержит набор элементов управления доступом (ACE), определяющих права доступа различных пользователей и групп к объекту.

4. Управление привилегиями

Windows контролирует, какие процессы и пользователи могут делать, посредством управления привилегиями. Определенные привилегии предоставляются только определенным группам пользователей (например, администраторам), например, установка драйверов, доступ к системным журналам и т. д.

стратегия безопасности

Windows предоставляет ряд политик безопасности, которые позволяют настроить контроль учетных записей пользователей (UAC), политики паролей, политики аудита и т. д. для повышения безопасности системы.

5. Обработка прерываний и исключений

Операционные системы Windows используют механизмы обработки прерываний и исключений для управления аппаратными прерываниями, программными прерываниями и исключениями процессора.

Обработка прерываний

Обработчик прерываний (Interrupt Service Routine, ISR) отвечает за обработку аппаратных прерываний и обеспечение своевременного ответа внешних устройств.

Обработка исключений

Обработчики исключений обрабатывают исключения процессора, такие как ошибки деления на ноль, страничные ошибки и т. д., чтобы гарантировать, что система сможет принять соответствующие меры по восстановлению при возникновении исключений.

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

Windows позволяет одновременно запускать несколько процессов и потоков с помощью механизма многозадачности. Операционная система использует планировщик для управления выполнением процессов и потоков и обеспечения справедливого распределения системных ресурсов.

Планирование потоков

Windows использует алгоритм планирования приоритетов для распределения фрагментов времени ЦП на основе приоритета и состояния потока (например, готовность, ожидание, выполнение и т. д.).

изоляция процесса

Каждый процесс имеет независимое виртуальное адресное пространство и ресурсы, что предотвращает влияние одного процесса на работу другого процесса и повышает стабильность системы.

7. Функции безопасности

Windows предоставляет ряд функций безопасности, таких как предотвращение выполнения данных (DEP), рандомизация структуры адресного пространства (ASLR) и т. д., для повышения возможностей защиты системы.

Предотвращение выполнения данных (DEP)

DEP предотвращает выполнение кода в сегменте данных, помечая определенные области памяти как неисполняемые с помощью комбинации аппаратного и программного обеспечения.

Рандомизация макета адресного пространства (ASLR)

ASLR рандомизирует адресное пространство памяти процесса, что затрудняет злоумышленникам использование уязвимостей.