ПОДКАЧКА РАБОЧЕГО НАБОРА, ИСПОЛЬЗУЯ ПОСЛЕДОВАТЕЛЬНО УПОРЯДОЧЕННЫЙ ФАЙЛ ПОДКАЧКИ
WORKING SET SWAP, USING SEQUENTIALLY ORDERED SWAP FILE

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0001] Вычислительные системы используют главную память (часто называемую физической памятью) для выполнения процессов, включающих в себя программы программного обеспечения или приложения. В современных системах эта главная память в общем включает в себя энергозависимую память, такую как память с произвольным доступом (RAM). Операционная система (OS) может назначать каждому процессу множество страниц памяти для использования, в то время как процесс выполняется в физической памяти. Однако, активные процессы могут использовать больше физической памяти, чем доступно системе. В таких случаях виртуальная память может использоваться для добавления физической памяти, используемой активными процессами, вместо поддержки всех страниц процесса в физической памяти.
[0002] Виртуальная память может быть реализована посредством записи одной или более страниц для процесса в энергонезависимой памяти во вторичном устройстве хранения (например, жестком диске), и считыванием страниц обратно в физическую память, если необходимо. Например, когда данные активно не используются процессом, страницы, содержащие такие данные, могут быть записаны на вторичное устройство хранения, таким образом освобождая пространство в физической памяти. Этот процесс считывания и записи страниц между физической памятью и виртуальной памятью, в общем, называется страничным обменом и пространство во вторичном устройстве хранения для записи страниц, в общем, называется файлом подкачки. Скорость и эффективность, с которой выполняется страничный обмен для процесса, могут воздействовать на производительность системы и пользовательский опыт.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Традиционные операции страничного обмена имеют тенденцию удалять индивидуальные страницы из физической памяти во вторичное устройство хранения на основании требований памяти текущих активных процессов, и это может привести к фрагментации вторичного устройства хранения. Настоящая заявка описывает способы для эффективной подкачки одной или более страниц в и из рабочего набора страниц для процесса, с помощью использования больших записей и считываний страниц в и из последовательно упорядоченных местоположений во вторичном устройстве хранения. Поскольку считывания и записи имеют тенденцию быть более эффективным в случаях, когда они могут быть выполнены в отношении последовательно упорядоченных и/или больших блоках памяти, способы, описанные в настоящем описании, используют большие считывания и записи страниц в и из последовательно упорядоченных местоположений в физической памяти во время операций страничного обмена. Когда страницы подкачки удаляются из физической памяти во вторичное устройство хранение, страницы могут быть записаны в зарезервированные, смежные местоположения в специализированном файле подкачки, в соответствии с их порядком виртуальных адресов. Такая запись может позволять загрузку страницы в больших последовательно упорядоченных блоках памяти, предоставляя более эффективную загрузку.
[0004] Эта сущность изобретения предоставляется для ввода выбора понятий в упрощенной форме, которые дополнительно описываются ниже в Подробном Описании. Этот раздел сущности изобретения не предназначается для идентификации ключевых признаков или существенных признаков заявленного объекта изобретения, и при этом он не предназначается для использования для ограничения области заявленного объекта изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0005] Подробное описание описывается со ссылками на сопроводительные чертежи. На чертежах крайняя левая цифра(ы) ссылочной позиции идентифицирует фигуру, в которой сначала появляется ссылочная позиция. Одинаковые ссылочные позиции на различных фигурах указывают аналогичные или идентичные объекты.
[0006] ФИГ. 1А и 1B иллюстрируют пример для записи страниц из рабочего набора процесса в последовательно упорядоченные местоположения файла подкачки, в соответствии с вариантами осуществления.
[0007] ФИГ. 2 является схематической диаграммой, изображающей пример вычислительной системы, в соответствии с вариантами осуществления.
[0008] ФИГ. 3 является схематической диаграммой примерных компонентов операционной системы, в соответствии с вариантами осуществления.
[0009] ФИГ. 4A изображает блок-схему иллюстративного процесса для выгрузки страниц из рабочего набора, в соответствии с вариантами осуществления.
[0010] ФИГ. 4B изображает блок-схему иллюстративного процесса для записи выгруженных страниц в файл подкачки, в соответствии с вариантами осуществления.
[0011] ФИГ. 5 изображает блок-схему иллюстративного процесса для загрузки страниц из файла подкачки в рабочий набор, в соответствии с вариантами осуществления.
[0012] ФИГ. 6 изображает блок-схему иллюстративного процесса для динамического управления файлом подкачки, в соответствии с вариантами осуществления.
ПОДРОБНОЕ ОПИСАНИЕ
Обзор
[0013] Варианты осуществления, описанные в настоящем описании, обеспечивают более эффективную подкачку страниц памяти из рабочего набора процесса с помощью использования записей и считываний больших блоков памяти в и из последовательно упорядоченных местоположений во вторичном устройстве хранения. Процессы, выполняющиеся в физической памяти, такой как память с произвольным доступом (RAM), могут запрашивать больше физической памяти, которая доступна в системе. В таких случаях обычно сконфигурированный диспетчер памяти или другой компонент операционной системы могут реализовывать операции страничного обмена для освобождения некоторой физической памяти посредством записи одной или более страниц памяти для процесса в файл страничного обмена на вторичном устройстве хранения. В традиционном страничном обмене индивидуальные страницы для процесса могут быть записаны (то есть, выгружены) для освобождения физической памяти, когда это необходимо, и страницы могут быть посланы обратно в физическую память по запросу, когда процесс желает получить доступ к ним (например, когда происходит ошибка страницы). Такой традиционный страничный обмен индивидуальных страниц когда необходимо, часто называется страничным обменом по запросу и может привести к операциям ввода/вывода (I/O) на вторичном устройстве хранения, которые являются случайными и малыми с различными страницами, сохраненными в не непрерывном пространстве хранения и не в каком-либо конкретном порядке.
[0014] Кроме того, операции I/O (например, считывание и запись) в вычислительных системах, в общем являются более эффективными при выполнении в последовательно упорядоченных и больших запросах. Например, в системах, которые используют твердотельные диски, операции I/O, которые последовательно упорядочены, могут привести к повышению эффективности с коэффициентом от двух до трех по сравнению с запросами для случайных местоположений. Во многих случаях последовательные запросы большего размера могут привести к подобным повышениям по сравнению с последовательными запросами меньшего размера. Кроме того, в системах, которые используют вращающиеся диски, повышение эффективности может быть столь же большим, как пятидесятикратное. Учитывая это, варианты осуществления, описанные в настоящем описании, обеспечивают эффективную подкачку посредством использования операций I/O для считывания и записи больших кластеров страниц в и из последовательно упорядоченных местоположений в файле подкачки.
[0015] Как используется в настоящем описании, термин «страница» может относиться к блоку памяти, используемому процессом, во время его выполнения. Когда процесс активен, страница может находиться в физической памяти, где она доступна для процесса. Диспетчер памяти или другой компонент операционной системы (OS) могут удалять одну или более страниц из физической памяти и записывать их на вторичное устройство хранения. Страницы могут быть считаны обратно в физическую память посредством копирования их обратно из вторичного устройства хранения.
[0016] В одном или более вариантах осуществления страницы могут включать в себя частные страницы для процесса. Как используются в настоящем описании, частные страницы могут относиться к тем страницам, которые принадлежат или посвящаются конкретному процессу и не используются никаким другим процессом, таким как неупорядоченный массив, распределенный для процесса. Другие типы страниц могут включать в себя совместно используемые страницы, которые используются множественными процессами, такими как отображение файлов. Некоторые варианты осуществления поддерживают эффективную подкачку частных страниц. Кроме того некоторые варианты осуществления могут также поддерживать подкачку совместно используемых страниц поддерживаемого файла страничного обмена. Эти типы страниц могут быть сохранены в единственном местоположении (например, в файле подкачки), и на них можно ссылаться посредством осуществление контроля или указателя. Процесс может переходить от осуществления контроля, такого как совместно используемая страница поддерживаемого файла страничного обмена к другому процессу, и страница может сохраняться в памяти, пока процесс поддерживает осуществление контроля над ним.
[0017] Как использующийся в настоящем описании, термин рабочий набор может относиться к набору страниц для процесса. Варианты осуществления поддерживают различные типы рабочих наборов. Например, рабочий набор может включать в себя страницы для данных, к которым предоставляется доступ и/или обращение посредством процесса во время конкретного интервала времени. Такой рабочий набор может предоставлять приближение для набора страниц, которые вероятно могут быть доступными посредством процесса в ближайшем будущем (например, в течение следующего периода времени) таким образом, что может быть желательно сохранить страницы в физической памяти для готовности в предоставлении доступа посредством процесса. Однако, варианты осуществления этим не ограничиваются и могут поддерживать другие типы коллекций страниц в качестве рабочего набора. Например, рабочий набор для процесса может быть теми страницами, которые являются доступными непосредственно от процессора, не проходя через OS.
[0018] Как используется в настоящем описании, термин файл подкачки может относиться к зарезервированной области на вторичном устройстве хранения (например, жестком диске) и использоваться для подкачки страниц в или из физической памяти. В некоторых вариантах осуществления файлом подкачки является специализированный файл подкачки, который является отдельным файлом страничного обмена, используемым для традиционных операций страничного обмена. В некоторых вариантах осуществления файл подкачки может быть частью файла страничного обмена. В некоторых вариантах осуществления файл подкачки может быть инициализирован диспетчером памяти или другим компонентом OS, и его размером можно динамически управлять, как описано в настоящем описании со ссылкой на фиг. 6.
[0019] Варианты осуществления обеспечивают выгрузку страниц рабочего набора для процесса и для записи одной или более выгруженных страниц из рабочего набора в файл подкачки во вторичном устройстве хранения. Как описано выше, варианты осуществления позволяют эффективную подкачку посредством предоставления, считывания и/или записи страниц в больших кластерах в и из последовательно упорядоченных местоположений в файле подкачки. ФИГ. 1А и 1B иллюстрируют пример выгрузки и записи для одного или более вариантов осуществления.
[0020] Фиг. 1A показывает рабочий набор 102 конкретного процесса, Процесс X и файл 104 подкачки во вторичном устройстве хранения. Определение может быть сделано на выгрузку одной или более страниц рабочего набора 102 из физической памяти. Компонент OS, такой как диспетчер памяти, может затем идентифицировать один или более рабочих наборов 102, которые являются страницами кандидатами для выгрузки, такими как частные страницы рабочего набора. Полный размер идентифицированных страниц - кандидатов может быть вычислен. Затем, зарезервированное пространство 106 может быть зарезервировано в файле 104 подкачки в операции 108, это зарезервированное пространство является достаточным для хранения страниц - кандидатов. Дополнительно, местоположение для каждой страницы - кандидата может быть зарезервировано в зарезервированном пространстве 106, эти местоположения являются последовательно упорядоченными в соответствии с порядком виртуальных адресов страниц - кандидатов. Здесь в некоторых вариантах осуществления страницы - кандидаты могут быть упомянуты как выгруженные даже при том, что никакие страницы - кандидаты не были записаны в файл подкачки.
[0021] Фиг. 1B изображает одну или более страниц 110 - кандидатов в рабочем наборе 102. В одной или более операциях 112 записи, одна или более страниц 110 - кандидатов записываются в зарезервированное пространство 106. Как показано на ФИГ. 1B, каждая записанная страница - кандидат может быть записана в свое конкретное зарезервированное местоположение. В некоторых вариантах осуществления, хотя страницы 110 - кандидаты могут быть не смежными (не непрерывными) в рабочем наборе, они записываются в смежные местоположения в файле подкачки, как показано на ФИГ. 1B. Запись страниц - кандидатов в непрерывное последовательно упорядоченное зарезервированное пространство 106 может разрешать последующую операцию считывания для считывания большего последовательно упорядоченного блока файла подкачки, когда страницы считываются обратно в рабочий набор 102 во время последующих операций загрузки. Таким образом, в некоторых вариантах осуществления запись страниц - кандидатов в последовательно упорядоченные местоположения в файле подкачки обеспечивает эффективное последующее считывание, то есть большое и/или последовательно упорядоченное. Выгрузка и запись страниц описываются более подробно со ссылкой на ФИГ. 4. Варианты осуществления дополнительно обеспечивают загрузку страниц, включающую в себя считывание страниц из файла подкачки в рабочий набор (то есть, возвращение страниц в физическую память для использования процессом). Загрузка страниц описывается более подробно со ссылкой на Фиг. 5.
[0022] В некоторых вариантах осуществления может быть принято решение о выгрузке и удалении одной или более страниц из рабочего набора процесса диспетчером политики или другим компонентом OS, на основании различных условий. Например, определение может быть сделано, что процесс приостанавливается, является не активным или по некоторым причинам менее активным (например, обеспечивает доступ к меньшему количеству страниц), чем другие активные процессы на вычислительном устройстве. В таких случаях некоторые или все рабочие наборы для процесса могут быть удалены из рабочего набора для освобождения большей физической памяти для использования другими процессами. Однако, для создания оптимального пользовательского опыта может быть желательно считывать страницы обратно в рабочий набор максимально эффективно во время загрузки, так, чтобы процесс быстро становился активным. Эффективная загрузка посредством использования больших и/или последовательных операций I/O может обеспечивать быструю повторную активацию процесса и поэтому обеспечивать расширенную реализацию на вычислительном устройстве, переключаясь между активными процессами.
Иллюстративная архитектура вычислительного устройства
[0023] ФИГ. 2 изображает диаграмму для примерной архитектуры компьютерной системы, в которой могут работать варианты осуществления. Как показано, вычислительная система 200 включает в себя блок 202 обработки. Блок 202 обработки может охватывать множественные блоки обработки и может быть реализован в качестве аппаратного обеспечения, программного обеспечения или некоторой их комбинации. Блок 202 обработки может включать в себя один или более процессоров. Как используется в настоящем описании, процессор относится к компоненту аппаратного обеспечения. Блок 202 обработки может включать в себя выполняемые компьютером команды, выполняемые процессором команды и/или выполняемые машиной команды, написанные на любом подходящем языке программирования для выполнения различных функций, описанных в настоящем описании.
[0024] Вычислительное устройство 200 дополнительно включает в себя системную память 204, которая может включать в себя энергозависимую память, такую как память с произвольным доступом (RAM) 206, статическую память с произвольным доступом (SRAM), динамическую память с произвольным доступом (DRAM) и т.п. RAM 206 включает в себя одну или несколько OS 208 выполнения, и один или более процессов 210 выполнения, включая в себя компоненты, программы или приложения, которые являются загружаемыми и выполняемыми блоком 202 обработки. Таким образом, в некоторых вариантах осуществления RAM 206 может включать в себя физическую память, в которой выполняются OS 208 или процессы 210.
[0025] Системная память 204 может дополнительно включать в себя энергонезависимую память, такую как постоянное запоминающее устройство (ROM) 212, флэш-память и т.п. Как показано, ROM 212 может включать в себя базовую систему ввода/вывода (BIOS) 214, используемую для загрузки вычислительной системы 200. Хотя не показано, системная память 204 может дополнительно сохранять программу или компонент данных, которые генерируются и/или используются операционной системой(ами) 208 и/или процессами 210 во время их выполнения. Системная память 204 может также включать в себя кэш-память.
[0026] Как показано на Фиг. 2, вычислительное устройство 200 может также включать в себя несменное устройство 230 хранения и/или сменное устройство 234 хранения, включающее в себя, но не ограничиваясь, устройство хранения на магнитных дисках, устройство хранения на оптических дисках, устройство хранения на магнитной ленте и т.п. Дисководы и ассоциированные считываемые компьютером носители могут обеспечивать энергонезависимое устройство хранения считываемых компьютером команд, структур данных, модулей программ и других данных для работы вычислительной системы 200. Кроме того, несменное устройство 230 хранения может дополнительно включать в себя жесткий диск 232. В некоторых вариантах осуществления жесткий диск 232 может обеспечивать вторичное устройство хранения для использования в операциях подкачки, описанных в настоящем описании.
[0027] В общем, считываемые компьютером носители включают в себя компьютерные носители данных и коммуникационные носители.
[0028] Компьютерные запоминающие носители включают в себя энергозависимые и энергонезависимые, сменные и несменные носители, реализованные в любом способе или технологии для хранения информации, такой как считываемые компьютером команды, структуры данных, модули программы и другие данные. Компьютерные запоминающие носители включают в себя, но не ограничиваются RAM, ROM, стираемую программируемую постоянную память (EEPROM), SRAM, DRAM, флэш-память или другую технологию памяти, постоянную память на компакт-диске (CD-ROM), цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие запоминающие устройства данных на магнитных дисках или любой другой не сменный носитель, который может использоваться для хранения информации для доступа посредством вычислительного устройства.
[0029] Напротив, коммуникационные носители могут осуществлять считываемые компьютером команды, структуры данных, модули программы или другие данные в модулированном сигнале данных, таком как несущая волна или другой механизм передачи. Как определено в настоящем описании, компьютерные запоминающие носители не включают в себя коммуникационные носители.
[0030] Вычислительная система 200 может включать в себя устройство(а) 236 ввода, включающее в себя, но не ограничиваясь, клавиатуру, мышь, перо, игровой контроллер, голосовое устройство ввода для распознавания речи, устройство ввода касанием и т.п. Вычислительная система 200 может дополнительно включать в себя устройство(а) 238 вывода, включающее в себя, но не ограничиваясь, дисплей, принтер, аудио динамики, тактильный вывод и т.п. Вычислительная система 200 может дополнительно включать в себя коммуникационное соединение(я) 240, которое позволяет вычислительной системе 200 связываться с другими вычислительными устройствами 242, включающими в себя клиентские устройства, серверные устройства, базы данных и/или другие сетевые устройства, доступные с помощью одной или более сетей связи.
[0031] ФИГ. 3 обеспечивает примерное описание вычислительной системы 200 и OS 208, в соответствии с вариантами осуществления. Как показано в некоторых вариантах осуществления, OS 208 включает в себя один или более компонентов, таких как диспетчер 302 политики и диспетчер 304 памяти. В некоторых вариантах осуществления диспетчер 302 политики определяет, когда страницы должны быть выгружены из или загружены в рабочий набор для выполнения процесса в физической памяти вычислительной системы 200. В некоторых вариантах осуществления диспетчер 304 политики может быть описан как диспетчер времени жизни процесса для OS 208, который решает, когда процессы должны быть приостановлены, повторно активированы и/или завершены при различных условиях.
[0032] Как показано на ФИГ. 3, OS 208 может связываться с жестким диском 232 и RAM 206, например, с помощью коммуникационной шины вычислительной системы 200. Жесткий диск 232 может включать в себя вторичное устройство хранения для использования OS 208 в операциях страничного обмена или подкачки. В некоторых вариантах осуществления жесткий диск 232 включает в себя один или несколько файлов 318 страничного обмена и/или один или более файлов 320 подкачки. В некоторых вариантах осуществления файл(ы)318 страничного обмена и/или файл(ы) 320 подкачки инициализируются диспетчером 304 памяти для использования в операциях страничного обмена или подкачки. В показанном примере файл(ы) 320 подкачки являются отдельными от файла страничного обмена(ов) 318. Однако, в некоторых вариантах осуществления, файл(ы) 320 подкачки могут быть частью файла страничного обмена(ов) 318. RAM 206 может включать в себя физическую память, в которой процессы выполняются и могут включать в себя один или более рабочих наборов 322 для таких процессов.
[0033] Кроме того диспетчер 304 памяти может включать в себя один или более компонентов, которые работают для выполнения операций для страницы подкачки, как описывается в настоящем описании. В некоторых вариантах осуществления диспетчер 304 памяти включает в себя таблицу 306 страниц, которая отображает виртуальный адрес каждому местоположению страницы как в физической памяти, так и в файле страничного обмена для операций страничного обмена. Некоторые варианты осуществления могут дополнительно использовать таблицу 306 страниц для хранения информации для зарезервированных местоположений страниц - кандидатов в файле подкачки, когда страницы - кандидаты выгружаются из рабочего набора для процесса (как дополнительно описано ниже с ссылкой на ФИГ. 4A). В некоторых вариантах осуществления резервирование пространства в файле подкачки может продолжаться, как описано в заявке на патент США № 13/042128, названной "Pagefile Reservation", поданной 7 марта 2011 г.
[0034] Диспетчер 304 памяти может также включать в себя модифицированный список 308 и/или список 310 ожидания. В некоторых вариантах осуществления, после того как страницы - кандидаты были выгружены из рабочего набора и местоположения были зарезервированы для них в файле подкачки, в некоторый момент позже эти страницы - кандидаты могут быть удалены из рабочего набора и помещены в модифицированный список 308, который должен быть записан блоком записи (например, блоком 312 записи страницы). Тогда, когда каждая страница записывается в файл 320 подкачки, информация адресов для страницы может быть перемещена из модифицированного списка 308 в список 310 ожидания. В некоторых вариантах осуществления список 310 ожидания отслеживает страницы, которые еще не были удалены из физической памяти даже при том, что они были записаны в файл подкачки. В таких случаях, если процесс стремится получить доступ к этим страницам, к ним можно все еще получить доступ непосредственно в физической памяти без обратной загрузки. Однако, если диспетчер 304 памяти запрашивает большее количество страниц физической памяти для других процессов, он может распределять те страницы, которые находятся в списке ожидания. В некоторых вариантах осуществления диспетчер 304 памяти также включает в себя блок 312 записи страницы, который работает для записи страницы из рабочего набора(ов) 322 в файл(ы) страничного обмена 318 и/или файл(ы) 320 подкачки (например, страниц выгрузки) и/или считывания страниц обратно в рабочий набор(ы) 322 (например, страниц загрузки).
Иллюстративные процессы
[0035] ФИГ. 4А, 4B, 5, и 6 изображают блок-схемы, показывающие примерные процессы в соответствии с различными вариантами осуществления. Операции этих процессов иллюстрируются в отдельных блоках (этапах) и резюмируются со ссылкой на эти блоки. Процессы иллюстрируются в качестве логических последовательностей, каждая операция которых может представлять одну или более операций, которые могут быть реализованы в аппаратном обеспечении, программном обеспечении или их комбинации. В контексте программного обеспечения операции представляют выполняемые компьютером команды, сохраненные на одном или более компьютерных носителях данных, которые, при выполнении одним или более процессорами, позволяют одному или более процессорам выполнять изложенные операции. В общем, выполняемые компьютером команды включают в себя подпрограммы, программы, объекты, модули, компоненты, структуры данных и т.п. которые выполняют конкретные функции или реализуют конкретные абстрактные типы данных. Порядок, в котором описываются операции, не предназначается, чтобы быть истолкованным в качестве ограничивающего и любое количество описанных операций может быть объединено в любом порядке, разделено на множественные подоперации и/или выполняться параллельно для реализации описанных процессов.
[0036] Фиг. 4A изображает примерный процесс для выгрузки страниц из рабочего набора в соответствии с вариантами осуществления. Этот процесс выгрузки может быть выполнен одним или более компонентами OS 208, такими как диспетчер 304 памяти или диспетчер 302 политики. На этапе 402 принимается решение выгрузить одну или более страниц из рабочего набора процесса в файл подкачки. В некоторых вариантах осуществления это решение может быть сделано диспетчером 302 политики на основании различных критериев. В некоторых случаях решение для выгрузки может быть основано на определении, что процесс является не активным или приостановленным, что один или несколько потоков, ассоциированных с процессом, не были активными некоторый период времени, что процесс происходил в фоновом режиме в некоторый период времени, что процесс не использовал некоторое число страниц в течение промежутка времени или что вычислительная система в целом была приостановлена и/или не активна.
[0037] Как только решение выгрузки принимается на этапе 404, одна или более страниц(ца) - кандидатов идентифицируются для подкачки из рабочего набора процесса. В некоторых вариантах осуществления диспетчер памяти анализирует каждую страницу рабочего набора и определяет, является ли каждая страница кандидатом на выгрузку на основании некоторых критериев. В некоторых вариантах осуществления кандидаты на выгрузку могут включать в себя частные страницы и/или совместно используемые страницы поддерживаемых файлов страничного обмена в рабочем наборе. В некоторых вариантах осуществления страницы - кандидаты могут быть идентифицированы на основании того, являются ли эти страницы чистыми, то есть, страницы, которые были записаны в файл страничного обмена, но не были изменены за прошедшее время, таким образом, что текущая версия страницы в физической памяти совпадает с версией страницы в файле страничного обмена. «Грязными» страницами являются те страницы, которые, могли быль изменены, начиная с того времени, как произошла запись в файл страничного обмена или когда еще не была произведена запись в файл страничного обмена. Дополнительно, в некоторых вариантах осуществления, является ли страница в памяти заблокированной, может быть рассмотрено при принятии решения, является ли страница кандидатом для выгрузки.
[0038] На этапе 406 пространство резервируется в файле подкачки на основании вычисленного полного размера идентифицированных страниц - кандидатов (например, зарезервированное пространство 106). На этапе 408 местоположение упорядочивается или резервируется в зарезервированном пространстве файла подкачки для каждой страницы - кандидата. В некоторых вариантах осуществления местоположения резервируются в порядке виртуальных адресов в соответствии с виртуальными адресами страниц - кандидатов в рабочем наборе. Таким образом, даже если страницы - кандидаты являются не смежными в рабочем наборе, их местоположения в файле подкачки могут быть смежными. Смежные, последовательно упорядоченные местоположения страниц - кандидатов в зарезервированном пространстве файла подкачки могут разрешать будущие считывания из файла подкачки, который должен выполняться в больших, последовательно упорядоченных блоках для обеспечения эффективной загрузки. В некоторых вариантах осуществления резервирование пространства в файле подкачки может выполняться, как описано в заявке на патент США №13/042128, названной "Pagefile Reservations", поданной 7 марта 2011 г. Как только местоположения для страниц - кандидатов были зарезервированы на этапе 408, эти страницы - кандидаты могут упоминаться как выгруженные. На этапе 410 список (или другая структура данных) выгруженных страниц - кандидатов обновляется. В некоторых вариантах осуществления этот список обновляется, когда местоположения резервируются на этапе 408.
[0039] Как только местоположения были зарезервированы, и список обновлен в некоторое более позднее время, диспетчер памяти может выбирать - записывать некоторые или все выгруженные страницы в их зарезервированные местоположения в файле подкачки. Фиг. 4B изображает примерный процесс для записи выгруженной страницы в соответствии с вариантами осуществления. На этапе 412 принимается решение, записывать ли одну или несколько идентифицированных страниц - кандидатов в файл подкачки (например, выгружать страницы из рабочего набора). В некоторых вариантах осуществления это решение может быть принято на основании определения, что некоторый пороговый период времени прошел, во время которого критерий, который привел к решению выгрузки, (на этапе 402) является по-прежнему достоверным. Например, некоторый период времени (например, 5 минут) может пройти, когда процесс все еще является не активным или приостановленным. В некоторых вариантах осуществления решение может быть принято на основании определения диспетчером памяти, что больше физической памяти необходимо для использования одним или более активными процессами.
[0040] Если принимается решение на этапе 412 записывать одну или более страниц - кандидатов в файл подкачки, на этапе 414 одна или более страниц - кандидатов, которые должны быть записаны, могут быть удалены из рабочего набора. В некоторых вариантах осуществления все страницы - кандидаты удаляются и записываются в файл подкачки в одной или более операциях записи. В некоторых вариантах осуществления часть страниц - кандидатов удаляется. В некоторых вариантах осуществления записанные страницы - кандидаты могут быть определены на основании сжатия для памяти (например, на основании необходимости диспетчера памяти в большей физической памяти). В некоторых вариантах осуществления, решение, какие страницы - кандидаты выгружать, может быть основано на том, как недавно к этим страницам был предоставлен доступ посредством процесса. Например, диспетчер памяти может выбирать выгружать те страницы, которые меньше всего использовались за последнее время и к которым не предоставлен доступ посредством процесса в некоторый период времени.
[0041] В некоторых вариантах осуществления удаление страниц - кандидатов может быть оптимизировано посредством удаления их из рабочего набора в порядке, совместимом с порядком, в котором местоположения для страниц - кандидатов были зарезервированы в файле подкачки. Например, кандидаты могут быть удалены из рабочего набора в порядке виртуальных адресов так, как в случаях, когда местоположения были зарезервированы в порядке виртуальных адресов. В некоторых вариантах осуществления удаление страниц - кандидатов из рабочего набора может быть произвольным и/или случайным (например, не упорядоченным), хотя страницы - кандидаты все еще записываются в последовательно упорядоченные местоположения в файле подкачки на основании порядка виртуальных адресов. В некоторых вариантах осуществления страницы могут остаться в рабочем наборе в физической памяти (например, даже после того, как эти страницы записаны в файл подкачки), пока диспетчер памяти не будет вынужден использовать эти страницы для активных процессов.
[0042] На этапе 416 страницы - кандидаты записываются в файл подкачки. В некоторых вариантах осуществления страницы - кандидаты записываются в свои зарезервированные местоположения, которые последовательно упорядочиваются в файле подкачки в соответствии с порядком виртуальных адресов (например, в порядке возрастания или порядке убывания в соответствии с виртуальными адресами страниц в рабочем наборе). Кроме того, сами операции записи могут быть оптимизированы и/или выполнены более эффективно, посредством объединения в кластеры страниц - кандидатов для выполнения записей в максимально большом из блоков памяти и/или посредством выполнения операции записи в последовательном порядке виртуальных адресов. В некоторых вариантах осуществления блок записи 312 страницы выполняет операции записи для записи страниц - кандидатов в их зарезервированные местоположения в файл подкачки. В случаях, когда страницам - кандидатам не назначено зарезервированное местоположение, страницы могут быть записаны в файл страничного обмена. В некоторых вариантах осуществления адреса записанных страниц могут быть сохранены посредством диспетчера памяти в структуре данных, используемой для считывания страниц из файла подкачки.
[0043] В некоторых случаях решение может быть принято на этапе 412 не записывать выгруженные страницы. В таких случаях на этапе 418 могут быть сохранены зарезервированные местоположения, пока не произошла загрузка (как описано на фиг. 5). В некоторых вариантах осуществления решение может быть принято, чтобы не записывать страницы - кандидаты в файл подкачки, если условия, которые привели к предварительному решению по подкачке (например, на этапе 402), больше не присутствуют после некоторого порогового промежутка времени. Например, процесс может быть активным снова или больше не может быть приостановлен. В других случаях условие по загрузке страниц может происходить прежде, чем эти страницы - кандидаты были записаны в файл подкачки, например, если бы одна или более страниц - кандидатов получали доступ посредством процесса (например, условия, которые привели бы к ошибке страницы, если эти страницы были удалены из физической памяти).
[0044] Некоторые варианты осуществления поддерживают оптимизацию, в которой страницы удаляются из рабочего набора в течение некоторого периода времени после принятия решения о выгрузке на этапе 402. Дополнительно, группы страниц могут быть выгружены и/или выписаны из файла страничного обмена в соответствии с шаблонами использования. Например, диспетчер памяти может выгружать и/или записывать первую группу страниц, к которым наиболее недавно был обеспечен доступ посредством процесса (например, обеспечение доступа в течение последних 5 секунд), затем, после периода времени выгрузки и/или записи второй группы страниц, к которым был обеспечен доступ еще раньше времени назад (например, обеспечен доступ между последними 5 секундами и последними 10 секундами) и т.д. В некоторых случаях такие группы могут вместо этого упорядочиваться от наименее недавнего обеспечения доступа до наиболее недавнего обеспечения доступа. В некоторых вариантах осуществления выгрузка и/или выписка страниц может быть основана на конкретной активности или фазе выполнения процесса. Например, приложение может вводить конкретную фазу или выполнять конкретное поведение, и страницы, относящиеся к этой фазе или поведению (или не относящиеся к этой фазе или поведению) могут быть выгружены посредством диспетчера памяти.
[0045] Кроме того варианты осуществления поддерживают различные комбинации оптимизации. Например, группы страниц могут быть выгружены, и затем аналогичные группы или по-другому определенные группы могут быть записаны в файл подкачки. В качестве другого примера, целый рабочий набор страниц может быть выгружен и затем группы страниц идентифицируются для записи в файл подкачки, как описано в настоящем описании.
[0046] Кроме того в некоторых вариантах осуществления выгрузка одной или более страниц из рабочего набора процесса может быть описана в качестве сохранения текущего состояния процесса на вторичном устройстве хранения, например, когда диспетчер памяти выгружает в выгруженные страницы, процесс возвращается к состоянию в котором он находился, когда, например, он был приостановлен или становился не активным. В некоторых вариантах осуществления процесс выполнения может стремиться получать доступ к страницам, которые были выгружены прежде, чем они были загружены. В таких случаях диспетчер памяти может определять загружать все выгруженные страницы, загружать те страницы, для которых ищется доступ и/или загружать одну или более страниц, которые являются близкими к запрашиваемой странице(ам) в пространстве виртуальных адресов. Это может включать в себя выпуск зарезервированных местоположений для загруженных страниц в файле подкачки.
[0047] Фиг. 5 изображает примерный процесс для загрузки страниц из вторичного запоминающие устройства в рабочий набор процесса в физической памяти, в соответствии с вариантами осуществления. В некоторых вариантах осуществления процесс загрузки выполняется посредством одного или более компонентов OS 208, таких как диспетчер 304 памяти или диспетчер 302 политики. На этапе 502 принимается решение или делается определение - загружать одну или более страниц, которые были предварительно выгружены из рабочего набора для процесса. В некоторых вариантах осуществления это решение принимается диспетчером 302 политики и может быть основано на различных критериях. Такие критерии могут включать в себя прием индикации, что процесс является больше не активным или приостановленным, или что процесс стремится получить доступ к одной или более страницам, которые не находятся в физической памяти (например, происходит ошибка страницы). В некоторых вариантах осуществления критерии могут включать в себя отмену этих условий, которые привели к решению выгрузки на этапе 402.
[0048] На этапе 504 одна или более предварительно выгруженных страниц идентифицируются для загрузки. В это время, когда принимается решение загрузки на этапе 502, одна или более выгруженных страниц могут больше не находиться в физической памяти. Например, диспетчер памяти может использовать одну или более выгруженных страниц для других процессов. Таким образом, на этапе 504 идентификация страниц для загрузки может включать в себя определение этих выгруженных страниц, которые больше не находятся в физической памяти. В некоторых вариантах осуществления идентификация страниц для загрузки может быть основана на тех страницах, чьи адреса были сохранены в структуре данных посредством диспетчера памяти, когда они были выгружены. В некоторых вариантах осуществления неудачные попытки доступа процессом к одной или более страницам (например, ошибки страницы) могут вынуждать загружать эти страницы.
[0049] На этапе 506 делается определение, записана ли одна или более страниц, идентифицированных как предварительно выгруженные в файл подкачки, как описано со ссылкой на ФИГ. 4B выше и покинули ли страницы физическую память. В некоторых вариантах осуществления, на этапе 508, если страницы были записаны в файл подкачки и покинули физическую память, страницы, идентифицированные для загрузки, считываются из своих местоположений в файле подкачки обратно в рабочий набор в физической памяти. В некоторых случаях страницы могут быть удаленными из рабочего набора, но еще не покинутыми физическую память (например, если страницы кэшируются в списке ожидания). В таких случаях эти кэшированные страницы могут быть добавлены обратно в рабочий набор из списка ожидания и их зарезервированные местоположения освобождаются, но нет необходимости считывать страницы из файла подкачки. Дополнительно, некоторые страницы рабочего набора могут покидать физическую память после выгрузки, в то время как другие страницы остаются кэшированными в списке ожидания. В таких случаях эти страницы, которые покидают физическую память, могут быть считаны из файла подкачки и, наряду с кэшированными страницами, добавляться обратно в рабочий набор.
[0050] В некоторых вариантах осуществления это считывание страниц может продолжаться одновременно со считываниями, выпущенными, когда страница процесса дает сбой. Однако варианты осуществления поддерживают считывание в больших блоках памяти и/или в последовательном порядке виртуальных адресов, которые поэтому более эффективны, чем считывание меньших блоков из произвольных местоположений во вторичном устройстве хранения. Например, т.к. страницы были записаны в непрерывный блок, зарезервированный в файле подкачки (или в некоторых случаях, набор смежных блоков, как описано ниже) и были записаны в последовательном порядке виртуальных адресов, группы множественных страниц могут затем быть считаны большими блоками и в последовательном порядке виртуальных адресов, обеспечивая более эффективные операции считывания.
[0051] В некоторых вариантах осуществления может быть выгодно для системной производительности и/или удобства, чтобы считывание выгруженных страниц выполнялось эффективно, учитывая, что пользователь может ожидать чтобы предварительно не активный или приостановленный процесс стал активным снова (например, такой как тогда, когда процессом является приложение пользователя). При этом некоторые варианты осуществления могут поддерживать оптимизацию, в которой страницы считываются в физическую память в порядке, который основывается на том, как часто обеспечивается доступ перед тем, как они были выгружены. Например, перед выгрузкой страниц из рабочего набора диспетчер памяти может отслеживать, к каким страницам более часто был доступ или более недавно был доступ посредством процесса, и эти страницы могут быть загружены ранее, чем другие страницы.
[0052] Например, первая группа страниц может быть определена как получившая доступ в определенный период времени (например, за последние 5 секунд перед приостановкой приложения), вторая группа страниц может быть определена как получившая доступ в следующий период времени (например, между 5 и 10 секундами), третья группа может быть определена как получившая доступ с последующим периодом времени (например, между 10 и 15 секундами) и т.д. Тогда, когда решение принимается для загрузки страниц, первая группа может быть загружена первой, вторая группа может быть загружена после первой группы, третья группа может быть загружена после второй группы и т.д. Такая оптимизация может гарантировать, что процесс становится, по меньшей мере частично, активным и более быстро используемым пользователем, учитывая, что те страницы, к которым последний раз обеспечивается доступ посредством процесса перед выгрузкой, являются теми, которые загружаются вначале.
[0053] На этапе 510 освобождаются зарезервированные местоположения для выгруженных страниц в файле подкачки. В некоторых вариантах осуществления освобождение зарезервированных местоположений может также быть выполнено в случаях, когда на этапе 506 делается определение, что страницы, которые должны быть загружены, не были записаны в свои зарезервированные местоположения в файле подкачки.
[0054] ФИГ. 6 изображает примерный процесс для динамического управления файлом подкачки в соответствии с вариантами осуществления. В некоторых вариантах осуществления этот процесс выполняется компонентом OS 208, таким как диспетчер 304 памяти. На этапе 602 инициализируется файл подкачки. В некоторых вариантах осуществления файл подкачки инициализируется с предварительно определенным размером (например, 256 МБ), когда загружается вычислительная система. В других вариантах осуществления файл подкачки инициализируется, когда диспетчер памяти определяет, что операции выгрузки должны происходить и могут быть инициализированы с начальным размером, достаточным для сопоставления страниц, которые должны быть подкачены.
[0055] Когда диспетчер памяти (или другой компонент OS) работает, определение может быть сделано, выгружать ли одну или более страниц на этапе 604 из рабочего набора выполнения процесса, выполняющегося в физической памяти, как описано выше с ссылкой на ФИГ. 4A. На этапе 606 может затем быть сделано определение, необходимо ли дополнительное пространство в файле подкачки для вмещения выгруженных страниц, если они были записаны в файл подкачки. Если необходимо больше пространства, то размер файла подкачки может быть динамически увеличен на этапе 608. В некоторых вариантах осуществления решение на увеличение размера файла подкачки может быть основано на диспетчере памяти, принимающем запросы на подкачку страницы, которая не может быть вмещена при данном текущем размере файла подкачки. Кроме того, некоторые варианты осуществления могут обеспечивать максимальный размер файла подкачки. В некоторых вариантах осуществления начальный размер файла подкачки и/или динамические изменения в его размере могут быть, по меньшей мере частично, определены размером и/или типом процессов, выполняющихся в системе.
[0056] На этапе 610 выполняются операции выгрузки и/или операции записи, как описано выше. В некоторый момент позже делается определение на этапе 612, загружать ли одну или более выгруженных страниц, и зарезервированные местоположения для одной или более страниц в файле подкачки освобождаются на этапе 614. Загрузка и освобождение зарезервированных местоположений могут продолжаться, как описано выше с ссылкой на ФИГ. 5. На этапе 616 может быть принято решение, что меньше пространства необходимо для файла подкачки после, например, операции загрузки на этапе 612 и освобождения зарезервированных местоположений на этапе 614. В таких ситуациях размер файла подкачки может быть динамически уменьшен на этапе 618. В некоторых вариантах осуществления принимается решение уменьшить размер файла подкачки на основании определения, что загрузка страниц для одного или более процессов уменьшает необходимость в пространстве файла подкачки. В некоторых вариантах осуществления свободное пространство в файле подкачки может быть повторно использовано для последующих записей выгруженных страниц посредством диспетчера памяти и диспетчер памяти может повторно использовать пространство файла подкачки способом, который минимизирует фрагментацию (например, так, что страницы предпочтительно сохраняются в больших, более смежных блоках и/или в последовательном порядке виртуальных адресов).
[0057] Поскольку варианты осуществления стремятся выполнять операции подкачки с большими считываниями и записями последовательно упорядоченных кластеров страниц, это может быть выгодным для самого файла подкачки, который менее фрагментируется и является более непрерывным во вторичном устройстве хранения. С этой целью в некоторых вариантах осуществления, когда диспетчер памяти определяет, что больше пространства файла подкачки необходимо, он может запрашивать дополнительное пространство у операционной системы в некотором размере блока (например, 128 МБ), который больше, чем величина, на которую файл подкачки сокращается (например, 64 МБ). Запрашивая дополнительное пространство в больших блоках, варианты осуществления могут уменьшать возможность внешней фрагментации файла подкачки, учитывая, что файловая система пытается найти запрашиваемое дополнительное пространство файла подкачки в непрерывном пространстве (или меньшем количестве смежных блоков пространства) во вторичном устройстве хранения.
[0058] Кроме того, учитывая желательность непрерывного файла подкачки, варианты осуществления используют файл подкачки, который является отдельным от файла страничного обмена, как показано на Фиг. 3. Использование отдельного, специального файла подкачки может увеличить возможность, что файл подкачки создается и/или расширяется в качестве единого непрерывного блока (или меньших смежных блоков). Хотя некоторые варианты осуществления поддерживают использование файла страничного обмена для операций подкачки, описанных в настоящем описании, такой сценарий может увеличивать возможность, что файл подкачки может стать внешне фрагментированным и поэтому менее подверженным большим, последовательным операциям I/O при заданных произвольных и не-непрерывным способом обычных способов страничного обмена, которые использует файл страничного обмена. Варианты осуществления поэтому поддерживают использование отдельного, специализированного файла подкачки для увеличения эффективности операций I/O, давая увеличенный шанс для больших, более последовательных операций I/O от использования отдельного файла подкачки.
[0059] Дополнительно, варианты осуществления могут поддерживать файл подкачки, который является отдельным, но не-непрерывным, распределенным среди некоторого числа сегментов во вторичном устройстве хранения. Некоторые варианты осуществления могут поддерживать максимальное количество таких сегментов (например, пять) для гарантии, что файл подкачки не является полностью не непрерывным. В некоторых вариантах осуществления единственный файл подкачки может использоваться для подкачки страниц из всех процессов относительно вычислительной системы. В других вариантах осуществления отдельные файлы подкачки могут использоваться для индивидуальных процессов или для групп процессов относительно вычислительной системы.
Заключение
[0060] Хотя способы были описаны на языке, специфичном для структурных признаков и/или методологических действий, необходимо понимать, что приложенная формула изобретения не обязательно ограничивается конкретными признаками или описанными действиями. Вместо этого конкретные признаки и действия описываются в качестве примерных реализаций таких способов.