Я читал о том, как процессы реализуются компьютерами, и нашел упоминание стеков и куч. Это было довольно круто для меня, поскольку отсутствие какой-либо информации в области компьютерных наук означает, что эти вещи были для меня довольно эзотерическими.Может ли ОЗУ быть концептуально разделена на «стек» и «память кучи»?
Мое настоящее понимание заключается в том, что на чрезвычайно базовом уровне процесс представляется в ОЗУ в виде фиксированного размера «Stack» и связанных структур с переменным размером, которые в совокупности называются «кучей». Фреймы добавляются в стек, что может привести к созданию, редактированию или удалению данных, хранящихся в куче пространства, тем самым изменяя состояние процессов »).
Так что мой вопрос: может ли все использование ОЗУ быть классифицировано как часть кучи или части стека?
Что еще можно сохранить в ОЗУ, которое не попадет ни в одну из этих категорий?
Даже если компьютер поддерживал многозадачность, я бы подумал, что вся память в ОЗУ соответствует процессу или другому, что означает, что он должен соответствовать стеку плюс куча? Что еще может быть в ОЗУ, которое не подпадает под заголовком «стек» или «куча»? –
С многозадачностью есть варианты. Либо адресное пространство разделяется несколькими программами, либо каждая программа имеет свои собственные. В первом случае в одном и том же адресном пространстве может быть множество куч и стеков и частей кода. В последнем случае не может быть (если вы явно не создадите несколько). Физическая память (позади всех адресных пространств) может содержать несколько стеков и кучи из нескольких программ, если только переключение не требует полного сохранения состояния программы на диске и загрузки другого на свое место. –
Как я уже сказал, память не против того, что хранится в ней. Код или данные (включая стек или кучу). Он может быть неинициализирован (после включения питания) и содержать несколько случайных данных. –