Карта памяти Как укладывается стек и какова граница стека - PullRequest
0 голосов
/ 03 марта 2019

Привет, я читал о карте памяти и искал стек, и мне пришло в голову этот вопрос, поскольку стек начинается с конца памяти. Но что на самом деле является концом памяти физически это последнийАдрес памяти, если так, то для 32-битной ОС и архитектуры каждая программа должна выделять 4 ГБ памяти.MMU и виртуальная память играет роль?
С уважением

1 Ответ

0 голосов
/ 03 марта 2019

Адреса, видимые процессором, всегда виртуальные адреса.Следовательно, конец памяти - это конец виртуальной памяти.Вы можете иметь очень большие адреса, например 2 ^ 32-x, но они являются виртуальными адресами.

ОС выделяет физические страницы, необходимые для процесса.Таким образом, он будет выделять страницы для текстовой части, секции данных и кучи процесса на нижнем конце виртуальных адресов и для стека на верхнем конце.ОС создает эквивалентности между виртуальными и физическими адресами в таблице страниц.Таким образом, верхние виртуальные адреса, которые содержат стек, будут сопоставляться с физическими адресами в любой позиции.

Между разделами данных и кучи и стеком существует большой объем неиспользуемой свободной виртуальной памяти, которая невыделено ОС.Таким образом, нет риска выделить 4 ГБ для процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...