ВЫГРУЗКА В ФАЙЛОВОЙ СИСТЕМЕ
FLUSHING IN FILE SYSTEM

УРОВЕНЬ ТЕХНИКИ
[0001] В вычислительных системах файловая система используется для контроля как хранятся и извлекаются данные. Файловая система управляет пользовательскими данными на носителе информации. Существует много различных видов файловых систем, например, дисковые файловые системы, сетевые файловые системы и файловые системы специального назначения. Каждая из них может иметь отличающуюся от других структуру и логику, свойства скорости, гибкости, безопасности, размера и т.д. Файловая система задействует различные аспекты, включающие в себя, например, управление пространством, поддержание целостности.
[0002] Большинство файловых систем разработаны для систем, класса персональных компьютеров (PC-класса). В целом, существует два главных требования файловых систем для систем PC-класса: надежность и производительность считывания/записи. Надежность обеспечивает надежное хранение данных с гарантируемой целостностью и долговечностью. Надежность в частности относится к потере данных в случае неожиданного полного отказа системы (например, прекращение энергоснабжения). Производительность считывания/записи относится к реагированию пользовательских приложений при вводе-выводе (I/O).
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0003] Тем не менее, современные пользователи устройств, не являющихся персональными компьютерами, включающих в себя, но не ограниченных следующим: портативные или мобильные устройства, как например, смартфон, планшетный компьютер, переносной цифровой секретарь (PDA) и т.п. и некоторые малогабаритные стационарные устройства, испытывают нереагирование приложений и быстрое израсходование энергии, вызываемые хранилищем данных и лежащей в основе традиционной файловой системой. Такие, не являющиеся персональными компьютерами, устройства представляют существенно другие проблемы для файловой системы вследствие некоторых фундаментально других ограничений и сценариев использования. В одном аспекте, эти устройства обычно имеют ограниченный запас энергии вследствие того, что являются питающимися от батареи, и поэтому потребление энергии должно быть как можно более низким. В другом аспекте, опыт пользователей по взаимодействию с быстрореагирующими приложениями приводит к успеху данных приложений в мобильной экосистеме в значительной степени. Таким образом, может быть желательно, чтобы файловая система, подходящая для таких устройств, эффективно использовала энергию и быстро реагировала.
приняты
способы
[0004] Варианты осуществления объекта изобретения, описанного в данном документе, в целом относятся к файловой системе со способностью адаптивного хранения в, записи в, или выгрузки в, хранилище для электронного устройства. Обычно подлежащие записи данные хранятся в области буфера внутри запоминающего устройства вместо того, чтобы непосредственно быть записанными в постоянное хранилище. Операция выгрузки включает в себя обновление области буфера посредством записи или сохранения данных, в настоящее время находящихся в области буфера, в постоянное хранилище и очистки области буфера, связанной с записанными данными. Для достижения эффективности использования энергии или быстрого реагирования могут быть   следующие : уменьшение количества данных, подлежащих выгрузке в постоянное хранилище, потому что количество данных, подлежащих выгрузке, является одним из главных показателей, определяющих эффективность использования энергии при записи; и/или уменьшение времени ожидания приложения на завершение ввода-вывода в хранилище, другими словами, количество времени, которое пользователь приложения должен ожидать, пока приложение не станет реагировать. С этой целью, крупномасштабное и долговременное кэширование в запоминающем устройстве (RAM) с произвольным доступом устройства может использоваться для уменьшения количества данных, которые должны быть выгружены в постоянное хранилище, и уменьшения времени ожидания приложения на завершение ввода-вывода в хранилище.
блок
бездействии
[0005] Политики файловой системы для выгрузки кэша записи в запоминающем устройстве в хранилище могут быть ориентированными на приложение и/или адаптивными. Политики могут быть по меньшей мере частично основаны на одном или более из следующего: характеристике доступа приложения, состоянии взаимодействия пользователя с электронным устройством и состоянии электронного устройства. В частности,   кэшированных последовательностей запросов на запись, готовых быть выгруженными, может быть определен в соответствии с характеристикам доступа приложения. Кроме того, хронирование выгрузки может быть выбрано гибким так, чтобы выгрузка не воздействовала на потребление энергии устройством и реагирование приложения. Например, состояние, когда электронное устройство находится в , может быть подходящим временем для выполнения выгрузки, так как это может привести в результате к меньшему воздействию на реагирование приложения.
[0006] Следует понимать, что данный раздел «Раскрытие изобретения» приведен для представления выбора концепций в упрощенной форме. Концепции дополнительно описаны ниже в разделе «Осуществление изобретения». Данный раздел «Раскрытие изобретения» не предназначен для выявления ключевых признаков или существенных признаков заявляемых объектов изобретения, и при этом он не предназначен для использования с целью ограничения объема заявляемых объектов изобретения.
[0007] Преимущества могут стать очевидными из последующего подробного описания при совместном рассмотрении с чертежами.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
иллюстрируется
[0008] Настоящее раскрытие  в качестве примера и не ограничено сопроводительными фигурами, на которых одинаковые ссылочные позиции указывают подобные элементы и на которых:
[0009] на Фиг.1 показана блок-схема вычислительного окружения, в котором могут быть реализованы варианты осуществления объекта изобретения, описанного в данном документе;
[0010] на Фиг.2 показана принципиальная блок-схема, изображающая примерные компоненты для реализации выгрузки в файловой системе;
[0011] на Фиг.3 показаны кривые возможностей улучшения использования энергии нескольких приложений, изображающие то, как отношение возможности улучшения использования энергии изменяется с нарастанием устаревания данных;
[0012] на Фиг.4 показана блок-схема последовательности этапов способа выгрузки данных в файловой системе для электронного устройства в соответствии с вариантами осуществления объекта изобретения, описанного в данном документе;
[0013] на Фиг.5 показана примерная блок-схема последовательности этапов, изображающая то, как буферизовать данные в запоминающем устройстве при наступлении записи;
[0014] на Фиг.6 показана примерная блок-схема последовательности этапов, изображающая то, как выгрузчик может работать в соответствии с политикой выгрузки, раскрытой в данном документе;
[0015] на Фиг.7 показана простая модель конечного автомата для предсказания интервала, подходящего для выгрузки; и
[0016] на Фиг.8 показан примерный механизм планирования, основанный на приоритете.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0017] Теперь со ссылкой на несколько примерных вариантов осуществления будет описан объект изобретения, описанный в данном документе. Следует понимать, что эти варианты осуществления описываются только с целью предоставления специалистам в данной области техники возможности лучшего понимания и таким образом реализации объекта изобретения, описанного в данном документе, но не накладывания каких-либо ограничений на объем объекта изобретения.
[0018] Используемый в данном документе термин «включает в себя» и его разновидности следует читать как открытые термины, которые означают «включает в себя, но не ограничен следующим». Термин «или» следует читать как «и/или», если в контексте явно не указано иное. Термин «основан на» следует читать как «основан по меньшей мере частично на». Термин «один вариант осуществления» и «вариант осуществления» следует читать как «по меньшей мере один вариант осуществления». Термин «еще один вариант осуществления» следует читать как «по меньшей мере один другой вариант осуществления». Другие определения, явные и неявные, могут быть приведены ниже.
[0019] На Фиг.1 показан пример вычислительного окружения 100, в котором могут быть реализованы один или более вариантов осуществления описанного объекта изобретения. Вычислительное окружение 100 не предназначено для накладывания каких-либо ограничений в отношении объема использования или функциональности объекта изобретения, описанного в данном документе, поскольку различные варианты осуществления могут быть реализованы в разнообразных вычислительных окружениях общего или специального назначения.
[0020] На Фиг.1 вычислительное окружение 100 включает в себя по меньшей мере один блок 110 обработки (или процессор) и запоминающее устройство 120. Блок 110 обработки исполняет исполняемые компьютером команды и может быть реально существующим или виртуальным процессором. В мультипроцессорной системе множество блоков обработки исполняют исполняемые компьютером команды для увеличения вычислительной мощности. Запоминающее устройство 120 может быть энергозависимым запоминающим устройством (например, регистрами, кэшем, RAM), энергонезависимым запоминающим устройство (например, ROM, EEPROM, флэш-памятью) или некоторым сочетанием этих двух видов. Запоминающее устройство 120 хранит по меньшей мере часть команд для модуля 170 выгрузки для выгрузки в файловой системе.
[0021] Вычислительное окружение 100 может иметь дополнительный компонент или признаки. В примере, изображенном на Фиг.1, вычислительное окружение 100 включает в себя хранилище 130, одно или более устройств 140 ввода, одно или более устройств 150 вывода и одно или более соединений 160 связи. Механизм взаимного соединения (не показан), как например, шина, контроллер или сеть, осуществляет взаимное соединение компонентов вычислительного окружения 100. Как правило, программное обеспечение операционной системы (не показано) обеспечивает операционную среду для другого программного обеспечения, исполняемого в вычислительном окружении 100, и координирует деятельность компонентов вычислительного окружения 100.
[0022] Хранилище 130 может быть съемным или несъемным и может включать в себя машиночитаемые носители информации, как например, флэш-накопители, магнитные диски, магнитные ленты или кассеты, CD-ROM, CD-RW, DVD или любой другой носитель, который может использоваться для хранения информации и к которому может быть осуществлен доступ внутри вычислительного окружения 100. Хранилище 130 может хранить по меньшей мере часть команд для модуля 170 выгрузки.
120
[0023] Следует отметить, что модуль 170 выгрузки может принимать форму полностью аппаратной реализации, полностью программной реализации (включающей в себя встроенное микропрограммное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или реализации, сочетающей аспекты программного и аппаратного обеспечения, что все в целом может упоминаться в данном документе в качестве «модуля» или «механизма». Кроме того, аспекты модуля 170 выгрузки могут принимать форму компьютерного программного продукта, воплощенного в одном или более машиночитаемом(-ых) носителе(-ях), имеющем(-их) воплощенные на себе машиночитаемые программные команды. Команды для модуля 170 выгрузки могут содержаться полностью в запоминающем устройстве 120, полностью в хранилище 130 или частично в запоминающем устройстве 120 и частично в хранилище 130, в связи с запоминающим устройством 130.
[0024] Устройство(а) 140 ввода может(могут) быть одним или более из всевозможных устройств ввода. Например, устройство(а) 140 ввода может(могут) включать в себя пользовательское устройство, как например, «мышь», клавиатура, шаровой манипулятор и т.д. Устройство(а) 140 ввода может(могут) реализовать одну или более методик естественного пользовательского интерфейса, как например, распознавание речи, распознавание прикосновения и сенсорного пера (стилуса), распознавание жестов при контакте с устройством(ами) 140 ввода и рядом с устройством(ами) 140 ввода, распознавание жестов в воздухе, отслеживание головы и глаз, распознавание голоса и речи, считывание мозговой активности пользователя и искусственный интеллект. В качестве других примеров устройство(а) 140 ввода может(могут) включать в себя сканирующее устройство; сетевой адаптер; устройство считывания CD/DVD; или другое устройство, которое обеспечивает ввод для вычислительного окружения 100. Устройство(а) 150 вывода может(могут) быть устройством отображения, печатающим устройством, громкоговорителем, устройством записи CD/DVD, сетевым адаптером или другим устройством, которое обеспечивает вывод из вычислительного окружения 100. Устройство(а) 140 ввода и устройство(а) 150 вывода могут быть встроены в единую систему или устройство, как например, экран для прикосновений, система виртуальной реальности, носимое вычислительное устройство, включающее в себя закрепляемое на голове устройство.
разрешает(разрешают)
[0025] Соединение(я) 160 связи  связь по среде связи с другим вычислительным объектом. Дополнительно, функциональность компонентов вычислительного окружения 100 может быть реализована в единой вычислительной машине или во множестве вычислительных машин, которые способны связываться через соединения связи. Таким образом, вычислительное окружение 100 может работать в сетевом окружении с использованием логических соединений с одним или более удаленными вычислительными устройствами, как например, карманное вычислительное устройство, персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер, одноранговое устройство или другой общий сетевой узел. Среда связи переносит информацию, как например, данные или исполняемые компьютером команды или запросы в моделированном сигнале данных. Модулированный сигнал данных является сигналом, у которого одна или более из его характеристик устанавливается или изменяется таким способом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда связи включает в себя проводные или беспроводные методики, реализуемые с помощью электрического, оптического, радиочастотного, инфракрасного, акустического или другого носителя.
[0026] Варианты осуществления объекта изобретения могут быть описаны в общем контексте машиночитаемого носителя, который может быть носителем информации или средой связи. Машиночитаемые носители информации являются любыми доступными носителями информации, к которым может быть осуществлен доступ внутри вычислительного окружения, но к термину машиночитаемый носитель информации не относятся переходные распространяющиеся сигналы как таковые или другие сигналы как таковые. В качестве примера, а не ограничения, что касается вычислительного окружения 100, машиночитаемые носители информации включают в себя запоминающее устройство 120, хранилище 130 и их сочетания.
[0027] Варианты осуществления объекта изобретения могут быть описаны в общем контексте исполняемых компьютером команд, как например, содержащиеся в программных модулях, исполняемых в вычислительном окружении на целевом реально существующем или виртуальном процессоре. В целом, программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных или что-либо им подобное, которые выполняют отдельно взятые задачи или реализуют отдельно взятые абстрактные типы данных. Функциональность программных модулей может быть объединена или разделена между программными модулями по необходимости в различных вариантах осуществления. Исполняемые компьютером команды для программных модулей могут быть исполнены внутри локального или распределенного вычислительного окружения. В распределенном вычислительном окружении программные модули могут быть расположены как в локальных, так и в удаленных компьютерных носителях информации.
[0028] Несмотря на то, что механизм выгрузки, раскрытый в данном документе, может быть полезен для портативных или мобильных устройств, включающих в себя, но не ограничивающихся смартфонами, специалистам в данной области техники может быть понятно, что, механизм выгрузки может также быть реализован в других немобильных устройствах, как например, персональные компьютеры (PC). Таким образом, вышеописанное вычислительное окружение 100 может быть реализовано в различных вычислительных устройствах, включающих в себя, но не ограниченных следующим: мобильные или портативные устройства, как например, смартфон, планшетный компьютер, переносной цифровой секретарь (PDA), носимые вычислительные устройства, включающие в себя закрепляемые на голове устройства и т.п.; и немобильные устройства, как например, настольные компьютеры и серверы, или некоторые малогабаритные стационарные устройства. В целях иллюстрации и упрощения, оно описывается ниже в контексте электронных устройств,  как например, смартфоны.
[0029] В последующем описании «целостность данных», используемая в данном документе, относится к аспекту поддержания версий данных в присутствии полного отказа системы. В частности, используется целостность в некоторый момент времени, что означает, что данные в постоянном хранилище всегда соответствуют данным в некоторый момент времени в истории записи или в кэше записи, так чтобы любая запись до упомянутого времени достигла хранилища, а любая запись после него нет. «Устаревание данных», используемое в данном документе, означает отдаленность между текущими данными в запоминающем устройстве и постоянными данными в хранилище. Интуитивно, устаревание данных представляет собой то, как далеко необходимо будет вернуться назад для восстановления после полного отказа системы. Другими словами, устаревание данных представляет собой отдаленность между текущими данными запоминающего устройства и постоянными данными в постоянном хранилище. Устаревание данных может быть измерено посредством множества метрик, как например, время или версии. В данном контексте устаревание данных измеряется общим количеством данных, которые еще не были выгружены в постоянное хранилище. «Долговечность данных» является свойством, которое гарантирует, что зафиксированные данные будут существовать на постоянной основе. Долговечность может быть достигнута посредством выгрузки данных в запоминающем устройстве в энергонезависимое или постоянное хранилище. «Транзакция», используемая в данном документе, относится к набору из одного или более отдельных операций.
sync
fsync
fsync
запускается
[0030] Как упомянуто ранее, в традиционных файловых системах используются два способа ограничения устаревания данных и гарантирования целостности при улучшении производительности ввода-вывода. Во-первых, неочищенные биты, или биты, которые еще не были записаны в постоянное запоминающее устройство, записываются из запоминающего устройства в постоянное хранилище после малого фиксированного временного интервала. Журналируемая файловая система является разновидностью дисковой файловой системы, которая отслеживает изменения, которые будут занесены в журнал перед фиксированием их в постоянном хранилище. Для ограничения устаревания данных и поддержания целостности обычная журналируемая файловая система периодически выгружает кэш записи в запоминающем устройстве в постоянное хранилище или осуществляет выгрузку для каждой синхронизации () файлов. В случае полного отказа системы или прекращения энергоснабжения такие файловые системы более быстры в возвращении в оперативный режим и менее вероятно становятся поврежденными. Например, Ext4, используемая в Linux по умолчанию, осуществляет выгрузку каждые 5 секунд, то есть пользователь теряет по большей мере 5 секунд истории после полного отказа системы. Во-вторых, интерфейс синхронизации (обозначенной в качестве «») файлов  обеспечивает способ гарантировать целостность. Операции записи сначала выводятся в отдельный журнал без воздействия на файл главной базы данных в постоянном хранилище, и затем  по данному журналу. И наконец, внесенные в журнал изменения преобразовываются в файл главной базы данных.
fsync,
[0031] Однако, периодическая выгрузка в традиционных файловых системах и синхронизация файлов значительно влияют на реагирования приложений и эффективность использования энергии. Когда вызывается  приложение в устройстве должно ожидать, пока все данные не будут записаны в хранилище. Частые выгрузки, каждая из которых может брать на себя значительное использование CPU, могут задерживать систему и по существу воздействовать на потребление энергии устройством прямо или косвенно.
[0032] Различные аспекты технологии, описанной в данном документе, в целом относятся к файловой системе с адаптивной выгрузкой для электронного устройства. Для достижения эффективности использования энергии или быстрого реагирования могут быть приняты следующие способы: уменьшение количества данных, подлежащих выгрузке в постоянное хранилище; и/или уменьшение времени ожидания приложения на завершение ввода-вывода в хранилище.
блока
[0033] Обнаружено, что операция  записи потребляет больше энергии по сравнению с операцией считывания, в то время как количество данных, подлежащих выгрузке, является главным показателем, определяющим эффективность использования энергии при записи. Если некоторые данные остаются в запоминающем устройстве и перезаписываются более одного раза, то перезаписываемые данные не нужно выгружать, что приводит к экономии энергии. Исследования показывают, что различные приложения имеют весьма различные шаблоны доступа считывания/записи данных. Например, одно приложение может часто осуществлять запись по одному и тому же адресу в запоминающем устройстве, в то время как другое приложение может всегда осуществлять запись по различным адресам в запоминающем устройстве. Такие разные шаблоны доступа считывания/записи данных могут указывать на различные возможности улучшения эффективности использования энергии. Другими словами, блок кэшированных последовательностей запросов на запись, готовых для выгрузки, может быть определен на основе конкретных шаблонов записи приложения. Далее рассмотрены вышеописанные приложения в качестве примеров. Для приложения, которое часто записывает данные по одному и тому же адресу в запоминающем устройстве, связанные с  данным приложением последовательности запросов на запись, возникающие в течение длительного периода, могут быть определены в качестве блока кэшированных последовательностей запросов на запись, готовых для выгрузки. В течение этого длительного периода записанные данные, относящиеся к упомянутым последовательностям запросов на запись, могут храниться в запоминающем устройстве, и данные в месте, часто адресуемом последовательностями запросов на запись, часто перезаписываются. Таким образом, подлежащие выгрузке данные могут быть уменьшены насколько это возможно. Длина такого длительного периода может быть определена посредством шаблона записи данного приложения с изменением во времени. В качестве сравнения, для приложения, которое всегда осуществляет запись по различным адресам в запоминающем устройстве, связанные с данным приложением последовательности запросов на запись, возникающие в течение какого-либо короткого периода, могут быть определены в качестве  кэшированных последовательностей запросов на запись, готовых для выгрузки, по причине небольшого перезаписывания, как это указывается шаблоном записи данного приложения, и наличия малого пространства для уменьшения подлежащих выгрузке данных. В таком случае, возможно уменьшить количество подлежащих выгрузке данных на основе различных характеристик доступа приложений и тем самым достичь эффективности использования энергии. В связи с этим механизм выгрузки обладает адаптируемостью под приложение. Подробности для определения блока кэшированных последовательностей запросов на запись, готовых для выгрузки, на основе конкретных шаблонов записи приложения будут описаны ниже, например, со ссылкой на Фиг.3 и этап 430 на Фиг.4.
[0034] Дополнительно, для гарантирования целостности может быть применено много подходящих механизмов. Например, обработка транзакций может быть применена в кэше записи. Обработка транзакций связывает множество отдельных операций в единую, неделимую транзакцию и гарантирует то, что либо все операции в транзакции завершаются без ошибки, либо ни одно из них. Если некоторые из операций завершены, но возникают ошибки при попытке совершения других, то система обработки транзакций «откатывает назад» все операции транзакции, включающие в себя и успешные операции, тем самым стирая все следы транзакции и восстанавливая систему в целостное, известное состояние, в котором она находилась перед тем, как была начата обработка транзакции. Если все операции транзакции завершены успешно, то транзакция фиксируется системой, и все изменения с файлом данных делаются неизменными; после осуществления этого транзакцию нельзя откатить назад.
[0035] Механизм обработки транзакций может быть объединен с вышеописанным ориентированным на приложение механизмом для обеспечения как целостности данных, так и эффективности использования энергии. В некоторых реализациях разделение операций, как например, кэшированной последовательности запросов на запись на транзакции, может быть ориентировано на приложение, то есть в зависимости от шаблона доступа считывания/записи данных приложения.
[0036] В другом аспекте, хронирование выгрузки может быть выбрано гибким, так чтобы выгрузка не влияла на потребление энергии устройства и реагирование приложения. В целом, время, когда устройство находится в бездействии, является подходящим для осуществления выгрузки, которая оказывает меньшее влияние на реагирование приложения.
[0037] Крупномасштабное и долговременное кэширование в запоминающем устройстве (RAM) с произвольным доступом устройства может быть использовано для уменьшения количества данных, которые должны быть выгружены  в постоянное хранилище, и уменьшения времени ожидания приложения на завершение ввода-вывода в хранилище. В некоторых случаях выполнение записи и эффективность использования энергии могут быть предпочтены вместо долговечности данных и устаревания данных по следующим причинам. Во-первых, запоминающее устройство (RAM) с произвольным доступом с современной емкостью значительно увеличилось. Например, 2 Гбайт сегодня являются стандартными. Во-вторых, современные смартфоны имеют батарейные источники питания. Данный вид RAM (BBRAM) с резервным питанием от батареи считается надежным в обычном выполнении персонального компьютера или сервера. В-третьих, большинство данных приложения восстановимо даже после потери. Если, например, электронная почта потеряна, то она может легко быть повторно загружена с сервера; и то же самое верно в отношении других популярных приложений, как например, приложения для социальной сети, цифровые карты и т.д. Поэтому, даже в самом худшем случае потери в запоминающем устройстве, данные могут легко быть повторно загружены с удаленного сервера. Таким образом, может быть оправдано и полезно пожертвовать долговечностью данных ради производительности, то есть немного подвергнуться большему устареванию данных при условии того, что может быть существенной результирующая возможность улучшения эффективности использования энергии и реагирования.
[0038] В целом, по сравнению с традиционными файловыми системами, файловая система согласно некоторым аспектам данного раскрытия осуществляет выгрузки через постоянные малые интервалы или синхронизации файлов, хранит данные в запоминающем устройстве намного дольше, и ее политика для выгрузки кэша записи в запоминающем устройстве в хранилище является ориентированной на приложение и адаптивной. Политика по меньшей мере частично основана на одном или более из следующего: характеристике доступа приложения, состоянии взаимодействия пользователя с электронным устройством и состоянии электронного устройства. В частности, то, какие части кэшированных данных готовы для выгрузки, то есть блок кэшированной последовательности запросов на запись, которая готова для выгрузки, может быть определено согласно характеристике доступа приложения. Кроме того, хронирование выгрузки, которое указывает то, когда выполняется выгрузка, может быть выбрано гибко, по меньшей мере частично на основе взаимодействий пользовательского ввода с приложением электронного устройства или с электронным устройством. Дополнительно, может использоваться механизм многоприоритетного планирования для планирования блоков данных, которые готовы к выгрузке, который гарантирует равнодоступность среди приложений и дополнительно улучшает выполнение выгрузки.
[0039] На Фиг.2 показана принципиальная блок-схема, изображающая примерные компоненты для реализации выгрузки в файловой системе. Механизм выгрузки, раскрытый в данном документе, может быть включен в любую подходящую файловую систему независимо от того, известна ли она в настоящее время или будет разработана в будущем, для дополнения файловой системы. Несмотря на то, что некоторые варианты осуществления будут описаны совместно с некоторым определенным компонентом далее, это сделано только в иллюстративных целях без накладывания каких-либо ограничений на объем объекта изобретения, описанного в данном документе.
[0040] На Фиг.2 пять главных компонентов, задействованных в выгрузке в файловой системе, могут содержать диспетчера 202 буфера, буфер 203, выгрузчика 204, обработчика 205 политик и хранилище 206 файловой системы.
[0041] Диспетчер 202 буфера может быть выполнен с возможностью управления буферизацией данных. Диспетчер 202 буфера может использоваться для реализации ориентированного на приложение механизма, раскрытого в данном документе. Диспетчер 202 буфера управляет и хранит данные в буфере 203 намного дольше для достижения возможности улучшения использования энергии. С этой целью, диспетчер 202 буфера может быть выполнен с возможностью организации буферизованных данных по разделам, которые готовы для выгрузки, в соответствии с политикой 212 транзакций как предусмотрено обработчиком 205 политик. Для достижения этой цели диспетчером 202 буфера может использоваться множество подходящих способов. В некоторых аспектах диспетчер 202 буфера может содержать компонент 216 журнала и компонент 218 обратного отображения.
[0042] Компонент 216 журнала может быть выполнен с возможностью ведения журнала, также называемого журналом записей или журналом с упреждающей записью. В основном виде журнал является хронологической записью всех запросов 201 на запись от приложения для ведения истории записи приложения. Для простоты, в последующем описании, компонент 216 журнала может называться «журналом» для краткости. Журнал 216 является специальной областью, выделенной файловой системой, для предварительной записи изменений, которые она произведет. После полного отказа восстановление всего лишь задействует считывание журнала 216 из файловой системы и воспроизведение изменений из этого журнала 216, пока файловая система снова не станет целостной.
[0043] Журнал 216 может быть реализован множеством подходящих способов. Некоторые файловые системы допускают наращивание, сокращение и повторное выделение журнала так же как обычного файла, в то время как другие помещают журнал в прилегающую область или скрытый файл, для которых гарантируется не перемещение или не изменение размера пока файловая система установлена. Некоторые файловые системы могут также допускают внешние журналы на отдельном устройстве, как например, твердотельный диск или энергонезависимое RAM с резервным питанием от батареи. Изменения в журнале могут самостоятельно журналироваться для дополнительной избыточности, или журнал может быть распределен по множеству физических томов для защиты от отказа устройства. Раскрытие в данном документе не имеет каких-либо ограничений в этом отношении.
[0044] Регистрационные записи в журнале 216 соответствуют соответственным запросам 201 на запись и ссылаются на соответственные адреса в буфере 203, связанные с этими запросами 201 на запись. Как упомянуто ранее, готов ли блок кэшированной последовательности запросов на запись для выгрузки, может быть определено специально для приложения, то есть ориентировано на приложение. В одной реализации регистрационные записи в журнале 216 могут быть организованы для подготовки блоков кэшированной последовательности запросов на запись, которые готовы для выгрузки, в соответствии с  политикой 212 транзакций как предусмотрено обработчиком 205 политик. Например, журнал 216 может быть разделен на активный или открытый раздел и закрытый раздел, что задает объем выгрузки. В активном разделе может вставляться новая регистрационная запись и допустимо некоторое средство улучшения производительности, как например, перезапись и переупорядочение. В данном примере регистрационные записи в активном разделе могут не подготавливаться для выгрузки. В закрытом разделе не допускается добавление новых регистрационных записей и запрещено средство улучшения производительности, как например, перезапись и переупорядочение. Другими словами, закрытые разделы используются для хранения различных версий кэшированных данных. Все регистрационные записи в закрытом разделе журнала 216 готовы для выгрузки, ожидая планирования для выгрузки в хранилище. В одном варианте осуществления хранилище включает в себя постоянное хранилище, как например, хранилище 206 файловой системы. В некоторых вариантах осуществления определение того, какие части кэшированных данных готовы для выгрузки, то есть закрытие раздела, может следовать политике 212 транзакций, которая по меньшей мере частично основана на характеристиках доступа приложения, в частности, на основе шаблона доступа считывания/записи данных приложения, тем самым улучшая производительность записи и эффективность использования энергии. Подробности политики 212 для транзакций будут разработаны ниже.
[0045] Дополнительно, для гарантирования целостности может быть применено много подходящих механизмов. Например, обработка транзакций может быть применена в кэше записи. Механизм обработки транзакций может быть объединен с вышеописанным ориентированным на приложение механизмом для обеспечения как целостности данных, так и эффективности использования энергии. В таких вариантах осуществления деление операций,  как например, кэшированной последовательности запросов на запись на транзакции, может быть ориентировано на приложение, то есть зависеть от шаблона доступа считывания/записи данных приложения. Таким образом, разделы в журнале 216 можно также называть транзакциями.
[0046] Как может быть понятно, может существовать несколько закрытых разделов или транзакций, ожидающих выгрузки. Другими словами, журнал 216 может иметь различные версии кэшированной страницы. В целях иллюстрации и упрощения версионированная транзакция (VCT) кэша может использоваться для захвата данной информации. Обычно, VCT проходит через три состояния за время своего существования: когда она открыта или активна, она охватывает записи в активном разделе и может постоянно включать в себя недавно добавленные записи; когда она закрыта, ее конечное положение делается низменным, и все ее записи помещаются в закрытый раздел; и когда она фиксируется, выгрузчик 204 берет ее и записывает все ее записи в постоянное хранилище атомарно. Впоследствии, транзакция и ее записи удаляются файловой системой. Некоторые средства улучшения производительности, как например, перезапись и переупорядочение, допускаются только в рамках единой транзакции. Поскольку выгрузчик 204 будет гарантировать долговечность и атомарность зафиксированной транзакции, эти улучшения не оставят какого-либо несовместимого состояния.
[0047] Журнал 216 может быть воплощен в качестве множества подходящих форм, включающих в себя, но не ограниченных следующим: кольцевой массив, список или некоторые другие формы. В некоторых вариантах осуществления каждое приложение может иметь свой собственный журнал и таким образом журнал для приложения может иметь единый активный раздел. Когда журнал 216 воплощен в качестве кольцевого массива, то новые регистрационные записи могут быть добавлены в единый активный раздел в конце журнала. В некоторых реализациях концевая часть кольцевого массива может быть защищена циклической блокировкой (спин-блокировкой) для уменьшения времени обработки новых записей. Кроме того, начальная часть кольцевого массива может быть защищена взаимным исключением, которое только отсрочивает запросы на запись при наращивании концевой части для достижения начальной части. Взаимное исключение является флагом, который гарантирует то, что в любое время только один поток может осуществить доступ к объекту (в данном примере, к начальной части кольцевого массива), что соответствует взаимному исключению.
kobject
/sys
kobject
[0048] Журнал 216 может также внедрять некоторые другие структуры данных для обеспечения дополнительных улучшений. В качестве примера, может быть внедрена структура (основные компоновочные блоки иерархии файловой системы), чтобы файловая система могла экспортировать интерфейсы пользовательского пространства в качестве файла под каталогом . Посредством такой структуры могут быть достигнуты по меньшей мере два преимущества. Во-первых, пользователи могут легко проверить и установить основные свойства каждого журнала. Во-вторых, она поддерживает параллельные записи посредством различия выгрузки и добавления, потому что две блокировки должны быть использованы для защиты начальной и концевой частей журнала 216.
[0049] Компонент 218 обратного отображения может быть выполнен с возможностью поддержания обратного отображения от блока кэша, на который осуществлена ссылка, буфера 203 к регистрационной записи внутри журнала 216. Обратное отображение может использоваться для двух целей. Во-первых, при удалении данных в блоке кэша из буфера 203 это обратное отображение может использоваться для определения местоположения соответствующей записи и пометки ее в качестве недействительной. Во-вторых, при поступлении новой записи оно может использоваться для проверки того, ссылается ли на целевой блок кэша какая-либо запись, и если это так, то определения того, какая запись ссылается на него. Данная информация может использоваться диспетчером 202 буфера для организации буферизованных данных. Примерная обработка будет описана ниже.
_count
страницы
page
struct page
[0050] Компонент 218 обратного отображения может быть реализован множеством подходящих форм. Один подход для его реализации включает в себя персонализированную хэш-таблицу, которая использует блокировку считывания-записи для каждого участка памяти вместо блокировки на системном уровне. Страницы, связанные с записями, имеют свое собственное поле , увеличиваемое так, чтобы страничный кэш не вытеснял их. Это также означает, что файловая система должна высвобождать страницы прежде, чем иссякнет пространство запоминающего устройства, для исключения проблем из-за нехватки запоминающего устройства. Другой подход реализации обратного отображения состоит в добавлении ссылочного указателя на структуру  (). Так как структурная страница() уже заполнена многими полями (например, 24+ флагов находится в 32-битной переменной), данный подход требует увеличения размера переменной.
[0051] Буфер 203 является главной формой хранения данных файла в запоминающем устройстве и обслуживания пользовательских запросов. Буфер 203 используются для размещения в себе части данных файла в энергозависимом запоминающем устройстве для улучшения производительности ввода-вывода. Буфер 203 может быть реализован посредством энергозависимого запоминающего устройства любого вида, включающего в себя, но не ограниченного следующим: динамическое RAM (DRAM) и статическое RAM (SRAM). В некоторых вариантах осуществления кэш может использоваться для буферизации подлежащих записи данных. Обычно, операционная система (ОС) главным образом управляет запоминающим устройством постранично, например, в системах Linux. В целях иллюстрации и упрощения термин «страничный кэш» будет использован в дальнейшем для обозначения буфера 203, и страница кэша относится к управляемому блоку в кэше. Однако специалистам в данной области техники может быть понятно, что управление запоминающим устройством может осуществляться посредством любых других подходящих блоков отличных от страниц, и раскрытие в данном документе не имеет никакого ограничения в отношении этого. Страничный кэш 203 может быть любыми существующими страничными кэшами, совместно используемыми с ОС и/или другими установленными файловыми системами, или страничным кэшем, специально выделенным для механизма выгрузки, раскрытого в данном документе.
[0052] Если страница кэша была записана или изменена, то она будет помечена в качестве неочищенной, что указывает, что страница кэша была изменена и еще не была сохранена в хранилище. Страничный кэш большой емкости имеет преимущество в поддержании долговременного кэширования в запоминающем устройстве, тем самым обеспечивая возможности для улучшения эффективности использования энергии и реагирования приложения.
[0053] Выгрузчик 204 является механизмом связи, который управляет потоком данных между энергозависимым запоминающим устройством и энергонезависимым хранилищем. Выгрузчик 204 может иметь две обязанности. Во-первых, он запускает лежащий в основе компонент хранения, который управляет постоянным сохранением данных в хранилище. Во-вторых, когда файловая система загружена, выгрузчик 204 проверяет целевой раздел и делает попытку восстановления любой нецелостности данных.
бездействии
[0054] Когда некоторые страницы кэша в страничном кэше 203 являются неочищенными, то выгрузчик 204 отвечает за обратную запись данных страницы в постоянное хранилище, как например, хранилище 206 файловой системы. В некоторых вариантах осуществления выгрузчик 204 осуществляет выгрузку согласно политике 214 выгрузки как предусмотрено обработчиком 205 политик. В частности, руководящийся политикой 214 выгрузки выгрузчик 204 выполняет выгрузку с некоторым подходящим хронированием выгрузки, например, когда электронное устройство находится в . Дополнительно, под управлением политики 214 для выгрузки, выгрузчик 204 планирует кэшированные данные в страничном кэше 203, которые готовы для выгрузки со ссылкой на журнал 216.
[0055] Выгрузчик 204 может быть основан на любом подходящем компоненте хранения для выгрузки какой-либо транзакции атомарно. Различные форматы данных флэш-памяти могут быть использованы с выгрузчиком 204, и настоящее раскрытие не имеет никакого ограничения в отношении этого. Например, компонент управления хранилищем многих файловых систем, как например, Ext4 и Btrfs, может быть легко принят для поддержки выгрузчика 204.
[0056] Обработчик 205 политик используется для обеспечения различных политик для выгрузки. Обработчик 205 политик может быть расширяемой платформой, таким образом, могут использоваться различные альтернативные или дополнительные политики. В некоторых реализациях обработчик 205 политик обеспечивает политику 212 транзакций для диспетчера 202 буфера с целью организации буферизованных данных по разделам, которые готовы для выгрузки, то есть определения того, какие части кэшированных данных могут быть готовы для выгрузки. Другими словами, политика 212 транзакций определяет то, когда закрыть активный раздел или транзакцию. Политика 212 транзакций может быть специализированной для приложения, которая основана на шаблоне доступа считывания/записи данных приложения.
r
r=o/s
s
o
[0057] Различные приложения имеют весьма различные шаблоны доступа считывания/записи данных. Например, одно приложение может часто осуществлять запись по одному и тому же адресу или в одну и ту же страницу кэша в запоминающем устройстве, в то время как другое приложение может всегда осуществлять запись по различным адресам или в различные страницы кэша в запоминающем устройстве. Такие различные шаблоны доступа считывания/записи данных могут указывать различные возможности улучшения эффективности использования энергии. Для того чтобы фиксировать в какой степени перезаписываемые данные могут улучшить эффективность использования энергии, множество метрик может использоваться для представления возможностей улучшения эффективности использования энергии. В качестве примера, метрика отношения возможности улучшения использования энергии используется для представления возможности улучшения эффективности использования энергии от перезаписи, которое задается как , где  представляет собой устаревание данных, которое указывает количество неочищенных данных в страничном кэше, а  представляет собой накопленное общее количество данных, которые были перезаписаны с последней выгрузки.
s
r
[0058] На Фиг.3 показаны кривые возможностей улучшения использования энергии нескольких приложений, изображающих то, как отношение возможности улучшения использования энергии изменяется с увеличением устаревания данных. На Фиг.3 на оси X представлено устаревание данных, и его диапазон унифицирован среди приложений для изображения всех кривых на одном графике. Значения диапазона обозначены рядом с названиями приложений только для понимания масштаба данных. На оси Y представлено отношение возможности улучшения использования энергии. На Фиг.3 изображены четыре кривые, среди которых Кривая 301 представляет собой игровое приложение, Кривая 302 представляет собой приложение цифровых карт, Кривая 303 представляет собой приложение браузера, а Кривая 304 представляет собой приложение для социальной сети.
[0059] Как видно на Фиг.3, различные приложения имеют весьма различные формы кривых, указывающие на значительные отличия в их возможностях улучшения использования энергии. Например, некоторые кривые (например, Кривая 301, 303) являются довольно ровными, в то время как другие (например, Кривая 302, 304) монотонно увеличиваются или имеют слабый пик. Такое разнообразие подразумевает различные возможности улучшения использования энергии для этих приложений. Например, для приложения с пиком на кривой (например, Кривая 301), одна примерная подходящая возможность для закрытия активного раздела или транзакции находится в пике, потому что впоследствии возможность улучшения эффективности использования энергии снижается. Для приложения с нарастающей кривой (например, Кривая 302, 304), точка, в которой нарастающая направленность становится умеренной, представляет собой хорошую возможностью для закрытия, потому что за этой точкой, возможность улучшения эффективности использования энергии увеличивается всего лишь немного, в то время как устаревшие данные продолжают занимать все больше пространства в страничном кэше. Для приложения с ровной кривой (например, Кривая 303), возможность довольно гибкая.
[0060] Таким образом, политика 212 транзакций может быть ориентирована на приложение и быть основана на шаблоне доступа считывания/записи данных приложения. В некоторых реализациях политика 212 транзакций использует, например, вышеописанные кривые возможности улучшения использования энергии для оценки степени возможного улучшения от перезаписи в будущем при условии наличия текущего количества невыгруженных данных в страничном кэше 203. Другими словами, характерная особенность политики 212 транзакций заключается в определении местоположения пика кривой улучшения использования энергии, насколько это возможно.
[0061] Кроме того, изоляция путей данных приложений в электронных устройствах разрешает достижение ориентированной на приложение политики 212 для транзакций. В отличие от персональных компьютеров (PC) или серверов, пользователи мобильного устройства редко выбирают место для установки приложения или непосредственно перемещают файлы между каталогами на устройстве, что исключает проблемы целостности путей перекрестных приложений. Пути данных приложений на таких мобильных устройствах имеют условные обозначения, которые разрешают файловой системе отличать приложения через пути и автоматически улучшать политики для различных приложений. В некоторых вариантах осуществления все пути данных, затрагиваемые отдельным приложением, могут быть установлены в качестве основного элемента адаптивности под приложение.
[0062] Обработчик 205 политик также обеспечивает политику 214 выгрузки для выгрузчика 204 с целью определения подходящего хронирования выгрузки и планирования кэшированных данных, которые готовы для выгрузки. Другими словами, политика 214 выгрузки принимает решение о том, когда и какие разделы или транзакции выгрузить.
бездействия
бездействия
бездействие
бездействии
[0063] Политика 214 для выгрузки может содержать политику хронирования, которая принимает решение о том, когда осуществлять выгрузку. Существует множество условий, которые могут запустить выгрузку. В некоторых аспектах политика хронирования может определить хронирование выгрузки по меньшей мере частично на основе взаимодействий пользовательского ввода с приложением устройства или с устройством. В других аспектах политика хронирования выгрузки может быть основана на том, когда устройство находится в состоянии . Устройство может иметь несколько различных состояний:  ожидания, и занятости. «Ожидание» относится к тому, когда экран устройства выключен, и устройство входит в состояние приостановки; «» означает то, что экран включен, и устройство активно, но без пользовательских операций или с меньшим количеством пользовательских операций, например, меньшим по сравнению с предварительно определенной пороговой величиной; а «занятость» означает, что экран включен, и устройство активно, с частыми пользовательскими операциями, например, больше предварительно определенной пороговой величины. Например, когда пользователь читает или размышляет над содержимым экрана в течение взаимодействия, такие интервалы могут представлять собой полезные моменты времени для выгрузки. Такие интервалы могут быть предсказаны множеством подходящих способов. Например, в одной реализации, когда степень активности взаимодействий пользовательского ввода с приложением устройства или с устройством ниже предварительно определенной пороговой величины, то может быть решено, что устройство находится в , и что данное время полезно для выгрузки. Примерная реализация политики хронирования будет описана ниже.
[0064] Специалисты в данной области техники могут понять, что существуют некоторые другие условия, которые запускают выгрузку независимо от того, является ли время подходящим, например, когда страничный кэш становится слишком большим, и использование запоминающего устройства слишком велико. При необходимости, когда устройство находится в ожидании, выгрузка может также быть выполнена вследствие меньшего или отсутствия воздействия на реагирования приложений. Эти условия могут быть объединены с основанным на пользовательском взаимодействии состоянием, как описано выше.
[0065] Политика 214 для выгрузки может дополнительно содержать политику планирования, которая принимает решение о том, какие разделы или транзакции выгрузить среди тех кэшированных данных, которые приготовлены или являются готовыми для выгрузки.
бездействия
[0066] Обычно, внутри приложения может быть предпочтительно выгружать транзакции по порядку. Так, в одной реализации общий подход для политики планирования заключается в выгрузке настолько многих транзакций насколько возможно в течение заданного интервала . Для реализации политики планирования могут быть использованы различные подходящие механизмы планирования. При рассмотрении рассматриваемых транзакций от множества приложений может быть использован механизм многоприоритетного планирования для гарантирования равнодоступности среди приложений и дополнительных улучшений производительности выгрузки. Примерная реализация политики планирования будет описана далее.
[0067] Хранилище 206 файловой системы используется для хранения данных файлов постоянно. Хранилище 206 может быть реализовано посредством энергонезависимого запоминающего устройства любого вида, включающего в себя, но не ограниченного следующим: различные постоянные запоминающие устройства (ROM), как например, программируемое ROM (PROM), электрически перепрограммируемое ROM (EAROM), стираемое программируемое ROM (EPROM) и электрически стираемое программируемое ROM (EEPROM), флэш-память, диск, и т.п. Как упомянуто выше, так как выгрузчик 204 не объединен с отдельно взятым форматом данных хранилища, то хранилище 206 файловой системы может быть любым постоянным хранилищем с любым форматом данных.
[0068] В некоторых вариантах осуществления каждое приложение может иметь свой собственный журнал или журнал 216 записи, в то время как компонент 218 для обратного отображения, обработчик 205 политик и выгрузчик 204 могут быть совместно используемы среди различных экземплярами множества приложений в файловой системе.
[0069] Таким образом, выше были описаны примерные компоненты для реализации механизма выгрузки, раскрытого в данном документе. Специалист в данной области техники может понять, что вышеупомянутое описание приведено всего лишь с целью иллюстрации без наложения каких-либо ограничений на объем объекта изобретения, описанного в данном документе, при этом также возможны дополнительные или альтернативные компоненты.
[0070] На Фиг.4 показана блок-схема последовательности операций способа выгрузки данных в файловой системе для электронного устройства в соответствии с вариантами осуществления объекта изобретения, описанного в данном документе. Следует понимать, что этапы не обязательно выполнять в порядке, изображенном на Фиг.4. Вместо этого эти этапы могут выполняться в любых других подходящих порядках или параллельно.
[0071] Способ 400 начинается на этапе 410, на котором осуществляется прием запросов (например, запросов 201 на запись на Фиг.2)на запись. Каждый из запросов на запись может быть связан с некоторым приложением устройства. Запрос на запись может включать в себя информацию, требуемую данной операцией, как например, целевую страницу, в которую следует осуществить запись, подлежащие записи данные, связанные с запросом на запись, размер подлежащих записи данных и т.п.
[0072] Затем на этапе 420 подлежащие записи данные могут быть буферизованы в энергозависимом запоминающем устройстве, как например, страничный кэш 203, как показано на Фиг.2. Поощряется более долгое пребывание данных в страничном кэше для достижения возможностей эффективности использования энергии. Страницы, которые были изменены в страничном кэше 203 для записи в хранилище, помечаются как «неочищенные». Журнал, как например, журнал 216, как показано на Фиг.2, может использоваться для записи истории записи приложения. На Фиг.5 показана блок-схема последовательности операций, изображающей то, как буферизовать данные в запоминающем устройстве при поступлении записи, что будет описано позже.
[0073] На этапе 430, кэшированные или буферизованные данные организуются в блоки, которые готовы для выгрузки. Организация кэшированных данных выполняется диспетчером 202 буфера под управлением политики 212 транзакций, обеспеченной обработчиком 205 политик, как показано на Фиг.2.
r
r
[0074] Как описано ранее, политика 212 для транзакций используется для определения того, какие части кэшированных данных могут быть готовы для выгрузки. Политика 212 транзакций по меньшей мере частично основана на шаблоне доступа считывания/записи данных приложения. В некоторых вариантах осуществления кривая отношения улучшения использования энергии (как показано на Фиг.3) используется для указания различных возможностей улучшения эффективности использования энергии приложения. Интуитивно, наилучшая точка для закрытия транзакции является точкой с наибольшим . Таким образом, задача политики 212 транзакций состоит в нахождении подходящего запроса на запись, который подходит к оптимальной точке улучшения использования энергии насколько возможно, для завершения или закрытия текущего активного раздела или транзакции. Каждый новый запрос на запись может представлять точку на кривой отношения улучшения использования энергии. Различные подходящие способы, как например, различные способы аппроксимации кривой, линейная аппроксимация или нелинейная аппроксимация более высокого порядка, могут быть применены для нахождения или оценки такого подходящего запроса на запись или точки для закрытия активной транзакции.
k
[0075] В некоторых вариантах осуществления способ в режиме реального времени может использоваться для оценки того, следует ли расценивать поступающий запрос на запись или точку в качестве подходящего запроса на запись для закрытия текущей активной транзакции. Так как будущие запросы на запись неизвестны, и колебания в кривых могут привести к выбору локально оптимальной точки, то в одной реализации используется линейная аппроксимация внутри скользящего окна для уменьшения колебаний. Например, способ линейной аппроксимации может помнить  самых последних точек, подбирать линию и оценивать пик через градиент линии.
k
k
k
g
g
[0076] Поскольку способ оценки подходящего запроса на запись запускается при каждой записи, то его вычислительная сложность должна быть проста с целью уменьшения издержек CPU и последующего расхода электроэнергии. Некоторая корректировка может быть внесена в способ линейной аппроксимации. Например, следующая пошаговая версия может быть получена из обычной формулы линейной аппроксимации. Они пошагово обновляются для каждой новой точки, и вычисление требует всего лишь несколько основных арифметических операций. Могут использоваться два показателя для управления эффективностью этого способа аппроксимации. Первый является длиной истории . Более малый  сделает способ аппроксимации более чувствительным к колебаниям, в то время как больший  приведет к большой задержке обнаружения. Для ограничения задержки может быть настроен второй показатель . Способ аппроксимации ожидает, пока градиент не станет ниже , который не обязательно должен быть нулевым.
[0077] На этапе 440 выгрузчик 204 может выгрузить данные в запоминающем устройстве, например, страничном кэше 203, которые готовы для выгрузки, в постоянное хранилище, например, хранилище 206 файловой системы, согласно политике 214 выгрузки, обеспеченной обработчиком 205 политик, как показано на Фиг.2.
[0078] Политика 214 выгрузки направляет выгрузчик 204 для определения подходящего хронирования выгрузки и планирования кэшированных данных, которые готовы для выгрузки. Более подробные операции по поводу этапа 440 будут описаны ниже со ссылкой на Фиг.6.
[0079] На Фиг.5 показана примерная блок-схема последовательности операций, изображающая то, как буферизовать данные в запоминающем устройстве при поступлении записи. В примере, изображенном на Фиг.5, обработка транзакций используется для гарантирования целостности. Специалисту в данной области техники может быть понятно, что много подходящих способов может быть использовано для буферизации данных , а данный приведен только в иллюстративных целях без накладывания каких-либо ограничений на объем объекта изобретения, описанного в данном документе. Кроме того, следует понимать, что этапы не обязательно выполнять в порядке, изображенном на Фиг.5. Вместо этого эти этапы могут быть выполнены в любых других подходящих порядках или параллельно.
[0080] Способ 500 начинается на этапе 510, на котором принимается запрос на запись. Запрос на запись может быть связан с некоторым приложением устройства. Запрос на запись может включать в себя информацию, требуемую данной операцией, как например, целевая страница, в которую следует осуществить запись, подлежащие записи данные, связанные с запросом на запись, размер подлежащих записи данных и т.п.
[0081] В одном варианте осуществления на этапе 520 осуществляется проверка того, например, на основе обратного отображение от неочищенной страницы в страничном кэше 203 к регистрационной записи в журнале 216, ссылается ли некоторая регистрационная запись внутри журнала 216, связанная с приложением, на целевую страницу, связанную с  принятым запросом на запись.
[0082] Если на целевую страницу не ссылается никакая регистрационная запись в журнале 216, что означает, что приложение осуществляет запись в новую страницу из журнала 216, то на этапе 560 новая регистрационная запись может быть добавлена к текущему активному разделу или транзакции в журнале 216. Тем временем, новое обратное отображение может быть сгенерировано для связи с этой новой регистрационной записью.
[0083] Если на целевую страницу ссылается некоторая регистрационная запись в журнале 216, что означает, что приложение осуществляет запись в неочищенную страницу, то способ 500 может перейти к этапу 530.
[0084] В одном варианте осуществления, на этапе 530 осуществляется проверка того, находится ли регистрационная запись в активной или открытой транзакции. В ответ на то, что регистрационная запись находится в активной транзакции, что означает хорошую возможность для перезаписи и целевая страница не защищена никакой закрытой транзакцией, то на этапе 540 целевая страница кэша может быть непосредственно перезаписана или изменена. В данном случае нет необходимости в добавлении новой регистрационной записи.
[0085] В ответ на то, что регистрационная запись находится в закрытой транзакции, что означает, что приложение осуществляет запись в неочищенную страницу, которая закреплена внутри некоторой транзакции и защищена от перезаписи, то в одном варианте осуществления на этапе 550, файловая система осуществляет копирование при записи (COW) на целевой странице. В частности, данная целевая страница дублируется прежде, чем в нее будет осуществлена запись, и регистрационная запись изменяется для связи с исходной копией. Затем продублированная целевая страница может быть изменена в соответствии с запросом на запись, и новая регистрационная запись добавляется к текущей активной транзакции в журнале 216. При этом, может быть сгенерировано новое обратное отображение для связи измененной копии целевой страницы с этой новой регистрационной записью.
[0086] На Фиг.6 показана примерная блок-схема последовательности операций, изображающая то, как выгрузчик, например, выгрузчик 204 на Фиг.2, может функционировать в соответствии с политикой 214 выгрузки, как это раскрыто в данном документе. В целом, политика 214 выгрузки содержит политику хронирования, которая предсказывает временной интервал, внутри которого ожидается, что пользователь устройства не будет активно задействовать устройство, с целью нахождения благоприятных для реагирования моментов времени для выгрузки. Политика 214 выгрузки может дополнительно содержать политику планирования, которая принимает решение о том, какие транзакции среди транзакций, готовых для выгрузки, выгрузить, особенно когда множество журналов, связанных с множеством приложений, имеют одну или более закрытых транзакций, готовых для выгрузки.
[0087] Способ 600 начинается на этапе 610, на котором осуществляется наблюдение за взаимодействиями пользователя с приложением устройства или с устройством. Взаимодействие пользовательского ввода может быть любым видом пользовательской операции, в зависимости от устройства. Например, для устройства с сенсорным экраном взаимодействие пользовательского ввода может принимать все формы жестов прикосновения к экрану, включающих в себя, но не ограниченных следующим: касание, двойное касание, проведение в некотором направлении, поворот, сведение двух пальцев, разведение двух пальцев, пролистывание, касание многими пальцами или прокрутка и т.д. В некоторых вариантах осуществления используется фильтр для объединения некоторых событий в одну логическую операцию, потому что некоторые логические пользовательские операций следуют из множества событий на экране с малыми интервалами, например, меньше предварительно определенной пороговой величины, как например, жесты кисти по проведению.
k
[0088] Наблюдение за взаимодействиями пользовательского ввода может задействоваться, когда возникает пользовательская операция и как часто пользовательская операция возникает, и т.п. На основе этого наблюдения могут использоваться различные модели взаимодействия для предсказания интервала для выгрузки, включающие в себя, но не ограниченные следующим: простые решения для воображаемого человека, как например, модель последнего минимума (LMM, которая выбирает минимум), или модель последнего среднего (LAM, выбирающая среднее значение) из числа последних  измеренных интервалов.
[0089] На Фиг.7 показана простая модель конечного автомата для предсказания интервала, подходящего для выгрузки. Специалисту в данной области техники может быть понятно что, данная модель конечного автомата на Фиг.7 является всего лишь примером с целью иллюстрации без накладывания каких-либо ограничений на объем объекта изобретения, описанного в данном документе. Для предсказания интервала для выгрузки может быть разработано много других подходящих конечных автоматов.
[0090] Можно распознать, что, пользователи современных мобильных устройств, как например, смартфоны, обычно переключаются назад и вперед между короткими и длинными интервалами. Например, при чтении новостных источников в приложении для социальной сети, пользователь может быстро пролистать некоторые публикации прежде, чем подольше остановиться на интересной публикации для ее прочтения. Модель автомата с конечным числом состояний основана на вышеупомянутом распознавании.
A[l … k]
p
t
l
h
А
[l … k
]
t
А
[l … k
]
t
h
h
h
l
l
l
[0091] Как показано на Фиг.7, существует два центральных состояния: состояние 701 с высокой интенсивностью взаимодействия, когда пользователь действует с короткими интервалами, и состояние 702 с низкой интенсивностью взаимодействия, когда пользователь действует с длинными интервалами. Каждое из двух состояний поддерживает отдельную последнюю историю интервалов  и использует среднее значение  для предсказания следующего интервала. Каждый из них также обладает таймером , который запускает время простоя, когда он достигает определенного значения и обнуляется при каждом изменении состояния. Эти поля снабжены подстрочным индексом  или  для этих двух состояний соответственно. Например, как показано на Фиг.7, состояние 701 с высокой интенсивностью взаимодействия поддерживает историю интервалов  и таймер ; а состояние 702 с низкой интенсивностью взаимодействия поддерживает историю интервалов  и таймер . Два дополнительных промежуточных состояния, состояние 703 с более высокой интенсивностью взаимодействия и состояние 704 с более низкой интенсивностью взаимодействия, используются для содействия увеличению или уменьшению предсказаний интервалов.
τ
p
τ
τ
l
[0092] В модели конечного автомата, как показано на Фиг.7, края или стрелки показывают переходы из одного состояния в другое. Каждая стрелка помечена вводом, который запускает тот переход и действие, которое необходимо осуществить. Как видно из диаграммы состояний, изображенной на Фиг.7, конечный автомат работает следующим образом: при нахождении в состоянии 701 («h»-состояние для краткости) с высокой интенсивностью взаимодействия, он будет повторяться, если поступающее событие является пользовательской операцией, как указано круговой стрелкой 711. Однако, если пользовательская операция не поступает перед событием  времени простоя, то машина предполагает, что пользователь может начать длинный интервал, и таким образом она изменяется в состояние 702 («l»-состояние для краткости) с низкой интенсивностью взаимодействия. Этот переход указан стрелкой 712. В «l»-состоянии 702, если предсказанное время  успешно проходит без взаимодействия пользователя, то конечный автомат входит в состояние 704 с более низкой интенсивностью взаимодействия, которое ожидает пользовательскую операцию, тем самым увеличивая предсказание длинного интервала. Данный переход указан стрелкой 713. Если пользовательская операция поступает перед предсказанным временем, но позже чем , то считается, что пользователь все еще действует с длинным интервалом, но предсказание длинного интервала должно быть уменьшено, таким образом, осуществляется переход в состояние 703 с более высокой интенсивностью взаимодействия. Данный переход указан стрелкой 714. В противном случае, пользовательская операция поступает так быстро (до ), что считается, что пользователь переключается на короткие интервалы, затем состояние непосредственно устанавливается в состояние 701 с высокой интенсивностью взаимодействия. Данный переход указан стрелкой 715. Другие операции могут быть понятными из диаграммы состояний, как показано на Фиг.7, и, таким образом, их подробное описание здесь опускается.
p
[0093] Из диаграммы состояний можно заметить, что существует две возможности выполнить выгрузку, которые указаны стрелкой 712 и стрелкой 716 соответственно. Длина интервала для выгрузки предсказывается посредством среднего значения .
бездействия
бездействии
[0094] Теперь описание будет возвращено к Фиг.6. На этапе 620 осуществляется определение, выполнять ли или нет выгрузку, по меньшей мере частично на основе наблюдения на этапе 610 и принятой модели (например, модель конечного автомата, как показано на Фиг.7) предсказания интервалов. Другими словами, осуществляется определение того, находится ли устройство в состоянии , то есть, экран включен и устройство активно, но без пользовательских операций или с меньшим количеством пользовательских операций, например, ниже предварительно определенной пороговой величины. Если устройство находится в , то это подразумевает хорошее время для выгрузки, и затем способ 600 переходит на этап 630, на котором принимается решение о выполнении выгрузки. В противном случае, способ 600 может вернуться на этап 610 для наблюдения за взаимодействиями пользовательского ввода.
[0095] Как упомянуто ранее, существуют некоторые другие условия, которые могут запустить выгрузку. Например, могут быть приняты во внимание некоторые другие условия, которые запускают выгрузку независимо от того, является ли время подходящим, например, когда страничный кэш становится слишком большим, и использование запоминающего устройства слишком интенсивно. Такие состояния могут быть объединены с основанным на взаимодействии пользователя условием, как описано выше.
p
[0096] Приняв решение о выполнении выгрузки, на этапе 640 может быть предсказана длина интервала для выгрузки. Несмотря на то, что с целью иллюстрации этап 640 изображен после этапа 630, специалисту в данной области техники может быть понятно, что длина интервала может быть предсказана или оценена при определении того, возникает ли подходящий интервал, на основе различных моделей взаимодействия. В некоторых вариантах осуществления, модель автомата с конечным числом состояний, как показано на Фиг.7, используется для предсказания интервала, в котором среднее значение  используется для предсказания длины интервала.
[0097] Затем, на этапе 650 данные в страничном кэше, которые готовы для выгрузки, могут быть спланированы в соответствии с политикой планирования как предусмотрено обработчиком 205 политик, как показано на Фиг.2.
бездействия
[0098] В целом, политика планирования принимает решение о том, какие разделы или транзакции среди тех кэшированных данных, которые приготовлены или готовы для выгрузки, выгрузить. Обычно, внутри приложения транзакции должны выгружаться по порядку. Таким образом, общее рассмотрение для политики планирования заключается в выгрузке как можно больше транзакций в течение заданного интервала . Различные подходящие механизмы планирования могут использоваться для реализации политики планирования. При рассмотрении рассматриваемых транзакций от множества приложений может использоваться механизм многоприоритетного планирования для гарантирования равнодоступности среди приложений,, и дополнительно улучшает производительности выгрузки. В типичном сценарии для таких вариантов осуществления может быть следующее: пользователь взаимодействует с приложением при одновременном прослушивании музыкального радио, а фоновые службы электронной почты или новостей постоянно принимают уведомляющие сообщения.
[0099] Политика планирования может быть по меньшей мере частично основана на одном или более атрибутах транзакций, так что надлежащие транзакции могут быть выбраны равнодоступным и эффективно использующим энергию способом. Атрибут транзакции включает в себя одно или более из следующего: состояние транзакции, длина транзакции, родственность транзакции и возраст транзакции.
[00100] Состояние транзакции включает в себя активное состояние и закрытое состояние. Как описано ранее, только закрытая транзакция может быть спланирована для выгрузки.
[00101] Длина транзакции относится к количеству страниц на выгрузку для транзакции. На основе длины может быть оценено время, требуемое для выгрузки одной транзакции, и тем самым может быть оценено, может ли транзакция поместиться в текущий предсказанный интервал, для исключения любого возможного конфликта, который повлияет на реагирование приложения, например, операция выгрузки перекрывается с интерактивной пользовательской операцией.
[00102] Родственность транзакции указывает, принадлежат ли две или более транзакции одному и тому же приложению. Транзакции одного и того же приложения имеют родственность, потому что они могут быть объединены, тем самым сберегая энергию если они выгружаются вместе. Другими словами, две или более последовательных транзакции, обладающих родственностью, могут быть объединены в одну перед выгрузкой для расширения объема улучшения использования энергии.
[00103] Возраст транзакции может быть представлен количеством раз, в течение которых транзакция была ранее пропущена, поскольку ни в какой интервал она не помещалась. Для равнодоступности не желательно, чтобы транзакции некоторых приложений оставались не выгруженными слишком долго.
[00104] Различные способы планирования могут быть использованы для планирования подлежащих выгрузке транзакций на основе вышеупомянутых атрибутов транзакций. Один подход является способом планирования на основе приоритов. Например, могут использоваться следующие четыре рассмотрения приоритетности, при которых меньший порядковый номер означает более высокий приоритет.
[00105] Рассмотрение 1 (родственность транзакции): всякий раз при выборе некоторой транзакций другим транзакциям того же самого приложения отдается приоритет над остальными. Для простоты, в дальнейшем приложение непосредственно используется в качестве блока планирования. Следует отметить, что другие транзакции в отличие от начальной транзакции приложения не рассматриваются кроме тех случаев, когда выбирается приложение. Различные подходящие структуры данных могут быть приняты для организации ожидающих приложений. На Фиг.8 показана примерная структура данных для организации ожидающих приложений.
[00106] Как показано на Фиг.8, существует три претендующих очереди: очень срочная очередь 801, не очень срочная очередь 802 и обычная очередь 803, и не претендующая очередь 804. Каждый кадр в очереди представляет приложение. Три претендующие очереди 801, 802 и 803 формируют способ совместного укомплектования транзакций схожего возраста. Всякий раз при пропуске приложения в очереди оно удаляется из данной очереди и помещается в более срочную очередь, если такая имеется.
[00107] Рассмотрение 2 (возраст транзакции): для трех претендующих очередей 801, 802 и 803 приложениям из более срочных очередей отдается приоритет над приложениями из менее срочных очередей. Когда нет подходящего выбора в претендующих очередях, то для выгрузки может быть выбрана самая короткая транзакция в очень срочной очереди.
[00108] Рассмотрение 3 (длина транзакции): приложение в претендующей очереди является подходящим для выгрузки только тогда, когда длина его начальной транзакции короче доступного интервала.
[00109] Рассмотрение 4 (пополнение очереди): когда приложение в любой очереди имеет закрытые транзакции, оно добавляется в обычную очередь. Когда все три претендующие очереди пусты, все приложения в не претендующей очереди перемещаются в обычную очередь.
[00110] Таким образом, выше была описана файловая система с адаптивной выгрузкой для электронного устройства. Файловая система хранит данные в запоминающем устройстве намного дольше и ее политика для выгрузки кэша записи в запоминающем устройстве в хранилище является адаптивной и ориентированной на приложение. В одном аспекте, то, какие части кэшированных данных готовы для выгрузки, может быть определено в соответствии с характеристикой доступа приложения, что отражает адаптивность под приложение. В другом аспекте, хронирование выгрузки может быть выбрано гибким по меньшей мере частично на основе взаимодействий пользовательского ввода с приложением электронного устройства или с электронным устройством, что отражает адаптивность под пользователя. Дополнительно, может использоваться механизм многоприоритетного планирования для планирования блоков данных, которые готовы к выгрузке, что гарантирует равнодоступность среди приложений и дополнительно улучшает производительность выгрузки.
[00111] Несмотря на то, что объект изобретения был описан на языке, свойственном для конструктивных признаков и/или методологических действий, следует понимать, что объект изобретения, определенный в прилагаемой формуле изобретения, не обязательно ограничен описанными выше конкретными признаками или действиями. Вместо этого, описанные выше конкретные признаки и действия раскрыты в качестве примерных форм реализации пунктов формулы изобретения.
[00112] Тогда как раскрытие допускает различные видоизменения и альтернативные конструкции, определенные проиллюстрированные варианты его осуществления изображены на чертежах и были подробно описаны выше. Следует понимать, однако, что нет никакого намерения ограничивать раскрытие до конкретных раскрытых форм, а напротив, намерение состоит в том, чтобы охватывать все видоизменения, альтернативные структуры и эквивалентные варианты, находящиеся в пределах сущности и объема настоящего изобретения. Аспекты любого из вариантов осуществления, описанных выше, могут быть объединены с аспектами любого из других описанных вариантов осуществления для формирования дополнительных вариантов осуществления без потери желаемого результата.