Я использую ОС Windows. Предположим, я открыл блокнот в Windows, а затем что-то набрал в нем, но не сохранял его. Поэтому я хочу знать, что текущее местоположение файла блокнота перед его сохранением означает, где он находится в данный момент, например, в Ram, Rom, в кэш-памяти или на жестком диске.

2 ответа2

2

Под "расположением файла" вы можете ссылаться на одну из следующих вещей:

  • логическое расположение на диске, т. е. в каком каталоге и подкаталоге находится файл. Вы можете убедиться в этом, спросив само приложение, обычно появляется диалоговое окно "Свойства", или выбрав «Сохранить как ...» вместо "Сохранить". Первый предложит папку для сохранения по умолчанию, которая для большинства приложений в этом случае будет местоположением существующего файла ... при условии, что он существует, то есть он уже был сохранен хотя бы один раз.

  • физическое расположение на диске, т. е. какие сектора в магнитном носителе содержат данные, из которых сделан файл. Для этого существует несколько дисковых редакторов, предназначенных для восстановления потерянных файлов. Физическое местоположение прикрепляется к метаданным файла и отображается в области описания (или нескольких областях), зарезервированной для этой цели в файловой системе. В Windows NTFS у вас есть главная таблица файлов (MFT).

  • логическое расположение в памяти, т. е. какая структура памяти содержит ваш файл. Память компьютера разделена на несколько областей, некоторые из которых доступны только ядру ОС, некоторые доступны пользователям высокого уровня, некоторые доступны каждому. Ваш файл должен "жить" в куче адресного пространства приложения "Блокнот", которое само находится в пространстве пользователя. Чтобы узнать, где в куче, вам нужен отладчик, чтобы открыть Блокнот и следовать указателям его внутренней памяти.

  • физическое расположение в памяти, т. е. где именно вышеуказанные пространства лежат в физической памяти. Если они там вообще. Логическая память не обязательно находится в ОЗУ; современные процессоры могут "обменивать" части драгоценного ОЗУ, которые считаются неиспользованными или недостаточно используемыми, на диск или другое устройство, освобождая, таким образом, быструю и драгоценную ОЗУ для использования в каком-либо нужном приложении. Те приложения, которые оказались выгруженными, не знают об этом, потому что физико-логическая информация обычно скрыта от них ядром. Таким образом, вы, как приложение, можете "видеть" 64 ГБ ОЗУ на компьютере с 4 ГБ ОЗУ.

"Буфер обмена" является еще одной областью памяти, он принадлежит ОС (на самом деле я думаю, что Windows Explorer, то есть пользовательский интерфейс, который находится над ОС - но я не слишком уверен), и не доступен для Блокнота хранить "файл". Он может использоваться Блокнотом для хранения содержимого файла на некоторое время: выберите "Все", Ctrl C, и теперь содержимое вашего файла находится в буфере обмена, и вы можете вставить его в другое место. Но файл все еще находится на диске, и его представление в памяти находится в куче Блокнота.

ПЗУ - это только постоянное запоминающее устройство - оно записывается ("мигает"), вероятно, только один раз при сборке компьютера, даже если некоторые программируемые ПЗУ (ПЗУ) могут быть позже перепрограммированы соответствующей программой, разработанной специально для этих ПЗУ. Таким образом , вы (или Блокнот) не может что - либо в ПЗУ хранения.

Кэш-память очень быстрая, а значит, очень дорогая и, следовательно, очень маленькая, предназначенная для хранения любых данных, которые процессор использует чаще всего. Когда вы запускаете Блокнот и открываете файл, части этого файла и части кода Блокнота попадают в кэш ЦП (или кеши; может быть до трех уровней, L1, L2, L3 - L1 самый быстрый, поэтому самый дорогой , следовательно, наименьшее. Но даже L3 обычно быстрее, чем обычная оперативная память) и остается там некоторое время. Проверка кэша трудна, поскольку выполнение программы должно выполняться тем же процессором, который использует ту же кэш-память. Это было бы похоже на операцию на мозге.

Другое значение слова "кэш" - это указание блока неиспользуемой физической памяти, в которой хранятся данные после того, как они были прочитаны с диска, а также данные, которые должны быть записаны на диск, до того, как это будет сделано. Таким образом, повторные чтения не "ударяют" о медленный диск и идут быстрее; и записи могут выполняться все вместе, в порядке, более подходящем для организации данных на диске, и откладываться до тех пор, пока система не станет настолько загруженной. Эти эффекты вместе объединяются, чтобы диск казался намного быстрее, чем он есть на самом деле. Таким образом, после прочтения файла в Блокноте этот файл непременно будет также находиться в кэш-памяти ОЗУ в течение некоторого времени, если только это пространство не будет перераспределено и не использовано повторно для других целей.

Ваш файл находится или может быть "быть" тогда здесь, в зависимости от значения "быть":

DISK             [MFT]---->[You]--->[r f]-->
                 -->[ile]     [Your fi]-->[le (previous version)]
                       |     [Y]--[our file (deleted copy, space not yet reclaimed)]
                       |
                       V
INTERNAL DISK     [You][r f][ile]
CACHE                  |
                       V
MEMORY CACHE           [r f][ile][...other stuff...]

NOTEPAD'S HEAP    [Yo]--[fi]--[ur]--[le] [Yo] [other data] [undo buffer: Yrou]

CLIPBOARD         "This is my file's first sentence, which I just copied"

CPU CACHE         [first sent][...other programs' stuff...][just cop]
1

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

Вы в основном прикрепляете программу-отладчик к блокноту, и она позволяет вам видеть выполнение программы, а также места в памяти, которые она использует, их значения, регистры и другие ресурсы.

Пожалуйста, обратитесь к следующим URL, чтобы начать то же самое:-

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