Адресное пространство процесса с многоядерными системами UMA NUMA
У меня есть сомнения относительно концепции адресного пространства процессов при использовании многоядерных архитектур процессоров, для случая, когда оба процессора совместно используют общее физическое адресное пространство (я думаю, это то, что они называют UMA).
Итак, если 32-разрядный процессор может получить доступ к 4 ГБ диапазона адресов, и любой 32-разрядный процесс владеет этим пространством во время своего выполнения, как можно иметь два разных процесса, работающих на двух ядрах... поскольку я думаю, что оба процессора будут иметь общие адресное пространство процессора. Будет ли адресное пространство процессоров разбито на количество процессов. В случае потоков отдельные потоки могут выполняться на отдельных процессорах, поскольку они лежат в одном и том же адресном пространстве, но в случае нескольких процессов.
Что будет в случае с NUMA.
1 ответ
UMA ("Универсальный доступ к памяти") и NUMA ("Неоднородный доступ к памяти") относятся к производительности памяти из разных ядер. В UMA производительность для разных частей памяти одинакова (т. Е. "Единообразна"), а в NUMA разные ядра имеют разные характеристики производительности в разных областях памяти.
Это не связано с проблемами пространства адресов.
В ЦП есть два важных адресных пространства: физическое адресное пространство и виртуальное адресное пространство. Операционная система создает виртуальное адресное пространство для каждого процесса, которое сопоставляется с различными частями физического адресного пространства. Таким образом, процессор с 4 ГБ физической памяти может иметь несколько процессов с 32-разрядным адресным пространством, но с разными битами физической памяти, сопоставленными для каждого процесса, по одному и тому же виртуальному адресу. Например, адрес 0x00400000 может быть действительным в обоих процессах, но сопоставляться с совершенно другим базовым адресом физической памяти. Эти процессы могут также совместно использовать память, например страницы операционной системы и разделяемые библиотеки, загруженные по одному и тому же адресу, могут быть защищены одной и той же физической памятью.
В небольших системах, где нет виртуальных адресных пространств, ваше предположение верно: все программное обеспечение использует одно и то же адресное пространство.