Об оперативной памяти и стеке

#stack #ram

#стек #ОЗУ

Вопрос:

Предположим, мы открыли приложение на нашем мобильном устройстве. Насколько мне известно, любое приложение, которое мы открыли, попадает в оперативную память. 1) Будет ли он храниться в стеке?

  1. Что определяет, сколько памяти требуется от оперативной памяти?

  2. Был ли размер приложения (я имею в виду, что мы видим размер приложения из Play Store при загрузке, например, 13 МБ) и размер, который он занимает в оперативной памяти, одинаковыми?Если нет, то каковы эти 2 размера?

Ответ №1:

  1. Стек — это имя, присвоенное части памяти. Когда вы запускаете программу, каждая программа получает свое собственное виртуальное адресное пространство, я говорю виртуальное, потому что другие программы тоже могут иметь тот же адрес! Но операционная система заботится о сопоставлении виртуальных адресов разных процессов с реальным адресом в оперативной памяти. Теперь, стек — это пространство в виртуальном адресе, где хранятся локальные переменные. Оно уменьшается от адресного пространства с высоким значением до низкого значения. Я значительно упростил это.

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

  1. это зависит от процессов программы, кода, который она запускает. Переменные, которые он создает, функции, которые он вызывает. В зависимости от этого он будет запрашивать столько страниц,

(адресация памяти обрабатывается через страницы или разделы памяти, и страница обычно будет содержать мощность в 2 байта. Таким образом, виртуальная страница 1 может иметь адрес от 0 до 1023, виртуальная страница 2 может иметь адрес от 1024 до 2047, и эта виртуальная страница 2 может быть сопоставлена с реальной страницей 3, которая имеет адрес от 2048 до 3071). Вы можете прочитать больше об этом.

и ОС удовлетворит запрос. Это также будет динамически меняться.

  1. размер приложения — это размер файла или размер содержимого. Это хранится на диске / хранилище. Это статично, это будет то же самое, обычно состоящее из игровых файлов, изображений и т.д. при запуске программы мы загружаем не все, а только то, что нам нужно. При выполнении программы объем памяти, который ей требуется, отличается от размера кода / файла.

Ответ №2:

  1. Стек используется для выполнения некоторых команд приложения, таких как вызовы вложенных модулей и вычисления арифметических формул.
  2. Конкретные алгоритмы и используемые вычисления, графика приложения, размер ввода и вывода … влияют на использование памяти.
  3. Нет, первое — это размер установочного пакета приложения, а второе — размер оперативной памяти, необходимый для его запуска, и может меняться во время выполнения.