Я легко могу понять, как .bss и код имеют физические представления в процессоре, который имеет банк памяти для инструкций, которые может подсчитывать счетчик программ, а bss (начальный символ блока) является просто глобальными данными. Но тогда есть стек для локальных переменных и куча для динамической памяти. Как эти вещи включаются в схему физически?
источник
По логике говоря, стек и куча - это обычно просто память; хотя на уровне реализации они, как мы надеемся, будут обслуживаться главным образом из кэша. В большинстве систем они попадают туда динамически с помощью алгоритмов кэширования, но были системы, которые поддерживают явное расположение в кэше или другой памяти, превышающей обычную, и, вероятно, также те, которые поддерживают намеки на то, что конкретные данные должны иметь преимущественный приоритет для размещения там как космические разрешения.
Надеемся, что разработка низкоуровневого программного обеспечения и генераторов кода компилятора учитывает организацию доступа к данным, что, вероятно, приведет к хорошему использованию кэша по сравнению с постоянными потерями кэша.
Некоторые процессоры имеют регистр обратного адреса, который функционирует как своего рода явный кэш стека с одной глубиной (возможно, есть и с несколькими аппаратными стеками, хотя примеры не приходят на ум).
источник