2017-01-02 11 views
1

Я читал о том, как процессы реализуются компьютерами, и нашел упоминание стеков и куч. Это было довольно круто для меня, поскольку отсутствие какой-либо информации в области компьютерных наук означает, что эти вещи были для меня довольно эзотерическими.Может ли ОЗУ быть концептуально разделена на «стек» и «память кучи»?

Мое настоящее понимание заключается в том, что на чрезвычайно базовом уровне процесс представляется в ОЗУ в виде фиксированного размера «Stack» и связанных структур с переменным размером, которые в совокупности называются «кучей». Фреймы добавляются в стек, что может привести к созданию, редактированию или удалению данных, хранящихся в куче пространства, тем самым изменяя состояние процессов »).

Так что мой вопрос: может ли все использование ОЗУ быть классифицировано как часть кучи или части стека?

Что еще можно сохранить в ОЗУ, которое не попадет ни в одну из этих категорий?

ответ

1

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

+0

Даже если компьютер поддерживал многозадачность, я бы подумал, что вся память в ОЗУ соответствует процессу или другому, что означает, что он должен соответствовать стеку плюс куча? Что еще может быть в ОЗУ, которое не подпадает под заголовком «стек» или «куча»? –

+1

С многозадачностью есть варианты. Либо адресное пространство разделяется несколькими программами, либо каждая программа имеет свои собственные. В первом случае в одном и том же адресном пространстве может быть множество куч и стеков и частей кода. В последнем случае не может быть (если вы явно не создадите несколько). Физическая память (позади всех адресных пространств) может содержать несколько стеков и кучи из нескольких программ, если только переключение не требует полного сохранения состояния программы на диске и загрузки другого на свое место. –

+0

Как я уже сказал, память не против того, что хранится в ней. Код или данные (включая стек или кучу). Он может быть неинициализирован (после включения питания) и содержать несколько случайных данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^