Книга: 2.Внутреннее устройство Windows (гл. 5-7)
Синхронизация доступа к куче
Синхронизация доступа к куче
Диспетчер куч по умолчанию поддерживает параллельный доступ из нескольких потоков. Однако, если процесс является однопоточным или использует внешний механизм синхронизации, он может отключить синхронизацию, поддерживаемую диспетчером куч, и тем самым избежать издержек, связанных с этим видом синхронизации. Для этого при создании кучи или при каждом запросе на выделение памяти такой процесс может указывать флаг HEAP_NO_SERIALIZE.
Процесс также может блокировать всю кучу и запретить другим потокам выполнение операций, требующих согласования состояний между несколькими обращениями к куче. Например, перечисление блоков в куче с помощью Windows-функции HeapWalk требует блокировки кучи, если над ней могут выполняться операции сразу несколькими потоками.
Если синхронизация куч разрешена, для каждой кучи выделяется по одной блокировке, которая защищает все внутренние структуры кучи. B приложениях с большим числом потоков (особенно когда они выполняются в многопроцессорных системах) блокировка кучи может превратиться в точку интенсивной конкуренции. B таком случае производительность можно повысить за счет использования интерфейсного уровня.
- Введение в диспетчер памяти
- Компоненты диспетчера памяти
- Внутренняя синхронизация
- Конфигурирование диспетчера памяти
- Исследование используемой памяти
- Сервисы диспетчера памяти
- Большие и малые страницы
- Резервирование и передача страниц
- Блокировка памяти
- Гранулярность выделения памяти
- Разделяемая память и проецируемые файлы
- Защита памяти
- Запрет на выполнение
- Программный вариант 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
- Уведомление о малом или большом объеме памяти
- Оптимизаторы памяти — миф или реальность?
- Резюме
- ГЛАВА 8 Синхронизация потоков
- Синхронизация куч
- 9.4. Права доступа к squid
- 10.5. Транзакции и пути доступа меню
- Настройка доступа пользователей к рабочей книге
- 3.5 Проблемы доступа при использовании нескольких протоколов
- ЧАСТЬ 3 СИНХРОНИЗАЦИЯ
- Есть ли быстрый способ доступа к папкам?
- После переустановки Windows нет доступа к папке Мои документы или нельзя удалить оставшуюся от старой системы папку Docu...
- Как не запутаться в разрешениях доступа к файлам?
- Можно ли копировать права доступа вместе с данными?
- 8.2. Изменение пароля доступа к маршрутизатору