Иерархический распределитель памяти для многопроцессорных систем
Выделение памяти на многопроцессорных системах разделения времени требует учета некоторых дополнительных факторов. Структуры данных, такие как списки свободных буферов или карты размещения, используемые в традиционных системах, в условиях выполнения на многопроцессорных машинах нуждаются в защите от доступа при помощи блокировки. В крупных параллельных системах это приводит к сложным условиям такой блокировки, в результате чего процессоры часто оказываются в режиме ожидания ее снятия.
Одно из решений этой проблемы реализовано в Dynix, многопроцессорном варианте системы UNIX для машин Sequent S2000 [11]. Здесь применена иерархическая схема выделения памяти, поддерживающая программный интерфейс System V. Многопроцессорные машины Sequent используются для крупных интерактивных сред обработки транзакций. Распределитель памяти при такой загрузке демонстрирует высокую производительность работы.
Нижний процессорный уровень (per-CPU) производит наиболее быстрые операции, в то время как верхний уровень слияния в страницу (coalesce-to-page) используется для медленного процесса слияния. Есть также (на рис. не показан) еще один уровень распределителя, слияния в vmblock (coalesce-to-vmblock), который управляет выделением страниц внутри больших (4 Мбайт) областей памяти.