Допустим, мы создали объект с некоторым языком программирования

a = "This is my text and it is very precious"

а затем закройте терминал.

Насколько я понимаю, пространство памяти, в котором содержится информация «Это мой текст, и оно очень ценно», не возвращается к строке нулей. Как следствие, информация все еще там, но мы просто не знаем, где.

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

1 ответ1

0

Предполагая ОС виртуальной памяти, такую как Linux, Windows или MacOS ...

Не из пользовательского режима. Все адресное пространство вашего процесса исчезает, когда ваш процесс заканчивается.

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

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

Какова цель здесь?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .