Книга: 2.Внутреннее устройство Windows (гл. 5-7)
Конфликты ошибок страницы
Конфликты ошибок страницы
Конфликт ошибок страницы (collided page fault) возникает, когда другой поток или процесс вызывает ошибку страницы, уже обрабатываемой в данный момент из-за предыдущей ошибки того же типа. Подсистема подкачки страниц распознает и оптимальным образом разрешает такие конфликты, поскольку они нередки в системах с поддержкой многопоточности. Если другой поток или процесс вызывает ошибку той же страницы, подсистема подкачки страниц обнаруживает конфликт ошибок страницы, отмечая при этом, что страница находится в переходном состоянии и что она сейчас считывается. (Эта информация извлекается из элемента базы данных PFN.) Далее подсистема подкачки страниц переходит в ожидание на событии, указанном в элементе базы данных PFN. Это событие было инициализировано потоком, вызвавшим первую ошибку страницы.
По завершении операции ввода-вывода событие переходит в свободное состояние. Первый поток, захвативший блокировку базы данных PFN, отвечает за заключительные операции, связанные с подкачкой. K ним относятся проверка статуса операции ввода-вывода (чтобы убедиться в ее успешном завершении), сброс бита «в процессе чтения» в базе данных PFN и обновление РТЕ.
Когда следующие потоки захватывают блокировку базы данных PFN для завершения обработки конфликтующих ошибок страницы, сброшенный бит «в процессе чтения» сообщает подсистеме подкачки страниц, что начальное обновление закончено, и она проверяет флаг ошибок в элементе базы данных PFN. Если этот флаг установлен, PTE не обновляется, и в потоке, вызвавшем ошибку страницы, генерируется исключение «in-page error» (ошибка в процессе загрузки страницы).
- Введение в диспетчер памяти
- Компоненты диспетчера памяти
- Внутренняя синхронизация
- Конфигурирование диспетчера памяти
- Исследование используемой памяти
- Сервисы диспетчера памяти
- Большие и малые страницы
- Резервирование и передача страниц
- Блокировка памяти
- Гранулярность выделения памяти
- Разделяемая память и проецируемые файлы
- Защита памяти
- Запрет на выполнение
- Программный вариант DEP
- Копирование при записи
- Диспетчер куч
- Типы куч
- Структура диспетчера кучи
- Синхронизация доступа к куче
- Ассоциативные списки
- Куча с малой фрагментацией
- Средства отладки
- Pageheap
- Address Windowing Extensions
- Системные пулы памяти
- Настройка размеров пулов
- Мониторинг использования пулов
- Ассоциативные списки
- Утилита Driver Verifier
- Настройка и инициализация Driver Verifier
- Special Pool (Особый пул)
- Pool Tracking (Слежение за пулом)
- Force IRQL Checking (Обяз. проверка IRQL)
- Low Resources Simulation (Нехватка ресурсов)
- Структуры виртуального адресного пространства
- Структуры пользовательского адресного пространства на платформе x86
- Структура системного адресного пространства на платформе x86
- Пространство сеанса на платформе x86
- Системные PTE
- Структуры 64-разрядных адресных пространств
- Трансляция адресов
- Трансляция виртуальных адресов на платформе x86
- Каталоги страниц
- Страницы таблиц и PTE
- Адрес байта в пределах страницы
- Ассоциативный буфер трансляции
- Physical Address Extension (PAE)
- Трансляция виртуальных адресов на платформе IA64
- Трансляция виртуальных адресов на платформе x64
- Обработка ошибок страниц
- Недействительные PTE
- Прототипные PTE
- Операции ввода-вывода, связанные с подкачкой страниц
- Конфликты ошибок страницы
- Страничные файлы
- Дескрипторы виртуальных адресов
- Объекты-разделы
- Рабочие наборы
- Подкачка по требованию
- Средство логической предвыборки
- Правила размещения
- Управление рабочими наборами
- Диспетчер настройки баланса и подсистема загрузки-выгрузки
- Системный рабочий набор
- База данных PFN
- Динамика списков страниц
- Подсистема записи модифицированных страниц
- Структуры данных PFN
- Уведомление о малом или большом объеме памяти
- Оптимизаторы памяти — миф или реальность?
- Резюме
- Настройка домашней страницы
- Перехват ошибок
- Информация заголовочной страницы (Database header)
- Размер страницы базы данных
- Обработка перехваченных ошибок
- Дополнительные национальные кодовые страницы и порядки сортировки
- Страницы веб-частей
- Использование домашней страницы рабочей области для собраний
- Приложение 10. Коды ошибок
- B1.7. Функции обработки ошибок
- Обработка ошибок
- Что обозначают номера ошибок?