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