Какая память хранит правки в файле

Обновлено: 06.07.2024

Память с записью-считыванием– тип памяти, дающей возможность пользователю помимо считывания данных производить их исходную запись, стирание или обновление. К этому виду отнесена оперативная память.

Программы и данные во время непосредственного сеанса хранятся в основной памяти или оперативной памяти компьютера. Оперативная память состоит из ячеек памяти одной одинаковой длины. Каждая ячейка памяти включает элементы памяти, состояние каждого из которых соответствует одной двоичной цифре о или 1, т.е. одному биту. Совокупность нулей и единиц, хранящихся в элементах одной ячейки, представляет собой содержимое этой ячейки. При этом стандартный размер ячейки равен 8 битам и образует один байт информации. Байт является наименьшей адресуемой единицей оперативной памяти. Для идентификации ячеек в оперативной памяти каждой из них присваивается адрес, представляющий собой номер ячейки. Ячейки нумеруются числами из последовательного натурального ряда чисел.

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

Основное отличие оперативной памяти (RAM) от постоянной (ROM) состоит в возможности оперативного изменения содержимого всех ячеек памяти с помощью дополнительного управляющего сигнала записи WR. Каждая ячейка оперативной (статической) памяти представляет собой, по сути, регистр из триггерных ячеек, в который может быть записана информация и из которого можно информацию читать. Выбор того или иного регистра (той или иной ячейки памяти) производится с помощью кода адреса памяти. Поэтому при выключении питания вся информация из оперативной памяти пропадает (стирается), а при включении питания информация в оперативной памяти может быть произвольной.

Оперативная память бывает двух основных видов: с раздельными шинами входных и выходных данных и с двунаправленной шиной.

В постоянной памяти хранятся стандартные программы, записанные в микросхему памяти на заводе-изготовителе и не требующие изменений. ROM позволяет только считывать хранящиеся в ней данные. Информация в ROM сохраняется при выключении компьютера.

Когда-то в постоянной памяти простых компьютеров находился еще и интерпретатор языка BASIC, позволявший программировать на компьютере не загружаясь с внешних носителей информации.

Выделяют также и программируемую постоянную память, программируемое ПЗУ, ППЗУ -постоянная память или ПЗУ, в которых возможна запись или смена данных путем воздействия на носитель информации электрическими, магнитными и/или электромагнитными (в том числе ультрафиолетовыми или другими) полями под управлением специальной программы. Различают ППЗУ с однократной записью и стираемые ППЗУ (EPROM, Erasable PROM), в том числе: электрически программируемое ПЗУ; электрически стираемое программируемое ПЗУ, ЭСПЗУ. К стираемым ППЗУ относятся микросхемы флэш-памяти, отличающиеся высокой скоростью доступа и возможностью быстрого стирания данных.

В последние два десятилетия массовое производство персональных компьютеров и стремительный рост Интернета существенно ускорили становление информационного общества в развитых странах мира.

Внутренняя память компьютера делится на оперативную и постоянную. В отличие от внешней, которая представлена подключаемыми устройствами HDD, USB-флеш, SD-картами, оптическими дисками, она является одним из основных элементов системы, обеспечивающих ее работу. Устройства такого типа размещаются непосредственно на материнской плате и не требуют обращения к ним пользователя. Посмотрим, чем отличается оперативная память от постоянной.

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

1

Постоянная память (ROM) – энергонезависимая память, хранящая неизменяемые данные. Реализуется в виде распаянных на плате микросхем, которые называются постоянными запоминающими устройствами.

2

ПЗУ часто путают с накопителями, на которые записывают файлы пользователи. На самом деле эта память им недоступна: в ROM записаны BIOS и другие микропрограммы, предназначенные для управления взаимодействием аппаратных элементов, а в мобильных устройствах – еще и операционная система. Технически к ПЗУ также относятся и CD-ROM, магнитные ленты, перфокарты и прочие носители с единожды размещенной информацией, однако частью системы внутренней памяти компьютера они, конечно, не являются.

Сравнение

Представьте себе, что пишете, к примеру, доклад. Чтобы прочитать статью, вы встаете, подходите к шкафу, берете книгу или журнал, несете ее за стол, ищете информацию, закрываете, несете ее обратно, ставите на полку. И так раз за разом. Медленно и неудобно, особенно если шкаф в другой комнате. А если сесть за большой свободный рабочий стол? Вот здесь у вас лежат три журнала, открытые на нужных страницах, вот здесь – том энциклопедии, там методичка, а на мониторе – браузер со ссылками на литературу. Все доступно, только руку протяни и прочитай. Точно так же в оперативной памяти хранятся файлы запущенных программ и открытых документов. По сравнению с накопителями, даже самыми перспективными, ОЗУ гораздо быстрее, время обращения измеряется в наносекундах.

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

Основное техническое отличие оперативной памяти от постоянной – энергозависимость. С отключением питания ОЗУ полностью очищается от данных, сколько бы их ни было и какими бы важными они ни казались. Каждый хотя бы раз попадал в ситуацию, когда в процессе работы за компьютером внезапно отключался свет, и тогда изменения в документе, открытые странички в браузере, проигрывающееся видео не сохранялись. Это происходит потому, что до записи новой редакции во внешнюю память она хранится в памяти оперативной, которая, будучи обесточенной, обнуляется.

Постоянная память энергонезависима. Полное отключение энергии никак не влияет на ее содержимое, поэтому программы, запускаемые из ПЗУ (BIOS, POST, ОС) требуют лишь однократной записи.

Если сравнивать, к примеру, процесс набора текста в редакторе и заливку прошивки или обновления в смартфон, заметно, в чем разница между оперативной и постоянной памятью. Символы появляются на экране сразу (задействована RAM), а во втором случае потребуется несколько минут, а иногда и часы (пишется в ROM).

В современных системах используются твердотельные динамические ОЗУ (DRAM), выполненные в виде планок с распаянными на них микрочипами и контактами. Их можно извлекать и менять на другие, допустим, большего объема. ПЗУ размещаются непосредственно на плате, замене подлежат только в целях ремонта. Оперативная память может хранить до 64 Гб информации в одном модуле, вместительность одного чипа постоянной существенно меньше – несколько Мб.

image

Задача сохранения настроек встречается в подавляющем большинстве современных устройств. Реже, но тоже очень часто, требуется хранение лог-файлов. Если речь идет о большом устройстве построенном на Линукс и содержащей как минимум SD карту, то с этими задачами не возникает проблем. Но если все устройство представляет из себя микроконтроллер, то возникает вопрос, где и в каком виде хранить подобные данные. В этом случае, обычно для настроек предлагают использовать сырые данные размещенные во внешнем eeprom. Но такой подход гораздо менее удобен чем вариант с файловой системой пусть даже с сильно ограниченными свойствами. Кроме того он плохо подходит для задач логирования. В данной статье мы расскажем как можно организовать удобное хранение файлов настроек и лог-файлов во внутренней флеш памяти микроконтроллера.

Простейшая read-only файловая система

Начнем с самого понятия файловой системы. Когда речь заходит о файловой системе, то сразу возникает ощущение чего то большого, а следовательно и имеющего большие накладные расходы. Да, это правда, накладные расходы присутствуют, ведь для описания файлов, хотя бы их имен или идентификаторов, необходимо место. Да, существует проблема достаточно больших накладных расходов при применение универсальных файловых систем. Стремление сделать универсальные файловые менее ресурсоемкими привели к созданию littleFS, но даже она требует 10кб (RAM + ROM), что для микроконтроллера порой избыточно, ведь требуется всего лишь хранить несколько десятков параметров.

Но давайте можно ли ограничив функционал уменьшить накладные расходы?

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

Сделать это можно очень просто. Нужен ассемблерный файл в котором бинарные данные помещаются в специальную секцию


И добавив линкер скрипт


Этого достаточно, теперь мы можем внутри программы ходить по файлам, метки и другие метаданные доступны. Наша файловая система упакована в очень простой формат cpio , который почти не требует накладных расходов. Собственно в Embox мы называем эту файловую систему initfs. Она является полноценной файловой read-only системой в которой доступны как файлы так и папки.

Файлы в этом случае представляют из себя описание файла содержащее имя и адрес начала данных и сами данные. Причем данные это просто массив байт. Аналогично можно представить файл в виде си-массива и включить его в проект при компиляции. Этот метод широко используется например при создании веб-сайтов на базе lwIP. Об преимуществах Embox при создании web-сайтов мы рассказывали в статье.
.
В итоге предлагаемый подход на основе cpio имеет сопоставимые накладные расходы по сравнению с внедрением массива байт, и они меньше по сравнению с littleFS. Что не удивительно, ведь мы создали еще более специализированное решение.

Общие сведения о файловой системе

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

Мы рассмотрим только несколько типов объектов без которых трудно обойтись. Начнем с описателей файла. Есть два типа описаний файла. Первый это описатель представления файла на носителе (inode ). Отмечу, что имя файла хранится не в самом inode, а в записи об этом файле в родительской директории (directory entry (dentry)). dentry хранит имя файла и ссылку на его inode эта информация нужна для поиска файла в файловой системе.

Вторым описателем файла является описатель открытого файла представленный в виде индексного дескриптора. Этот описатель получается с помощью стандартного POSIX вызова open(). Отмечу что объект FILE получаемый с помощью fopen() является описателем потока (stream) а не файла, хотя во многих вещах это одно и тоже. Индексный дескриптор для файла должен как минимум содержать текущую позицию по которой происходит чтение или запись и ссылку на его inode.

Тип файловой системы определяет формат в котором хранятся метаданные и данные в этой файловой системы. Драйвер файловой системы это реализацию функций работы с форматом для данного типа файловой системы, например, упомянутые littleFS и initfs (в Embox) это драйвера файловой системы.

Еще одним важным объектом является описатель файловой системы (superblock). В нем хранится информация о методах работы с файловой системой и ее состояние (например блочное устройство на котором оно работает).

Драйвер initFS

Вернемся к цели нашей статьи файловая система внутри микроконтроллера. Мы уже поняли, что создать удобную read-only файловую систему с очень маленькими накладными расходами возможно. Для удобной работы через привычные open/read/write нам не хватает совсем немного. Например нужно чтобы наш драйвер имел какое то API. Давайте рассмотрим некоторые функции драйвера в Embox, для общего понимания каким может быть это API.


Определяем сам драйвер. У него есть имя файловой системы и функция заполнения superblock. В драйвере еще могут быть функция форматирования блочного устройства в формате файловой системы и очистка superblock, но у нас read-only файловая система и этого точно не требуется.

Функция заполнения superblock


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


Функция сreate() создает новую inode на файловой системе, в нашем случае она просто возвращает ошибку прав доступа. Нам же понадобятся пара функций для операций с inode: lookup функция поиска по имени в заданной папке и iterate — функция для перебора и получения имени всех inode в папке.


На самом деле, если нужно только open/read/write то без iterate можно было бы попробовать обойтись. По сути дела она используется в readdir, но для красоты реализации (и универсальности конечно) функцию open() лучше выразить через readdir().

Функция lookup() ищет файл с указанным именем в директории и в случае обнаружения возвращает указатель на новую inode.


Из функций superblock интересна open_idesc. Для регулярных файлов она должна выделить объект idesc, тот самый описатель файла по которому будут происходить операции read/write. inode который описывает файл на диске уже заполнен с помощью функции lookup.


Нам осталось рассмотреть только функции для работы с файлами read/write. write() будет пустой и просто вернет ошибку. Функция read() тоже не сложная:


Переставляет текущий курсор и копирует данные в буфер.

Файловая система

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

Что дает хорошо видно на этом скриншоте.


Мы можем работать с данными размещенными внутри нашего образа, как с обычными файлами. Я вызываю обычную команду ‘ls’ и затем вывожу информацию с помощью обычной команды ‘cat’.

Сколько это стоит? То есть сколько требуется ресурсов для подобное удобство. Оказалось не так уж и много. Я использовал STM32F4-discovery и я сравнил образы с файловой системой и без, оказалось на text + rodata (то есть код и константы в том числе и сами файлы) нужно порядка 8 кБ. При этом я даже не включал оптимизацию. Для RAM потребовалось порядка 700 байт. Откуда они берутся. Нужен объект superblock, и inode для каждой примонтированной файловой системы, Нужны объекты dentry включающие inode для каждой открытой папки и файла. нужен idesc для каждого открытого файла.

Наверное кто то скажет что несколько кБ за read-only файловую систему для микроконтроллера много. Но нужно учитывать что я оценивал всю подсистему, причем вместе с файлами сайта которые занимали пару киллобайт, а не только драйвер. А добавление еще одного драйвера требует гораздо меньше ресурсов (если он простой конечно).

DumbFS

Давайте разработаем драйвер который может работать во внутренней флеш микроконтроллера. Наш драйвер для хранения настроек и лог-файлов, может быть очень простым. Например, нам не нужно хранить атрибуты файлов, мы можем обойтись без директорий, мы даже можем сказать что там нужно только 3 файла ведь на этапе проектирования, мы можем определить какие именно файлы нужны и можем задать их максимальных размер. Максимальный размер для файла может пригодиться, потому что мы сможем сразу отформатировать наше устройство хранение под заданные характеристики, зарезервировав и количество dentry (записей в директориях) и место под каждый файл.

Наш superblock может выглядеть следующим образом:


Первые два байта это просто идентификатор файловой системы, для проверки что наше устройство хранения отформатировано нужным образом. Далее идут счетчик файлов, на случай если мы хотим не сразу отформатировать все файлы, а все таки иметь возможность создавать как в настоящей файловой системе. Далее идет максимальное количество этих файлов. Оба параметра имеют размер 1 байт, вряд ли нужно хранить больше 255 файлов на подобной системе. Затем идет максимальная длина файла. И дальше пара необязательных параметров. free_space это свободное нераспределенное пространство, хотя его можно вычислить в через inode_count. А buff_bk служит для определения буферизации. Он полезен поскольку во внутренней флешь памяти перед записью нужно стереть целый блок. Этот параметр тоже может быть вычислен и его не обязательно хранить на устройстве.

Далее мы можем сразу разместить записи для директории, она у нас одна поэтому данные могут располагаться сразу за superblock


Все просто, первый параметр имя файла. Второй смещение начала данных в устройстве хранения. Третий текущая длина. И четвертый необязательный флаги или атрибуты файла.

Рассмотрим некоторые функции драйвера:


Функция заполнения suberblock похоже на аналогичную в initfs тоже устанавливаем обработчики операций, но так как у нас реальная файловая система нужно считать данные superblock с устройства и еще заполнить inode для корневой папки

Функции iterate и lookup тоже аналогичны initfs, разница только в формате представления dentry.

Поскольку у нас добавилась возможность записи на файловую систему, то необходимо реализовать например функцию itruncate которая изменяет текущий размер файла.


Тут тоже все просто, считываем dentry для файла, меняем текущую длину и записываем.

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


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

Зачем стирать кэш? Ведь обычно это просто массив данных в RAM размером с блок данных. Но в некоторых микроконтроллерах присутствует достаточно много flash памяти, но RAM ограничена. Пример STM32F4-discovery имеет 1024 кБ flash. Среди них 4 блока по 16кБ которые можно было бы использовать под наши нужды. Но при этом есть всего 128+64кБ ОЗУ. И не всегда есть достаточно памяти чтобы выделить 16 кБ в ОЗУ. Тогда для кэширования можно использовать второй блок по 16КБ.

Наша файловая система почти готова. Осталось только научиться писать в правильные блоки внутренней флешь. То есть нужно выделить несколько блоков памяти и превратить их в блочное устройство. Давайте поступим также как и с cpio архивом. Скажем линкеру зарезервировать соответствующую память.


Операции работать с блочным устройством рассматривать не будем, это выходит за рамки данной статьи.

Собственно все, у нас получилось сделать примитивную файловую систему с ограниченным количеством файлов, без директорий с ограниченной длиной файлов, но перезаписываемую имеющую минимально возможные накладные расходы, и позволяющую разместить ее где угодно, даже в 2 кБ внутренней памяти. (количество файлов и их максимальный размер будут соответствующие).


На этом скриншоте виден файл с настройками сети, которые могут быть изменены в процессе работы. А также приведены данные самой файловой системы. Можно увидеть и superblock и dentry и поскольку файл первый содержимое самого файла.

То же самое можно увидеть напрямую в памяти.


Остается отметить сколько нужно ресурсов. Сам драйвер занимает меньше килобайта, мы его почти весь разобрали. Накладные расходы на RAM, собственно их и нет, точнее они включены в расходы самой файловой системы, нужно иметь superblock и другие объекты, чтобы работать с файлами, но они у нас уже были включены для работы с initfs. Ну и конечно есть код драйвера для работы с flash, сама флешь и кэш буфер для нее. Но все это также нужно и при работе напрямую без файловой системы.

Лог-файлы

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

Разрабатывать и отлаживать прикладной код можно прямо на Linux, но я это сделаю для Embox и запущу в qemu.

Функция печати лога:


Приложение настолько простое что пояснять его не нужно.

Таким образом формат нашей записи будет:


Результаты хорошо видно на скриншоте:


Добавим наш логгер в конфигурацию для платы STM32F4-Discovery. И получим тоже самое поведение:


Простое устройство

Файловая система это конечно хорошо, но давайте попробуем применить ее на каком нибудь простом устройстве.


Все, теперь просто скриншоты, на которых по моему мнению все понятно.





Заключение

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

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

Если же устройство имеет SD карту и требуется уметь читать FAT то в этом случае, добавление файловой системы для настроек и логирования, точно имеет смысл, поскольку за незаметные накладные расходы мы получаем удобство и универсальность решения. Например описанная в статье DumbFS работает на сериях STM32 (f3, f4, f7, h7) причем другие просто не пробовали. А сам приведенный в статье логгер вообще работает на любой файловой системе.

P.S. Спасибо за комментарии. Решил немного дополнить, изначально думал, что это понятно.

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

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

апрсапрсаппо

Оперативная память (RAM – random access memory, ОЗУ) – устройство, предназначенное для хранения обрабатываемой информации (данных) и программ, управляющих процессом обработки информации. Конструктивно представляет собой набор микросхем, размещенных на одной небольшой плате (модуль, планка). Модуль (модули) оперативной памяти вставляется в соответствующий разъем материнской платы, позволяя таким образом связываться с другими устройствами ПК.

Для того чтобы какая-либо программа начала свое выполнение, она должна быть загружена в оперативную память. Оперативная память является энергозависимой, т.е. хранит информацию, пока компьютер включен (подано питание на модуль оперативной памяти). В оперативную память программа и данные для ее работы попадают из других устройств, загружаются из внешней памяти, энергонезависимых устройств памяти (жесткий диск, компакт-диск и т.д.). Таким образом, загрузить программу означает прочесть ее из файла, находящегося на одном из устройств внешней памяти, и прочитанную копию разместить в оперативную память, после этого микропроцессор начнет ее выполнение.Оперативная память хранит загруженную, выполняющуюся сей момент программу и данные, которые с ее помощью обрабатываются. Если после обработки предполагается дальнейшее использование данных (это может быть и текстовой документ, и графическое изображение, и табличные данные, и звук), то копию этого документа из оперативной памяти можно записать на одном из устройств внешней памяти (например, на жестком диске), создав на жестком диске файл, хранящий документ.Как технически осуществить процесс загрузки нужной программы в оперативную память? Для этого нужна программа-посредник, посредник между “железом” и человеком. Такой программой является операционная система.

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

Основными характеристиками памяти являются объем, время доступа и плотность записи информации. Объем памяти определяется максимальным количеством информации, которая может быть помещена в эту память, и выражается в килобайтах, мегабайтах, гигабайтах. Время доступа к памяти (секунды) представляет собой минимальное время, достаточное для размещения в памяти единицы информации. Плотность записи информации (бит/см 2) представляет собой количество информации, записанной на единице поверхности носителя. Важнейшей характеристикой компьютера в целом является его производительность, т.е. возможность обрабатывать большие объемы информации. Производительность ПК во многом определяется быстродействием процессора, а также объемом оперативной памяти и скоростью доступа к ней.

Оперативная память изготавливается в виде небольших печатных плат с рядами контактов, на которых размещаются интегральные схемы памяти (модули памяти). Модули памяти различаются по размеру и количеству контактов (SIMM или DIMM), по быстродействию, по объему.

Важнейшей характеристикой модулей оперативной памяти является быстродействие – частота, с которой считывается или записывается информация в ячейки памяти. Современные модули памяти имеют частоту 133 МГц и выше.Оперативная память состоит из огромного количества ячеек (десятки миллионов), в каждой из которых хранится определенная информация. От объема оперативной памяти зависит, сможет ли компьютер работать с той или иной программой. При недостаточном количестве памяти программы либо совсем не будут работать, либо будут работать медленно. Типичный современный компьютер

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

Найти сохраненные изменения в Windows

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

Эти файлы буферных документов можно найти в разных местах, в зависимости от того, какая у вас версия Word. Вот как проверить, где находятся эти файлы.

Проверить местоположение автосохранения Word

Прежде всего, вы можете проверить наличие папки автосохранения внутри самого Word. Откройте документ Word и нажмите «Файл».


Затем Параметры внизу.


На боковой вкладке слева выберите Сохранить. Затем проверьте местоположение, указанное рядом с местоположением файла автовосстановления.


По умолчанию установлено следующее:
C: Users (имя пользователя) | AppData Roaming Microsoft Word
Просто перейдите в эту папку в проводнике, и здесь вы найдете файлы автосохранения Word. Если вы не можете добраться до места, потому что не можете найти папку AppData, это потому, что это скрытая папка, и необходимо настроить параметры просмотра, чтобы сделать ее видимой.

Чтобы просмотреть скрытые папки, щелкните вкладку «Просмотр» в проводнике.


Затем отметьте «Скрытые предметы».


Теперь у вас должен быть доступ к папке и к файлу «автовосстановление».



В зависимости от версии вашего приложения Word файлы также могут находиться здесь:
C: Users (имя пользователя) AppData Local Microsoft Office UnsavedFiles

Каждый раз при создании документа Word дублирует его и сохраняет информацию в папке Temp, которая находится недалеко от места автоматического восстановления.
C: Users (имя пользователя) AppData Local Temp

Искать .asd, .temp, а также .wbk файлы

Word создает несколько различных форм временных файлов. Хотя есть полная список определенных файлов, которые создает Word., вот те, за которыми вам стоит охотиться:

    Временный файл для автоматического восстановления:

Хотя не все файлы .tmp связаны с Word, можно легко определить, какие из них имеют знак тильды (


Также обратите внимание на файлы с расширением «.wbk», так как они обозначают файлы резервных копий Word. Простой поиск файлов .asd и .wbk, форматов, в которых Word автоматически сохраняет, в проводнике также может помочь вам определить, где именно находятся эти файлы.

Попробуйте найти копию своего документа в вышеупомянутых папках и сузьте область поиска, упорядочив список файлов по дате изменения. Затем найдите файлы, соответствующие дате и времени, когда вы в последний раз вносили изменения в документ. Если вы найдете какие-либо файлы, откройте их в Word.

Для этого откройте приложение Word и нажмите «Файл».



Щелкните «Управление документом».


Выберите Восстановить несохраненные документы.


Затем просмотрите и откройте файл.


Теперь перейдите в «Файл», нажмите «Сохранить как» и восстановите свою работу.


Найти сохраненные изменения в macOS

Пользователи Mac могут узнать местоположение своих несохраненных документов двумя способами. Давайте посмотрим на них один за другим:

Найти файлы автовосстановления

Если вы используете Word, функция автосохранения, включенная по умолчанию, часто сохраняет изменения, внесенные в документ. Файлы сохраняются в следующем месте:

/ Библиотека / Контейнеры / com.microsoft.Word / Data / Library / Preferences / AutoRecovery
Чтобы получить доступ к папке, нажмите «Перейти» на вашем Mac.

Затем «Перейти в папку».

Затем введите местоположение файла, как указано выше, и нажмите «Перейти».

Файлы в этой папке будут начинаться со слов «Автосохранение…».

Найдите несохраненный документ в папке TEMP

Временные файлы, созданные macOS, хранятся в папке TMP. Здесь вы найдете изменения, внесенные в ваш документ до его утери.

Чтобы перейти в эту папку TMP, нажмите «Приложения».

Введите следующую команду и нажмите Enter:
открыть $ TMPDIR
Откроется папка TMP. Теперь перейдите в папку «Temporaryitems».

Word Work File». Эти файлы будут иметь расширение .tmp, и их можно будет открыть с помощью TextEdit (блокнота Mac).

Убедитесь, что параметр «Сохранить информацию автосохранения» включен.

В Windows

Чтобы проверить настройки автосохранения, откройте файл Word и нажмите «Файл».


Затем нажмите «Параметры» внизу.


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


Если они включены, Word будет создавать автоматически восстановленный файл каждые 10 минут. Вы можете изменить этот параметр здесь, указав время рядом с первым параметром.


На macOS

В macOS этот параметр можно настроить аналогичным образом. Откройте Word> Настройки> Сохранить.

Затем убедитесь, что рядом с параметром «Сохранить данные автовосстановления» установлен флажок.

Под ним вы можете настроить частоту сохранения версии вашего документа.

В macOS также создано несколько временных каталогов. Некоторые из них зарыты глубоко и в большинстве случаев не предназначены для взаимодействия, например следующие:
$ TMPDIR / var / папки / 5j / ngsq010s6s7f3qdrtb76ms140000gn / T /
Многие временные файлы для документов предварительного просмотра хранятся в указанном выше месте. Существуют также временные каталоги, предназначенные для доступа пользователей, а основная временная папка находится в следующем месте:

/ Библиотека / Кеши / TemporaryItems /

Как работает сохранение документа?

Как упоминалось ранее, как только вы создаете документ, его дублирующая копия создается в папке TEMP (или TMP), которая регулярно сохраняет вашу работу, пока документ открыт. Эти временные файлы иногда можно удалить, как только вы закроете документ. Однако эти временные файлы действительно действуют как «страховочная сетка», которая защищает ваши документы на случай, если при сохранении файла возникнет ошибка (или сбой).

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

macOS делает то же самое, поскольку делает «снимки» вашего документа, а также создает и сохраняет его версии. Независимо от того, используете ли вы документ Word или предварительный просмотр, эти временные версии сохраняются каждый раз, когда вы открываете документ или дублируете его.

Мы надеемся, что вы смогли найти на вашем компьютере, где в конечном итоге находятся ваши несохраненные документы. Большинство процессоров документов, таких как Word или Preview, позволяют легко вернуться к предыдущим версиям (или копиям) документа, чтобы ваши изменения не были полностью потеряны. Для будущей работы держите под рукой горячую клавишу Ctrl + S (или Cmd + S).

Читайте также: