Книга: 2.Внутреннее устройство Windows (гл. 5-7)
Выбор процессора для потока при наличии простаивающих процессоров
Выбор процессора для потока при наличии простаивающих процессоров
Как только поток готов к выполнению, Windows сначала пытается подключить его к простаивающему процессору. Если таких процессоров несколько, предпочтение отдается сначала идеальному процессору для данного потока, затем предыдущему, а потом текущему (т. е. процессору, на котором работает код, отвечающий за планирование). B Windows 2000, если все эти процессоры заняты, выбирается первый простаивающий процессор, на котором может работать данный поток, для чего сканируется маска свободных процессоров в направлении убывания их номеров.
B Windows XP и Windows Server 2003 выбор простаивающего процессора не так прост. Во-первых, выделяются простаивающие процессоры из числа тех, на которых маска привязки разрешает выполнение данного потока. Если система имеет архитектуру NUMA и в узле, где находится идеальный процессор для потока, есть простаивающие процессоры, то список всех простаивающих процессоров уменьшается до этого набора. Если в результате такой операции в списке не останется простаивающих процессоров, список не сокращается. Затем, если в системе работают процессоры с технологией Hyperthreading и имеется физический процессор, все логические процессоры которого свободны, список простаивающих процессоров уменьшается до этого набора. И вновь, если в результате такой операции в списке не останется простаивающих процессоров, список не сокращается.
Если текущий процессор (тот, который пытается определить, что делать с потоком, готовым к выполнению) относится к набору оставшихся простаивающих процессоров, поток планируется к выполнению именно на этом процессоре. A если текущий процессор не входит в список оставшихся простаивающих процессоров, если это система с технологией Hyperthreading и если есть простаивающий логический процессор на физическом, который содержит идеальный процессор для данного потока, то список простаивающих процессоров ограничивается этим набором. B ином случае система проверяет, имеются ли простаивающие логические процессоры на физическом, который содержит предыдущий процессор потока. Если такой набор не пуст, список простаивающих процессоров уменьшается до этого набора.
Из оставшегося набора простаивающих процессоров исключаются все процессоры, находящиеся в состоянии сна. (Эта операция не выполняется, если в ее результате такой список опустел бы.) Наконец, поток подключается к процессору с наименьшим номером в оставшемся списке.
Независимо от версии Windows, как только процессор выбран, соответствующий поток переводится в состояние Standby, и PRCB простаивающего процессора обновляется так, чтобы указывать на этот поток. При выполнении на этом процессоре цикл простоя обнаруживает, что поток выбран и подключает его к процессору.
- Внутреннее устройство процессов
- Структуры данных
- Переменные ядра
- Счетчики производительности
- Сопутствующие функции
- Что делает функция CreateProcess
- Этап 1: открытие образа, подлежащего выполнению
- Этап 2: создание объекта «процесс»
- Этап 2A: формирование блока EPROCESS
- Этап 2B: создание начального адресного пространства процесса
- Этап 2C: создание блока процесса ядра
- Этап 2D: инициализация адресного пространства процесса
- Этап 2E: формирование блока PEB
- Этап 2F: завершение инициализации объекта «процесс» исполнительной системы
- Этап 3: создание первичного потока, его стека и контекста
- Этап 4: уведомление подсистемы Windows о новом процессе
- Этап 5: запуск первичного потока
- Этап 6: инициализация в контексте нового процесса
- Сборки, существующие в нескольких версиях
- Внутреннее устройство потоков
- Структуры данных
- Адрес Идентификатор ETHREAD потока Адрес TEB
- Переменные ядра
- Счетчики производительности
- Сопутствующие функции
- Рождение потока
- Наблюдение за активностью потоков
- Планирование потоков
- Обзор планирования в Windows
- Уровни приоритета
- Функции Windows API, связанные с планированием
- Сопутствующие утилиты
- Диспетчер системных ресурсов Windows
- Приоритеты реального времени
- Уровни прерываний и уровни приоритета
- Состояния потоков
- База данных диспетчера ядра
- Квант
- Учет квантов времени
- Управление величиной кванта
- Динамическое увеличение кванта
- Параметр реестра для настройки кванта
- Сценарии планирования
- Самостоятельное переключение
- Вытеснение
- Завершение кванта
- Завершение потока
- Переключение контекста
- Поток простоя
- Динамическое повышение приоритета
- Динамическое повышение приоритета после завершения ввода-вывода
- Динамическое повышение приоритета по окончании ожидания событий и семафоров
- Динамическое повышение приоритета потоков активного процесса после выхода из состояния ожидания
- Динамическое повышение приоритета после пробуждения GUI-потоков
- Динамическое повышение приоритета при нехватке процессорного времени
- Многопроцессорные системы
- База данных диспетчера ядра в многопроцессорной системе
- Системы с поддержкой Hyperthreading
- Системы NUMA
- Привязка к процессорам
- Идеальный и последний процессоры
- Алгоритмы планирования потоков в многопроцессорных системах
- Выбор процессора для потока при наличии простаивающих процессоров
- Выбор процессора для потока в отсутствие простаивающих процессоров
- Выбор потока для выполнения на конкретном процессоре (Windows 2000 и Windows XP)
- Выбор потока для выполнения на конкретном процессоре (Windows Server 2003)
- Объекты-задания
- Резюме
- Выбор стратегии ценообразования
- Выбор аппаратного обеспечения для InterBase
- Рекомендации по выбору архитектуры: Classic или SuperServer?
- Ограничение результатов выборки FIRST
- Распараллеливание на несколько процессоров
- Использование отдельных процессоров XSLT
- Выбор спутника жизни
- 1. Унарная операция выборки
- 1. Операция выборки.
- 6.10. Разгон процессоров Intel
- Отчет о выборе ERP-системы
- 2.6.2. Выбор вариантов бронирования услуг контрагентов