Масштабируемость
Одним из ключевых вопросов мультипроцессорных систем является масштабируемость. Для корректной работы на SMP-системе код операционной системы должен следовать строгим принципам и правилам.
Борьба за ресурсы и решение других проблем, влияющих на производительность системы, в мультипроцессорных системах происходит сложнее, чем в однопроцессорных. Это должно быть учтено в конструкциях мультипроцессорных систем. В Windows имеется ряд функций, имеющих решающее значение для достижения ее успешной работы в качестве мультипроцессорной операционной системы:
- Возможность запуска кода операционной системы на любом доступном процессоре и одновременно на нескольких процессорах.
- Несколько потоков выполнения в одном процессе, каждый из которых может одновременно выполняться на разных процессорах.
- Тонкая синхронизация внутри ядра (с помощью спин-блокировок) наряду с драйверами устройств и служебными процессами, позволяющая большему количеству компонентов запускаться параллельно на нескольких процессорах.
- Программирование таких механизмов, как порты завершения ввода-вывода, способствующих эффективной реализации многопоточных серверных процессов, хорошо масштабируемых на мультипроцессорных системах.
Со временем масштабируемость ядра Windows улучшилась. Например, в Windows Server 2003 были представлены очереди планирования для каждого процессора, позволяющие принимать решения по диспетчеризации потоков параллельно на нескольких процессорах. В Windows 7 и Windows Server 2008 R2 была убрана глобальная блокировка в отношении диспетчеризации баз данных.
Такому поэтапному улучшению детализации блокировки подверглись и другие области, например, диспетчер памяти.