Стек программ и куча, как они работают?

Я знаю, что у каждого запущенного процесса есть страницы, связанные с ним в виртуальной памяти, и лишь немногие из них будут загружаться в основную память по мере необходимости. Я также знаю, что у программы будет стек, а также куча для выделения динамической памяти. Вот мои вопросы.

Является ли стек также частью какой-либо страницы в основной памяти?Что происходит, когда программа переводится в состояние ожидания? Где хранятся указатель стека, программный счетчик и другая информация?Почему стек растет, а куча растет?Может ли кэш L1, L2 содержать только один кусок непрерывной памяти, или он может иметь некоторую часть стека и кучи?

Можете ли вы порекомендовать какую-нибудь хорошую книгу, которая охватывает эти вещи?

Ответы на вопрос(5)

Ваш ответ на вопрос