Способы и устройства для упреждающего управления памятью

Иллюстрации

Показать все

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

Реферат

Ссылки на связанные заявки

Настоящее изобретение заявляет приоритет предварительной патентной заявки США №60/416,115 от 4 октября 2002, включенной в настоящее описание посредством ссылки.

Область техники

Изобретение относится к управлению компьютерной памятью.

Предшествующий уровень техники

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

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

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

Хотя одни переходы связаны с преднамеренной откачкой (вытеснением) страниц из памяти, а другие приводят к внезапным запросам памяти, имеются и такие, в результате которых страницы переводятся в неактивное состояние и загружаются на диск. Более конкретно, страницы памяти, которые находятся в рабочих наборах, могут быть вырезаны и помещены в кэш страниц, которые не используются, к ним можно обращаться как к резервному набору страниц (например, резервный список в системах, основанный на Windows®), вместе со страницами файлов, которые закрыты. Для уменьшения числа считываний с диска и записей на диск система управления памятью отслеживает, к каким страницам памяти в резервном наборе страниц имело место самое последнее обращение, и если требуется память, то выбирает те страницы для переноса на диск, по существу на основе очереди типа «первым пришел, первым вышел» (FIFO).

Хотя этот метод в некоторой степени обеспечивает уменьшение числа переносов на диск, поскольку в соответствии с ним страницы, которые использовались при обработке самыми последними, остаются в памяти, современным приложениям свойственны высокие требования к коду и данным. В результате кратковременно страницы могут быть вызваны из этого резервного набора страниц, однако на длительное время, при обычном управлении памятью, простая очередь типа FIFO резервного набора страниц приводит к эрозии, когда страницы возможно высокой значимости (но не использовавшиеся в последнее время) перезаписываются менее значимыми (но использовавшимися позже по времени). Следовательно, необходимо значительно количество переносов ввода/вывода на диск и с диска. Даже в высокопроизводительных системах эти переносы ввода/вывода действуют как критический элемент («узкое место») в системе, причем система недоиспользует большой объем доступной памяти, оставляя ЦПБ в состоянии ожидания в течение длительного времени.

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

Сущность изобретения

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

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

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

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

Как результат настоящего изобретения, использование ЦПБ существенно возрастает, не создавая помех нормальному использованию системы. Для многих пользователей компьютеров полный набор страниц памяти, используемый в действительности, достаточно мал, чтобы сохраняться в памяти, что приводит к тому, что число безуспешных запросов (считывания необходимых данных с диска) сокращается до нуля или до значения, близкого к нулю.

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

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

Другие преимущества будут очевидны из последующего детального описания, иллюстрируемого чертежами.

Краткое описание чертежей

Фиг.1 - блок-схема, представляющая в общем виде компьютерную систему, в которой может быть воплощено настоящее изобретение;

Фиг.2 и 3 - блок-схемы, представляющие базовое соотношение между компонентами системы в соответствии с одним из аспектов настоящего изобретения;

Фиг.4А и 4В - блок-схема, представляющая обобщенную архитектуру, пригодную для выполнения упреждающего управления памятью в соответствии с одним из аспектов настоящего изобретения;

Фиг.5А - блок-схема, иллюстрирующая возможный способ, которым резервный набор страниц может сохранять данные страниц;

Фиг.5В - блок-схема, представляющая альтернативный способ, которым резервный набор страниц с присвоенными приоритетами может сохранять данные страниц в поднаборах с присвоенными приоритетами, в соответствии с одним из аспектов настоящего изобретения, и

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

Детальное описание

Примерная среда функционирования

Фиг.1 иллюстрирует пример подходящей среды 100 вычислительной системы, в которой может быть реализовано настоящее изобретение. Среда 100 вычислительной системы является лишь одним примером подходящей вычислительной среды и не предусматривает каких-либо ограничений объема использования или функциональных возможностей изобретения. Вычислительная среда 100 не должна также интерпретироваться как имеющая какую-либо зависимость или требование относительно любого компонента или комбинации компонентов, показанных в иллюстративной вычислительной среде 100.

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

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

Как показано на Фиг.1, приведенная для примера система для реализации изобретения содержит универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не ограничиваться указанным, блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные компоненты системы, включая системную память с блоком 120 обработки. Системная шина 121 может представлять собой любую из различных типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают шину ISA (архитектура промышленного стандарта), шину MCA (микроканальная архитектура), расширенную шину ISA (EISA), локальную шину VESA (ассоциации стандартов по видеоэлектронике), шину PCI (межсоединений периферийных компонентов), также известная как шина Mezzanine.

Компьютер 110 в типовом случае содержит множество носителей для хранения информации, считываемых компьютером. Такие носители могут представлять собой любую доступную среду, к которой осуществляется локальный и/или удаленный доступ компьютером 110, и могут включать энергозависимые и энергонезависимые носители, съемные и несъемные носители. В качестве примера, но не ограничения, считываемые компьютером носители для хранения информации могут включать в себя компьютерные носители для хранения данных и среды передачи данных. Компьютерные носители для хранения данных включают в себя энергозависимые и энергонезависимые съемные и несъемные носители, реализованные любым методом или технологией хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или иные данные. Компьютерные носители для хранения данных включают в себя, но не ограничиваются указанным, оперативную память (ОЗУ), постоянную память (ПЗУ), электронно-стираемую программируемую постоянную память (ЭСППЗУ), флэш-память или иную технологию памяти, ПЗУ на компакт-дисках (CD-ROM), цифровые многоцелевые диски (DVD) или иные средства памяти на оптических дисках, память на магнитных кассетах, магнитных лентах, магнитных дисках или иные магнитные устройства памяти, или любой другой носитель, который может быть использован для хранения желательной информации и к которому может быть обеспечен доступ компьютером 110. Среда передачи информации в типовом случае воплощает считываемые компьютером инструкции, структуры данных, программные модули или иные данные в модулированном сигнале данных, таком как несущее колебание или иной транспортный механизм, и включает любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, в котором одна или более его характеристик установлены или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, среда передачи включает проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустическая, радиочастотная, инфракрасная и другие беспроводные среды.

Системная память 130 включает компьютерные носители информации в форме энергозависимой памяти и/или энергонезависимой памяти ПЗУ (ROM) 131, ОЗУ (RAM) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые стандартные подпрограммы для обеспечения переноса информации между элементами в компьютере 110, например, в процессе запуска, в типовом случае сохранена в ПЗУ 131. ОЗУ 132 в типовом случае содержит данные и/или программные модули, которые являются непосредственно доступными для процессорного блока 120 и/или в текущее время обрабатываемыми им. В качестве примера, но не для ограничения, Фиг.1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.

Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. В качестве примера, Фиг.1 иллюстрирует накопитель 141 на жестких дисках, который считывает или записывает на несъемные энергонезависимые магнитные носители информации, накопитель 151 на магнитных дисках, который считывает или записывает на съемный, энергонезависимый магнитный диск 152, и накопитель 155 на оптических дисках, который считывает или записывает на съемный энергонезависимый оптический диск 156, такой как CD-ROM или иные оптические носители информации. Другие съемные/несъемные, энергозависимые/ энергонезависимые компьютерные носители информации, которые могут быть использованы в приведенной для примера среде функционирования, включают, но не ограничиваются указанным, кассеты на магнитных лентах, платы флэш-памяти, цифровые многоцелевые диски, цифровые видеомагнитные ленты, твердотельные ОЗУ, твердотельные ОЗУ и другое. Накопитель 141 на жестких дисках в типовом случае соединен с системной шиной 121 через интерфейс энергонезависимой памяти, такой как интерфейс 140, накопитель 151 на магнитных дисках и накопитель 155 на оптических дисках в типовом случае соединены с системной шиной 121 интерфейсом съемной памяти, таким как интерфейс 150.

Накопители и связанные с ними считываемые компьютером носители, описанные выше и показанные на Фиг.1, обеспечивают энергонезависимую память для считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 110. На Фиг.1, например, дисковод 141 для жестких дисков показан как предназначенный для хранения операционной системы 144, прикладных программ 145, других программных модулей 146 и программных данных 147. Заметим, что эти компоненты могут быть либо теми же самыми или отличаться от операционной системы 134, прикладных программ 135, других программных модулей 135 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены здесь другими ссылочными позициями, чтобы показать, что, как минимум, они являются отличающимися копиями. Пользователь может ввести команды и информацию в компьютер 110 через входные устройства, такие как графический планшет или цифровой преобразователь (дигитайзер) 146, микрофон 163, клавиатуру 162 и координатно-указательное устройство 161, на которое обычно ссылаются как на мышь, шаровой манипулятор (трекбол) или сенсорный планшет. Другие устройства ввода, не показанные на Фиг.1, могут включать в себя джойстик, игровую панель, антенну спутниковой связи, сканер и т.п. Эти и другие устройства ввода часто подсоединяются к блоку 120 обработки через интерфейс 160 пользовательского ввода, который связан с системной шиной, но может быть подсоединен посредством других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или устройство отображения другого типа также соединено с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. Монитор 191 может также выполняться с панелью сенсорного экрана или с другим подобным средством. Заметим, что монитор и/или панель сенсорного экрана может быть физически связана с корпусом, в котором располагается вычислительное устройство 110, как в персональном компьютере типа графического планшета. Кроме того, компьютеры, такие как вычислительное устройство 110, могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 195 и принтер 196, которые могут быть подключены через интерфейс 194 периферийных устройств вывода или иное подобное средство.

Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или более удаленных компьютеров, таких как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер, одноранговый узел или другой обычный узел сети и в типовом случае может включать в себя многие или все из элементов, описанных выше в связи с компьютером 110, хотя на фиг.1 показано только устройство 181 памяти для хранения данных. Логические соединения, показанные на Фиг.1, включают локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут включать и другие сети. Такие сетевые среды широко используются в офисах, компьютерных сетях предприятий, интранетах и в Интернете. Например, в настоящем изобретении компьютерная система 110 может содержать машину-источник, от которой перемещаются данные, и удаленный компьютер 180 может представлять машину-адресат. Заметим, однако, что машины, являющиеся источником и адресатом, не должны обязательно связываться сетью или какими-либо иными средствами; напротив, данные могут перемещаться посредством любой среды, запись на которую может осуществляться платформой-источником и считывание с которой может производиться платформой или платформами-адресатами.

При использовании в сетевой среде LAN компьютер 110 подключен к локальной сети LAN 171 через соответствующий сетевой интерфейс или адаптер 170. При использовании в среде глобальной сети WAN компьютер 110 обычно включает в себя модем 172 или иное средство для установления связи в глобальной сети WAN 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может соединяться с системной шиной 121 через интерфейс 160 пользовательского ввода или иной подходящий механизм. В сетевой среде программные модули, изображенные по отношению к компьютеру 110, или их части могут храниться в удаленных устройствах памяти для хранения данных. В качестве примера, но не для ограничения, Фиг.1 иллюстрирует удаленные прикладные программы 185, хранящиеся в устройстве 181 памяти. Следует иметь в виду, что показанные сетевые соединения приведены лишь для примера и могут быть использованы другие средства для осуществления канала связи между компьютерами.

Упреждающее управление памятью

Один из аспектов настоящего изобретения, в частности, направлен в основном на усовершенствованную архитектуру управления памятью, содержащую системы способы и механизмы, которые приводят к реальному и воспринимаемому повышению эффективности по отношению к основным аспектам пользовательского интерфейса, прикладных программ и программного обеспечения операционной системы. С этой целью, как показано на Фиг.2, настоящее изобретение предусматривает упреждающую, гибкую, самонастраивающуюся систему 200 управления памятью, которая контролирует связанные с памятью действия и работу пользователя, чтобы обеспечить, по меньшей мере с относительно высокой вероятностью успеха, присутствие необходимых данных в оперативной памяти 202 (или просто «памяти», как будет использоваться далее), прежде чем данные потребуются, вместо считывания в память 202 по запросу с диска 204 (или другого эквивалентного вторичного механизма хранения, такого как флэш-память, сетевой источник данных, накопитель на магнитной ленте и/или виртуально любой тип памяти данных). Иными словами, упреждающее и гибкое управление памятью переносит потенциально полезные данные в память и пытается сохранить эти данные в памяти. Если полезные данные необходимо выгрузить или перезаписать, эти данные могут быть автоматически перенесены назад восстанавливаемым способом, не по причине действительного запроса, а просто ввиду ожидаемого запроса.

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

Как можно легко понять, имея память 202, заполненную подходящими данными (например, упорядоченными в страницы), прежде чем эти страницы потребуются, система 200 управления памятью, соответствующая настоящему изобретению, существенно сокращает или исключает операции переноса данных по требованию и тем самым сокращает или исключает узкие места ввода/вывода во многих важных пользовательских сценариях. Заметим, что, как использовано в настоящем описании, термин «страница» может относиться к наименьшим объемам данных, которые система 200 управления памятью обрабатывает как блок (например, 4096 байтов), однако здесь не предусматривается ограничение настоящего изобретения какими-либо фиксированными объемами данных, и поэтому «страница» данных может иметь некоторый другой фиксированный объем или даже иметь переменный объем данных (например, один байт или несколько байтов), или даже представлять собой потоковый перенос данных. Таким образом, система управления памятью, которая может считывать/записывать/переносить потоком произвольные объемы данных, а не фиксированные объемы данных или, например, кратные им значения, продолжает оставаться эквивалентной системе, позволяющей считывать и записывать одну или более страниц.

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

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

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

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

В принципе, настоящее изобретение предусматривает нетрадиционно более обширную информацию на каждую страницу памяти, чтобы получить относительную значимость страницы, для идентификации страниц как высокой значимости, так и низкой значимости, независимо от того, находится ли страница в текущий момент в памяти, или в другом хранилище. Эта обширная информация (включая данные структуры/частоты/группирования/контекста) поддерживается в памяти (и, таким образом, находится на постоянном хранении) для страниц в памяти, а также для страниц, которые больше не находятся в памяти (например, находятся в настоящее время на жестком или гибком диске, на CD-носителе, DVD-носителе, в сети, во флэш-памяти и так далее) или нигде больше в памяти. Эта информация используется, чтобы предварительно загрузить (или выбрать с упреждением) в память значимые страницы, которые не находятся в памяти, и/или поддерживать более значимые страницы по сравнению с менее значимыми страницами. Это может выполняться посредством механизма дополнения набора страниц, который сохраняет записи рабочих множеств, содержащие обширную информацию использования для страниц, которые больше не находятся в памяти, но действительны в адресном пространстве для рабочего набора. Другой путь - через расширенный резервный набор страниц (например, кэш страниц, которые не используются, например, резервный список в системе, основанной на Windows®), который формируется на основе механизма архива страниц файлов, где располагается больше физических дескрипторов и записей страниц, чем в физической памяти, и они используются для поддержания информации конфигурации, частоты, группирования и/или контекстной информации для страниц, которые выгружаются из памяти.

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

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