Підтримка багатопроцесорної обробки

Современные серверы, как правило, являются многопроцессорными системами. Такие системы обычно состоят из набора запоминающих устройств и нескольких центральных процессоров, работающих под управлением одной ОС. Все процессоры обычно имеют доступ к любой области памяти любого запоминающего устройства. Для обеспечения максимальной производительности таких систем операционная система должна эффективно выполнять распараллеливание потоков самой операционной системы и пользователей. При распараллеливании в многопроцессорной системе существенно усложняются проблемы синхронизации. Покажем это на простом примере. Пусть процессор записывает данные, обновленные данные находятся в кэше этого процессора и переписываются в оперативную память не сразу. Как обеспечить использование этих данных другим процессором? Очередная функция операционных систем — поддержка многопроцессорной обработки. Современные операционные системы поддерживают многопроцессорную работу.

Так как ОС UNIX используется достаточно длительное время для больших вычислительных систем (mainframe), как правило, являющихся многопроцессорными, она допускает одновременную работу с 256 и более процессорами. ОС фирмы Microsoft использовались до недавнего времени только для персональных ЭВМ, для которых поддержка многопроцессорности была не актуальной. Сближение по вычислительной мощности компьютеров, на которых используются оба типа ОС, привело к тому, что современные ОС фирмы Microsoft (после WINDOWS 98) также поддерживают многопроцессорность.

Операционная система WINDOWS 2003 может работать с системами с числом процессоров не более 32 Многопроцессорная обработка может быть обеспечена в двух режимах: Симметричная система (symmetric multiprocessing — SMP) — все потоки могут выполняться на любом процессоре, т.е. все процессоры рассматриваются как одинаковые. Все процессоры разделяют одно адресное пространство с точки зрения его доступности всем процессорам. Заметим, что в таких системах достоверность данных обеспечивается на аппаратном уровне. Именно такой режим реализован в WINDOWS. Заметим, что возможность доступа к любой области памяти действительно обеспечивается такими системами. Но время доступа к памяти зависит от места этой памяти. Так, время доступа к «своей» памяти значительно меньше, чем время доступа к «чужой». Такое свойство памяти называется NUMA (Non-Uniform Memory Access) — неодинаковый доступ к памяти.

Поэтому ОС для обеспечения максимальной производительности должна учитывать и этот фактор. Несимметричная система {asymmetric multiprocessing — AS MP) — операционная система выбирает один процессор для выполнения потоков ядра (master processor), а остальные процессоры используются для потоков пользовательских приложений. Операционная система, которая поддерживает многопроцессорность в симметричном режиме, должна обеспечить возможность выполнения любого потока приложения на любом из доступных процессоров, в том числе потоков одного приложения. В этом случае требуются надежные средства синхронизации. Только такой режим использования обеспечивает увеличение быстродействия системы с увеличением числа процессоров (масштабирование).