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