УРОВЕНЬ ТЕХНИКИ
[0001] Современные мобильные устройства, в особенности, современные низкопроизводительные мобильные устройства, с трудом справляются с многозадачными сценариями. Часто бывает так, что в условиях конкуренции, мобильные устройства приходится изготавливать с использованием низкопроизводительных и/или маломощных деталей. Это справедливо, в частности, в отношении памяти, используемой для реализации мобильных устройств, которая включает в себя как оперативную память (RAM), так и мультимедийные карты (MMC). В конечном итоге, традиционные мобильные устройства, которые опираются на подкачку для диспетчеризации памяти, очень быстро отказывают при попытке одновременно выполнять несколько процессов. Это приводит к очень плохим ощущениям пользователя и неполноценным многозадачным сценариям. Эта проблема приобретает особую значимость по мере того, как приложения и операционные системы, разрабатываемые для мобильных устройств, увеличиваются в размерах, в то время как рынок требует снижения производственных затрат.
[0002] Прежде проблема недостатка памяти для поддержки одновременного выполнения нескольких процессов на мобильном устройстве решалась одним или более из следующих способов: использования подкачки для диспетчеризации памяти; обеспечения дополнительной памяти на мобильном устройстве; и установления ограничений на размер приложений и операционных систем. Как упомянуто выше, подкачка может приводить к очень плохим ощущениям пользователя и неполноценным многозадачным сценариям. Обеспечение дополнительной памяти повышает стоимость, сложность и энергопотребление мобильного устройства. Установление ограничений на размер приложений и операционных систем чрезвычайно усложняет разработку и предоставление пользователям желаемых функциональных возможностей. Хотя бы по этим причинам, существующих решений по диспетчеризации памяти для мобильных устройств недостаточно. Усовершенствованные методы диспетчеризации памяти необходимы, чтобы современные мобильные устройства могли одновременно выполнять несколько процессов, не оказывая при этом негативного влияния на ощущения пользователя, и для обеспечения самых разнообразных многозадачных сценариев.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Здесь описаны системы, способы, устройства и компьютерные программные продукты, которые позволяют отслеживать использование различных ресурсов, например, энергозависимой и энергонезависимой памяти, центрального процессора (CPU), ввода/вывода (I/O), сети, питания и датчиков, приложениями, выполняющимися на вычислительном устройстве, например, мобильном вычислительном устройстве. Преимущество описанных здесь методов состоит в возможности отслеживать использование ресурсов для приложения путем отслеживания ресурсов, используемых процессом переднего плана, связанным с приложением (например, процесс, который в данный момент обеспечивает пользовательский интерфейс для приложения и занимает, по меньшей мере, часть дисплея связанный с вычислительным устройством), а также одной или более фоновыми задачами, связанными с приложением, которые выполняются как отдельные процессы на вычислительном устройстве. Исторические данные, относящиеся к использованию ресурсов приложением, применяются для прогнозирования величины использования ресурсов для приложения, которая затем сохраняется. Последующий запуск приложения может осуществляться в зависимости от того, доступна ли прогнозируемая величина использования ресурсов. Если прогнозируемая величина использования ресурсов доступна, она может выделяться приложению, и приложение может запускаться. Если приложение использует ресурсы сверх прогнозируемой величины, другие процессы, выполняющиеся одновременно с ним, могут завершаться для освобождения ресурсов. Независимо от того, как осуществляется приложение, получаются новые данные использования ресурсов для приложения, которые затем используются для корректировки прогнозируемой величины использования ресурсов. Таким образом, выделение ресурсов для приложения может автоматически точно подстраиваться под пользователя в течение времени на основании его схем использования, и вычислительное устройство способно обеспечивать улучшенные ощущения пользователя и повышенную производительность, особенно в многозадачных сценариях. Для вычислительного устройства, которое поддерживает несколько пользователей, прогнозируемые величины использования ресурсов могут сохраняться для каждой комбинации пользователь/приложение.
[0004] Описанные здесь системы, способы, устройства и компьютерные программные продукты также способны отслеживать другую информацию, относящуюся к использованию ресурсов приложением и/или пользователем, например, времена, положения и события, связанные с конкретными режимами использования ресурсов. Такую информацию можно преимущественно использовать для прогностического выделения ресурсов вычислительного устройства приложению даже до того, как пользователь попытается запустить его. Кроме того, приложения и/или данные приложения можно загружать в память в момент времени, предшествующий предполагаемому обращению к ним пользователя.
[0005] В частности, здесь описан способ, осуществляемый вычислительным устройством для диспетчеризации его ресурса. Ресурс может содержать, например, по меньшей мере, один из ресурса энергозависимой или энергонезависимой памяти, ресурса CPU, ресурса I/O, сетевого ресурса, ресурса питания и ресурса датчика. В соответствии со способом, определяется первая величина ресурса, который используется первым экземпляром приложения, выполняющегося на вычислительном устройстве. Определение первой величины может включать в себя определение величины ресурса, который используется процессом переднего плана, связанным с первым приложением и одной или более фоновыми задачами, связанными с первым экземпляром приложения. Первая прогнозируемая величина использования ресурсов для приложения вычисляется на основании, по меньшей мере, первой величины. Первая прогнозируемая величина использования ресурсов сохраняется в хранилище данных. Затем вторая величина ресурса, подлежащего выделению второму экземпляру приложения, подлежащего выполнению вычислительным устройством, определяется на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов, хранящейся в хранилище данных.
[0006] В одном варианте осуществления вышеупомянутого способа, вычисление первой прогнозируемой величины использования ресурсов для приложения на основании, по меньшей мере, первой величины включает в себя получение максимальной величины использования ресурсов для приложения путем сравнения первой величины с одной или более ранее определенных величин, связанных с одним или более ранее выполненными экземплярами приложения, и вычисление первой прогнозируемой величины использования ресурсов на основании максимальной величины использования ресурсов.
[0007] В альтернативном варианте осуществления, вычисление первой прогнозируемой величины использования ресурсов для приложения на основании, по меньшей мере, первой величины включает в себя получение средней величины использования ресурсов для приложения на основании первой величины и одной или более ранее определенных величин, связанных с ранее выполненными экземплярами приложения, и вычисление первой прогнозируемой величины использования ресурсов на основании средней величины использования ресурсов. Также в соответствии с этим вариантом осуществления, получение средней величины использования ресурсов для приложения может включать в себя умножение первой величины на первый весовой коэффициент для получения первого произведения, умножение величины скользящего среднего, полученной на основании, по меньшей мере, одной или более ранее определенных величин, на второй весовой коэффициент для получения второго произведения, и суммирование первого произведения и второго произведения. Первый весовой коэффициент может быть больше, меньше или равен второму весовому коэффициенту в зависимости от реализации.
[0008] Вышеупомянутый способ также может включать в себя определение, что вторая величина ресурса в данный момент недоступна, и, в соответствии с этим, осуществление некоторых действий, например, воспрепятствования выполнению второго экземпляра приложения и/или завершения одного или более процессов, которые в данный момент выполняются на вычислительном устройстве.
[0009] Вышеупомянутый способ может дополнительно включать в себя определение, что величина ресурса, используемого вторым экземпляром приложения, выполняющегося на вычислительном устройстве, превышает вторую величину, и, в соответствии с этим, завершение одного или более процессов, которые одновременно выполняются на вычислительном устройстве.
[0010] В другом варианте осуществления вышеупомянутого способа, этапы определения, вычисления и сохранения включают в себя определение первой величины ресурса, который используется первым экземпляром приложения, выполняющегося на вычислительном устройстве со стороны первого пользователя, вычисление первой прогнозируемой величины использования ресурсов для приложения и первого пользователя на основании, по меньшей мере, первой величины, сохранение первой прогнозируемой величины использования ресурсов в хранилище данных и определение второй величины ресурса, подлежащего выделению второму экземпляру приложения, подлежащего выполнению вычислительным устройством со стороны первого пользователя на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов, хранящейся в хранилище данных. В соответствии с этим вариантом осуществления, способ дополнительно включает в себя определение третьей величины ресурса, который используется третьим экземпляром приложения, выполняющегося на вычислительном устройстве со стороны второго пользователя, вычисление второй прогнозируемой величины использования ресурсов для приложения и второго пользователя на основании, по меньшей мере, третьей величины, сохранение второй прогнозируемой величины использования ресурсов в хранилище данных и определение четвертой величины ресурса, подлежащего выделению четвертому экземпляру приложения, подлежащего выполнению вычислительным устройством со стороны второго пользователя на основании, по меньшей мере, второй прогнозируемой величины использования ресурсов, хранящейся в хранилище данных.
[0011] Здесь также описан компьютерный программный продукт. Компьютерный программный продукт включает в себя компьютерно-считываемую память, в которой записана компьютерная программная логика, которая при выполнении, по меньшей мере, одним процессором вычислительного устройства, предписывает, по меньшей мере, одному процессору осуществлять операции. Операции включают в себя прием запроса на запуск приложения, получение прогнозируемой величины использования ресурсов для приложения, причем прогнозируемая величина использования ресурсов основана на отслеживаемом использовании ресурса вычислительного устройства в ходе одного или более предыдущих выполнений приложения вычислительным устройством, определение, доступна ли достаточная величина ресурса, путем сравнения прогнозируемой величины использования ресурсов с величиной ресурса, которая доступна в данный момент, и разрешение приложению запускаться в соответствии с, по меньшей мере, определением, что доступна достаточная величина ресурса. Ресурс может содержать один из ресурс энергозависимой или энергонезависимой памяти, ресурса CPU, ресурса I/O, сетевого ресурса, ресурса питания и ресурса датчика. Отслеживаемое использование ресурса для приложения может предполагать отслеживаемое использование ресурса процессом переднего плана, связанным с приложением, и одной или более фоновыми задачами, связанными с приложением.
[0012] В одном варианте осуществления вышеупомянутого компьютерного программного продукта, операции дополнительно включают в себя запрещение приложению запускаться в соответствии с, по меньшей мере, определением, что доступна недостаточная величина ресурса.
[0013] В другом варианте осуществления, операции дополнительно включают в себя предписание одному или более процессам завершаться в соответствии с, по меньшей мере, определением, что доступна недостаточная величина ресурса.
[0014] В еще одном варианте осуществления, операции дополнительно включают в себя, в ответ на определение, что величина ресурса, используемого приложением после запуска, превышает прогнозируемую величину использования ресурсов, завершение одного или более процессов, которые одновременно выполняются на вычислительном устройстве.
[0015] В еще одном варианте осуществления, этап приема включает в себя прием запроса на запуск приложения со стороны первого пользователя, и этап получения включает в себя получение прогнозируемой величины использования ресурсов для приложения и первого пользователя.
[0016] Здесь также описана система, реализованная на вычислительном устройстве. Система включает в себя, по меньшей мере, один процессор и память, к которой может осуществлять доступ, по меньшей мере, один процессор. В памяти хранятся компоненты для выполнения, по меньшей мере, одним процессором. Компоненты включают в себя диспетчер ресурсов, выполненный с возможностью отслеживания схемы использования, по меньшей мере, одного ресурса вычислительного устройства одним или более приложением и пользователем, для сохранения информации, связанной со схемой использования, и использования сохраненной информации для прогностического выделения, по меньшей мере, части ресурса, по меньшей мере, одному процессу до его выполнения, по меньшей мере, одним процессором. По меньшей мере, один ресурс может включать в себя ресурс энергозависимой или энергонезависимой памяти, ресурс CPU, ресурс I/O, сетевой ресурс, ресурс питания и ресурс датчика.
[0017] В одном варианте осуществления вышеупомянутой системы, диспетчер ресурсов выполнен с возможностью прогностического выделения, по меньшей мере, части ресурса приложению до того, как пользователь вычислительного устройства или какой-либо другой субъект запустит приложение. В другом варианте осуществления вышеупомянутой системы, в которой, по меньшей мере, один ресурс содержит память, диспетчер ресурсов дополнительно выполнен с возможностью загрузки, по меньшей мере, части приложения или данных, связанных с приложением, в прогностически выделяемую память до того, как пользователь вычислительного устройства или какой-либо другой субъект запустит приложение.
[0018] Эта сущность изобретения призвана представлять в упрощенной форме основные принципы, которые дополнительно описаны в нижеследующем подробном описании. Эта сущность изобретения не призвана идентифицировать ключевые признаки или существенные признаки заявленного изобретения, а также не подлежит использованию для ограничения объема заявленного изобретения. Кроме того, заметим, что заявленный предмет изобретения не ограничивается конкретными вариантами осуществления, описанными в подробном описании и/или других разделах этого документа. Такие варианты осуществления представлены здесь исключительно в целях иллюстрации. Дополнительные варианты осуществления будут очевидны специалистам в данной области техники на основании изложенных здесь принципов.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0019] Прилагаемые чертежи, которые включены сюда и образуют часть описания изобретения, иллюстрируют варианты осуществления настоящего изобретения и, совместно с описанием, дополнительно служат для объяснения принципов изобретения и для того, чтобы специалист в данной области техники мог использовать изобретение.
[0020] Фиг. 1 - блок-схема вычислительного устройства, которое осуществляет диспетчеризацию ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя, в соответствии с вариантом осуществления.
[0021] Фиг. 2 - блок-схема операций способа, осуществляемого вычислительным устройством для диспетчеризации его ресурса в соответствии с профилем использования ресурсов, зависящим от устройства или зависящим от пользователя, в соответствии с вариантом осуществления.
[0022] Фиг. 3 - блок-схема операций способа вычисления прогнозируемой величины использования ресурсов для приложения в соответствии с одним вариантом осуществления.
[0023] Фиг. 4 - блок-схема операций способа вычисления прогнозируемой величины использования ресурсов для приложения в соответствии с другим вариантом осуществления.
[0024] Фиг. 5 - блок-схема операций способа получения средней величины использования ресурсов для приложения в соответствии с вариантом осуществления.
[0025] Фиг. 6 - блок-схема операций дополнительных этапов, которые могут осуществляться в соответствии со способом, представленным в блок-схеме операций, показанной на фиг. 2.
[0026] Фиг. 7 - блок-схема операций дополнительных этапов, которые могут осуществляться в соответствии со способом, представленным в блок-схеме операций, показанной на фиг. 2.
[0027] Фиг. 8 - блок-схема операций дополнительных этапов, которые могут осуществляться в соответствии со способом, представленным в блок-схеме операций, показанной на фиг. 2.
[0028] Фиг. 9 - блок-схема операций способа, осуществляемого вычислительным устройством для диспетчеризации его ресурса в соответствии с профилем использования ресурсов, зависящим от пользователя, в соответствии с вариантом осуществления.
[0029] Фиг. 10 - блок-схема операций способа диспетчеризации запуска приложения в соответствии с профилем использования ресурсов, зависящим от устройства или зависящим от пользователя, в соответствии с вариантом осуществления.
[0030] Фиг. 11 - блок-схема операций способа для использования отслеживаемого использования ресурсов схемы пользователя в отношении ресурсов вычислительного устройства и выведенной из него информации для прогностического выделения ресурсов процессам.
[0031] Фиг. 12 - блок-схема операций одного способа позволяющего приложению, выполняющемуся на вычислительном устройстве, помогать в диспетчеризации выделения ресурсов вычислительного устройства процессу переднего плана и одной или более фоновым задачам, связанным с приложением.
[0032] Фиг. 13 - блок-схема операций другого способа позволяющего приложению, выполняющемуся на вычислительном устройстве, помогать в диспетчеризации выделения ресурсов вычислительного устройства процессу переднего плана и одной или более фоновым задачам, связанным с приложением.
[0033] Фиг. 14 - блок-схема иллюстративного мобильного устройства, которое можно использовать для реализации различных вариантов осуществления.
[0034] Фиг. 15 - блок-схема иллюстративной процессорной компьютерной системы, которую можно использовать для реализации различных вариантов осуществления.
[0035] Признаки и преимущества настоящего изобретения явствуют из изложенного ниже подробного описания, приведенного совместно с чертежами, в котором аналогичные ссылочные позиции идентифицируют соответствующие элементы на всем своем протяжении. В чертежах, аналогичные ссылочные позиции, в общем случае, указывают идентичные, функционально аналогичные и/или структурно аналогичные элементы. Чертеж, в котором впервые появляется элемент, указан самой(ыми) левой(ыми) цифрой(ами) в соответствующей ссылочной позиции.
ПОДРОБНОЕ ОПИСАНИЕ
I. ВВЕДЕНИЕ
[0036] Нижеследующее подробное описание приведено со ссылкой на прилагаемые чертежи, где представлены иллюстративные варианты осуществления настоящего изобретения. Однако объем настоящего изобретения не ограничивается этими вариантами осуществления, но, вместо этого, задается нижеследующей формулой изобретения. Таким образом, варианты осуществления помимо представленных в прилагаемых чертежах, например, модифицированные версии проиллюстрированных вариантов осуществления, тем не менее, могут охватываться настоящим изобретением.
[0037] В описании изобретения ссылки на "один вариант осуществления", "вариант осуществления", "иллюстративный вариант осуществления" и т.п., указывают, что описанный вариант осуществления может включать в себя конкретный признак, структура или характеристику, но не обязательно, чтобы каждый вариант осуществления включал в себя конкретный признак, структуру или характеристику. Кроме того, такие выражения не обязательно относятся к одному и тому же варианту осуществления. Кроме того, когда конкретный признак, структура или характеристика описан(а) в связи с вариантом осуществления, считается, что специалистам в данной области техники известно, как реализовать такой(ую) признак, структуру или характеристику в связи с другими вариантами осуществления, даже если они в явном виде не описаны.
[0038] Здесь описаны системы, способы, устройства и компьютерные программные продукты, которые позволяют отслеживать использование различных ресурсов, например, энергозависимой и энергонезависимой памяти, CPU, I/O, сети, питания и датчиков, приложениями, выполняющимися на вычислительном устройстве, например, мобильном вычислительном устройстве. Преимущество описанных здесь методов состоит в возможности отслеживать использование ресурсов для приложения путем отслеживания ресурсов, используемых процессом переднего плана, связанным с приложением (например, процесс, который обеспечивает пользовательский интерфейс с приложением и может исключительно занимать дисплей, связанный с вычислительным устройством), а также одной или более фоновыми задачами, связанными с приложением, которые выполняются как отдельные процессы на вычислительном устройстве. Исторические данные, относящиеся к использованию ресурсов приложением, применяются для прогнозирования величины использования ресурсов для приложения, которая затем сохраняется. Последующий запуск приложения может осуществляться в зависимости от того, доступна ли прогнозируемая величина использования ресурсов. Если прогнозируемая величина использования ресурсов доступна, она может выделяться приложению, и приложение может запускаться. Если приложение использует ресурсы сверх прогнозируемой величины, другие процессы, выполняющиеся одновременно с ним, могут завершаться для освобождения ресурсов. Независимо от того, как осуществляется приложение, получаются новые данные использования ресурсов для приложения, которые затем используются для корректировки прогнозируемой величины использования ресурсов. Таким образом, выделение ресурсов для приложения может автоматически точно подстраиваться под пользователя в течение времени на основании его схем использования, и вычислительное устройство способно обеспечивать улучшенные ощущения пользователя и повышенную производительность, особенно в многозадачных сценариях. Для вычислительного устройства, которое поддерживает несколько пользователей, прогнозируемые величины использования ресурсов могут сохраняться для каждой комбинации пользователь/приложение.
[0039] Описанные здесь системы, способы, устройства и компьютерные программные продукты также способны отслеживать другую информацию, относящуюся к использованию ресурсов приложением и/или пользователь, например, времена, положения и события, связанные с конкретными режимами использования ресурсов. Такую информацию можно преимущественно использовать для прогностического выделения ресурсов вычислительного устройства приложению даже до того, как пользователь попытается запустить его. Кроме того, приложения и/или данные приложения можно загружать в память в момент времени, предшествующий предполагаемому обращению к ним пользователя.
[0040] В разделе II описано иллюстративное вычислительное устройство, которое осуществляет диспетчеризацию ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя, в соответствии с вариантом осуществления, а также соответствующие способы. В разделе III описано, как иллюстративное вычислительное устройство, описанное в разделе II, также может обеспечивать динамическую диспетчеризацию ресурсов для многопроцессных приложений. В разделе IV описано иллюстративное мобильное устройство, которое может осуществлять описанные здесь признаки диспетчеризации ресурсов. В разделе V описан иллюстративный настольный компьютер, который может осуществлять описанные здесь признаки диспетчеризации ресурсов. В разделе VI приведены некоторые замечания.
II. Иллюстративные система и способы осуществления диспетчеризация ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя
[0041] На фиг. 1 показана блок-схема вычислительного устройства 100, которое осуществляет диспетчеризацию ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя, в соответствии с вариантом осуществления. Вычислительное устройство 100, в общем случае, предназначено для представления процессорного электронного устройства, которое способно выполнять приложения со стороны пользователя. В одном варианте осуществления, вычислительное устройство 100 содержит мобильное вычислительное устройство, например мобильный телефон (например, смартфон), портативный компьютер, планшетный компьютер или нетбук. Вычислительное устройство 100, предположительно, может содержать другие типы мобильных вычислительных устройств, например, носимый компьютер (например, наголовный компьютер), портативный медиапроигрыватель, карманный персональный компьютер, персональный навигатор, карманную игровую консоль или любое другое мобильное устройство, способное выполнять приложения со стороны пользователя. Один пример мобильного устройства, которое может воплощать в себе функциональные возможности вычислительного устройства 100, будет рассмотрен ниже со ссылкой на фиг. 14. В другом варианте осуществления, вычислительное устройство 100 содержит настольный компьютер или другую немобильную вычислительную платформу, которая способна выполнять приложения со стороны пользователя. Иллюстративный настольный компьютер, которое может воплощать в себе функциональные возможности вычислительного устройства 100, будет рассмотрен ниже со ссылкой на фиг. 15.
[0042] Как показано на фиг. 1, вычислительное устройство 100 включает в себя приложение 102, операционную систему 104 и хранилище 106 данных. В одном варианте осуществления, каждое из приложения 102 и операционной системы 104 содержат программные компоненты, которые хранятся в памяти вычислительного устройства 100 и выполняются из нее процессором (например, микропроцессором или другой схемой, выполненной с возможностью выполнения команд), которое подключено с возможностью передачи данных к памяти. Такие память и процессор содержат часть вычислительного устройства 100, но не показаны на фиг. 1 исключительно для простоты. Также в соответствии с таким вариантом осуществления, приложение 102 и операционная система 104 могут постоянно храниться в энергонезависимой памяти вычислительного устройства 100 и затем временно переноситься в энергозависимую память вычислительного устройства 100 для выполнения из нее процессором при подаче питания на вычислительное устройство 100.
[0043] Приложение 102 предназначено для представления любой из самых разнообразных компьютерных программ, которые могут быть установлены и выполняться на вычислительном устройстве 100 для осуществления функций и/или обеспечения признаков со стороны его пользователя. Приложение 102 может представлять собой, в порядке примера и без какого бы то ни было ограничения, приложение телефонии, приложение электронной почты, приложение обмена сообщениями, приложение веб-обозревания, приложение календаря, приложение коммунальных услуг, игровое приложение, приложение социальной сети, музыкальное приложение, приложение производительности, приложение стиля жизни, приложение ссылки, приложение путешествия, спортивное приложение, навигационное приложение, приложение здравоохранения и фитнеса, новостное приложение, приложение фотографии, финансовое приложение, деловое приложение, образовательное приложение, приложение прогноза погоды, приложение электронной книги, медицинское приложение и т.п.
[0044] Операционная система 104 содержит набор компьютерных программ, которые совместно диспетчеризуют ресурсы и обеспечивают общие службы для приложений, выполняющихся на вычислительном устройстве 100. Как показано на фиг. 1, операционная система 104 включает в себя драйверы 110, ядро 120 и системные службы 130. Драйверы 110 содержат компоненты которые позволяют операционной системе 104 взаимодействовать с различными аппаратными ресурсами вычислительного устройства 100, например, CPU, системной памятью и устройствами I/O. Ядро 120 использует драйверы 110 для диспетчеризации таких аппаратных ресурсов и других ресурсов вычислительного устройства 100 и для того, чтобы другие программы могли выполняться и использовать эти ресурсы. Ядро 120 может осуществлять такие операции, как выделение процессов CPU, выделение системной памяти конкретному процессу и выделение запросов I/O надлежащим устройствам. Системные службы 130 представляют собой компоненты, которые действуют для обслуживания запросов от приложений для различных ресурсов, которые могут выделяться ядром 120.
[0045] Как показано на фиг. 1, ядро 120 включает в себя диспетчер 122 памяти. Диспетчер 122 памяти управляет тем, как системная память вычислительного устройства 100 используется и осуществляет операции, которые позволяют другим процессам, при необходимости, обращаться к системной памяти. Помимо других операций, диспетчер 122 памяти может поддерживать схему виртуальной адресации и осуществлять подкачку, чтобы процессы могли использовать больше системной памяти, чем физически доступно. Для диспетчеризации системной памяти, диспетчер 122 памяти взаимодействует с драйвером 112 памяти, который является одним из драйвером 110.
[0046] Как дополнительно показано на фиг. 1, системные службы 130 включают в себя диспетчер 132 ресурсов. Как будет рассмотрено здесь более подробно, диспетчер 132 ресурсов представляет собой компонент, который действует для определения величины ресурса, подлежащего выделению приложению, причем такое определение может базироваться на профиле использования ресурсов для приложения и для выделения величины ресурса, если он доступен. В нижеследующем описании, предполагается, что ресурс, подлежащий выделению приложению, является системной памятью, однако следует понимать, что описанные здесь методы диспетчеризации ресурсов легко расширить на любой другой ресурс вычислительного устройства 100, в том числе, но без ограничения CPU, энергозависимую память, отличную от системной памяти, энергонезависимую память, сетевой ресурс, ресурс I/O, ресурс питания (например, батарейное питание или питание от какого-либо другого источника питания), и ресурс датчика (например, камеру или микрофон).
[0047] Хранилище 106 данных содержит совокупность данных, которые хранятся в энергозависимой или энергонезависимой памяти вычислительного устройства 100. Как объяснено здесь, хранилище 106 данных используется диспетчером 132 ресурсов для сохранения профили использования ресурсов для приложений, которые могут устанавливаться и выполняться на вычислительном устройстве 100. В соответствии с некоторыми иллюстративными реализациями, хранилище 106 данных может содержать регистр или базы данных.
[0048] Когда нужно запустить приложение 102 (например, в соответствии с его активацией пользователем или каким-либо другим событием), один или более вызовов системной службы совершаются со стороны приложения 102 системным службам 130 для запрашивания, чтобы приложению 102 выделялись ресурсы, которые необходимы для правильного выполнения приложения 102. В соответствии с вызовом(ами), диспетчер 132 ресурсов действует для определения, если необходимые ресурсы доступны, и, если такие ресурсы доступны, для предписания их выделения приложению 102.
[0049] В случае системной памяти, диспетчер 132 ресурсов определяет величину системной памяти для выделения приложению 102 при попытке осуществления доступа к профилю использования ресурсов для приложения 102, который может храниться в хранилище 106 данных. Согласно варианту осуществления, такой профиль использования ресурсов для приложения 102 включает в себя прогнозируемую величину использования ресурсов, которая указывает величину системной памяти, которую приложение 102, предположительно, будет использовать при выполнении. Альтернативно, профиль использования ресурсов для приложения 102 может включать в себя данные, из которых можно вывести такую прогнозируемую величину использования ресурсов. В дополнительном варианте осуществления, в отсутствие профиля использования ресурсов для приложения 102 в хранилище 106 данных, принятая по умолчанию прогнозируемая величина использования ресурсов может быть назначена приложению 102. Такая принятая по умолчанию прогнозируемая величина использования ресурсов могут быть одинакова для всех приложений или может изменяться в зависимости от типа приложения.
[0050] Как только диспетчер 132 ресурсов определяет прогнозируемую величину использования ресурсов для приложения 102, диспетчер 132 ресурсов осуществляет связь с диспетчером 122 памяти для определения, доступна ли прогнозируемая величина использования ресурсов в данный момент. Если прогнозируемая величина использования ресурсов в данный момент доступна, то диспетчер 132 ресурсов выделяет прогнозируемую величину использования ресурсов приложению 102, и выполнение приложения 102 может быть разрешено. Однако, если прогнозируемая величина использования ресурсов в данный момент недоступна, то диспетчер 132 ресурсов может препятствовать выполнению приложения 102. Кроме того, если прогнозируемая величина использования ресурсов в данный момент недоступна, диспетчер 132 ресурсов также может завершать один или более других процессов, которые в данный момент выполняются на вычислительном устройстве для освобождения системной памяти для приложения 102. Такие другие процессы могут быть процессами, которым назначен более низкий приоритет, чем приложению 102 в соответствии со схемой приоритетов процессов. Как только таким образом возвращена достаточная системная память, диспетчер 132 ресурсов может разрешать выполнение приложения 102.
[0051] После начала выполнения приложения 102, диспетчер 132 ресурсов отслеживает, насколько системная память фактически используется приложением 102. Таким образом, диспетчер 132 ресурсов может определить, что приложение 102 использует больше системной памяти, чем первоначально выделено ему в соответствии с прогнозируемой величиной использования ресурсов. В этом случае, диспетчер 132 ресурсов может попытаться завершить один или более процессов, которые одновременно выполняются на вычислительном устройстве 100, чтобы гарантировать, что для правильного выполнения, приложению 102 доступна достаточная системная память. Диспетчер 132 ресурсов также может завершать выполнение приложения 102, если он определяет, что приложение 102 использует системную память сверх заранее заданного верхнего предела, или же определяет, что величина использования системной памяти приложением 102 недопустима.
[0052] Диспетчер 132 ресурсов также будет использовать информацию, полученную отслеживанием, насколько системная память используется приложением 102 для обновления прогнозируемой величины использования ресурсов, хранящейся в хранилище 106 данных для приложения 102. Различные алгоритмы для обновления прогнозируемой величины использования ресурсов будут подробно описаны ниже. Таким образом, диспетчер 132 ресурсов может автоматически точно настраивать выделение ресурсов для приложения 102 в течение времени в соответствии с тем, как приложение 102 ведет себя и используется пользователем вычислительного устройства 100. Это благоприятно позволяет вычислительному устройству 100 обеспечивать улучшенные ощущения пользователя и повышенную производительность, особенно в многозадачных сценариях.
[0053] Каким образом диспетчер 132 ресурсов действует для диспетчеризации ресурса вычислительного устройства 100 в соответствии с профилем использования ресурсов, зависящим от устройства или зависящим от пользователя, будет описано ниже со ссылкой на блок-схему 200 операций, показанной на фиг. 2. Хотя этапы блок-схемы 200 операций будут описаны по-прежнему со ссылкой на компоненты вычислительного устройства 100, показанные на фиг. 1, следует понимать, что способ может осуществляться совершенно другими компонентами.
[0054] Как показано на фиг. 2, способ согласно блок-схеме 200 операций начинается с этапа 202, на котором диспетчер 132 ресурсов определяет первую величину ресурса, который используется первым экземпляром приложения, выполняющегося на вычислительном устройстве 100. Например, как упомянуто выше, диспетчер 132 ресурсов может определять первую величину системной памяти, которая используется первым экземпляром приложения 102, в то время как первый экземпляр приложения 102 выполняется вычислительным устройством 100.
[0055] Согласно варианту осуществления, диспетчер 132 ресурсов определяет первую величину путем определения величины ресурса, который используется процессом переднего плана, связанным с первым экземпляром приложения, и одной или более фоновыми задачами, связанными с первым экземпляром приложения. Процесс переднего плана может быть процессом, который в данный момент обеспечивает пользовательский интерфейс для первого экземпляра приложения и занимает, по меньшей мере, часть дисплея связанный с вычислительное устройство 100. Однако выполнение многих современных приложений также предполагает выполнение одного или более фоновых процессов (также именуемых здесь фоновыми задачами). Такие фоновые задачи могут выполняться одновременно с процессом переднего плана и в ряде случаев могут инициироваться процессом переднего плана. Примеры таких фоновых задач включают в себя, но без каких-либо ограниченный, генерирование фонового аудиосигнала, осуществление голосового вызова по интернет-протоколу (VoIP), синхронизацию электронной почты, обобществление контента и т.п. Как и процесс переднего плана, эти фоновые задачи расходуют системные ресурсы. Однако традиционные указания использования ресурсов приложением обычно не охватывают ресурсы, расходуемые такими фоновыми задачами. Вариант осуществления, преимущественно, решают эту проблему путем отслеживания использования ресурсов как процессом переднего плана, связанным с выполняющимся приложением, и одной или более фоновыми задачами, связанными с тем же приложением, и объединения обоих типов использования ресурсов для получения суммарной величины использования ресурсов для приложения.
[0056] На этапе 204, диспетчер 132 ресурсов вычисляет первую прогнозируемую величину использования ресурсов для приложения на основании, по меньшей мере, первой величины. Например, диспетчер 132 ресурсов может вычислять первую прогнозируемую величину использования системной памяти для приложения 102 на основании, по меньшей мере, первой величины. Различные иллюстративные алгоритмы будут представлены ниже для демонстрации, как может осуществляться этот этап.
[0057] На этапе 206, диспетчер 132 ресурсов сохраняет первую прогнозируемую величину использования ресурсов в хранилище 106 данных. Например, диспетчер 132 ресурсов может сохранять первую прогнозируемую величину использования системной памяти для приложения 102 в хранилище 106 данных.
[0058] Некоторое время спустя после осуществления этапа 206, диспетчер 132 ресурсов сообщается, что второй экземпляр приложения подлежит выполнению на вычислительном устройстве 100. На этапе 208, диспетчер 132 ресурсов определяет вторую величину ресурса, подлежащего выделению второму экземпляру приложения на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов, хранящейся в хранилище 106 данных. Например, диспетчер 132 ресурсов может определять вторую величину системной памяти подлежащий выделению второму экземпляру приложения 102 на основании, по меньшей мере, первой прогнозируемой величины использования системной памяти, сохраненной для приложения 102 в хранилище 106 данных. Определение второй величины системной памяти может содержать, например, задание второй величины системной памяти равной первой прогнозируемой величине использования системной памяти.
[0059] Различные способы можно использовать для вычисления первой прогнозируемой величины использования ресурсов для приложения на этапе 204. Например, в одном варианте осуществления, первая прогнозируемая величина использования ресурсов вычисляется на основании максимальной величины ресурса, которая использовалась приложением, сверх некоторого количества выполнений. Этот подход представлен блок-схемой 300 операций, показанной на фиг. 3.
[0060] В частности, на фиг. 3 изображена блок-схема 300 операций способа вычисления прогнозируемой величины использования ресурсов для приложения в соответствии с вариантом осуществления. Как показано на фиг. 3, способ согласно блок-схеме 300 операций начинается с этапа 302, на котором диспетчер 132 ресурсов получает максимальную величину использования ресурсов для приложения путем сравнения первой величины, определенной на этапе 202, с одной или более ранее определенных величин, связанных с одним или более ранее выполненными экземплярами приложения. На этапе 304, диспетчер 132 ресурсов вычисляет первую прогнозируемую величину использования ресурсов на основании максимальной величины использования ресурсов.
[0061] Рассмотрим пример этого подхода. В соответствии с этим примером, диспетчер 132 ресурсов отслеживает использование системной памяти приложением 102 в ходе пяти отдельных его выполнений и выбирает максимальное использование системной памяти приложением 102 из таких выполнений в качестве прогнозируемой величины использования ресурсов. Например, предположим, что в ходе последних четырех выполнений приложения 102, приложение 102 использовало 100 МБ, 120 МБ, 160 МБ и 140 МБ системной памяти, соответственно. Затем на этапе 202, диспетчер 132 ресурсов определяет, что выполняющийся в данный момент экземпляр приложения 102 использует 150 МБ системной памяти. В этом случае, диспетчер 132 ресурсов может устанавливать первую прогнозируемую величину использования ресурсов равной 160 МБ (или, возможно, 160 МБ плюс некоторая буферная величина), поскольку это максимальное использование системной памяти приложением 102 из последних пяти его выполнении.
[0062] В другом варианте осуществления, первая прогнозируемая величина использования ресурсов вычисляется на основании среднее величины ресурса, используемого приложением, сверх некоторого количества выполнений. Этот подход представлен блок-схемой 400 операций на фиг. 4.
[0063] В частности, фиг. 4 изображена блок-схема 400 операций способа вычисления прогнозируемой величины использования ресурсов для приложения в соответствии с вариантом осуществления. Как показано на фиг. 4, способ согласно блок-схеме 400 операций начинается с этапа 402, на котором диспетчер 132 ресурсов получает среднюю величину использования ресурсов для приложения на основании первой величины, определенной на этапе 202, и одной или более ранее определенных величин, связанных с одним или более ранее выполненными экземплярами приложения. На этапе 404, диспетчер 132 ресурсов вычисляет первую прогнозируемую величину использования ресурсов на основании средней величины использования ресурсов.
[0064] Рассмотрим пример этого подхода. В соответствии с этим примером, диспетчер 132 ресурсов отслеживает использование системной памяти приложением 102 в ходе пяти отдельных его выполнений, вычисляет среднее этих значений, и затем использует среднее значение в качестве прогнозируемой величины использования ресурсов. Например, предположим, что в ходе последних четырех выполнений приложения 102, приложение 102 использовало 100 МБ, 120 МБ, 160 МБ и 140 МБ системной памяти, соответственно. Затем на этапе 202, диспетчер 132 ресурсов определяет, что выполняющийся в данный момент экземпляр приложения 102 использует 150 МБ системной памяти. В этом случае, диспетчер 132 ресурсов определит, что средняя величина использования ресурсов для приложения 102 равна ((100 МБ+120 МБ+160 МБ+140 МБ+150 МБ)/5), что равно 134 МБ. Следовательно, диспетчер 132 ресурсов может устанавливать первую прогнозируемую величину использования ресурсов равной 134 МБ (или, возможно, 134 МБ плюс некоторая буферная величина).
[0065] Ниже будет описан другой способ получения средней величины использования ресурсов, описанного на этапе 402. В соответствии с этим подходом, скользящее среднее величины использования ресурсов комбинируется с самой недавней величиной использования ресурсов для получения нового долгосрочного скользящего среднего. Комбинация может взвешиваться таким образом, что более высокий весовой коэффициент применяется либо к старому долгосрочному скользящему среднему, либо к самой недавнее величине использования ресурсов. Альтернативно, обе величины могут взвешиваться одинаково. Этот подход можно представить с использованием следующего уравнения:
где представляет новое скользящее среднее величины использования ресурсов, представляет старое скользящее среднее величины использования ресурсов, представляет наиболее недавно наблюдаемую величину использования ресурсов, и - переменная, которая определяет взвешивание.
[0066] Например, предположим, что старое скользящее среднее величины использования ресурсов, , равно 130 МБ, наиболее недавно наблюдаемая величина использования ресурсов, , равна 160 МБ, и весовой коэффициент равен 0,25. В этом случае, новое скользящее среднее величины использования ресурсов, , будет равно ((0,25 * 130 МБ)+(0,75 * 160 МБ)), то есть 152,5 МБ. Следовательно, диспетчер 132 ресурсов может устанавливать первую прогнозируемую величину использования ресурсов равной 152,5 МБ (или, возможно, 152,5 МБ плюс некоторая буферная величина).
[0067] Вышеупомянутый способ получения средней величины использования ресурсов для приложения с использованием скользящих средних изображен на блок-схеме 500 операций на фиг. 5. Как показано на фиг. 5, способ согласно блок-схеме 500 операций начинается с этапа 502, на котором диспетчер 132 ресурсов умножает первую величину, полученную на этапе 202 (т.е. наиболее недавно наблюдаемую величину использования ресурсов) на первый весовой коэффициент. На этапе 504, диспетчер 132 ресурсов умножает величину скользящего среднего использования ресурсов, полученную на основании, по меньшей мере, одной или более ранее определенных величин (т.е. ранее наблюдаемых величин использования ресурсов) на второй весовой коэффициент для получения второго произведения. На этапе 506, диспетчер 132 ресурсов суммирует первое произведение и второе произведение для получения новой средней величины использования ресурсов.
[0068] Как упомянуто выше со ссылкой на фиг. 2, на этапе 208 блок-схемы 200 операций, диспетчер 132 ресурсов определяет вторую величину ресурса (например, системной памяти), подлежащего выделению второму экземпляру приложения, подлежащего выполнению вычислительным устройством 100 на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов. Поскольку вторая величина оценивается на основании прогностического алгоритма, всегда возможно, что второй экземпляр приложения может расходовать больше выделяемой второй величины. Чтобы справиться с этим сценарием, диспетчер 132 ресурсов может быть выполнен с возможностью определения, что второй экземпляр приложения расходует больше, чем выделяемая ему квота ресурсов и, в соответствии с этим, может завершать другие процессы, которые одновременно выполняются на вычислительном устройстве 100, для освобождения ресурсов. Например, диспетчер 132 ресурсов может предписывать завершение некоторых процессов, которым назначен более низкий приоритет, чем приложению, в соответствии со схемой приоритетов процессов.
[0069] Этот процесс изображен на блок-схеме 600 операций на фиг. 6. В частности, как показано на фиг. 6, способ согласно блок-схеме 600 операций начинается с этапа 602, на котором диспетчер 132 ресурсов определяет, что величина ресурса, используемого вторым экземпляром приложения, выполняющегося на вычислительном устройстве 100 превышает вторую величину. В соответствии с этим определением, на этапе 604, диспетчер 132 ресурсов завершает один или более процессов, которые одновременно выполняются на вычислительном устройстве. Дополнительно или альтернативно, диспетчер 132 ресурсов может осуществлять связь с одним или более из процессов, которые одновременно выполняются на вычислительном устройстве 100, и предписывать этим процессам снижать их расходование ресурса.
[0070] Кроме того, диспетчер 132 ресурсов может определять посредством связи с диспетчером 122 памяти или каким-либо другим средством, что вторая величина ресурса, подлежащего выделению второму экземпляру приложения, в данный момент недоступна. В этом случае, диспетчер 132 ресурсов может препятствовать выполнению второго экземпляра приложения.
[0071] Этот процесс изображен на блок-схеме 700 операций на фиг. 7. В частности, как показано на фиг. 7, способ согласно блок-схеме 700 операций начинается с этапа 702, на котором диспетчер 132 ресурсов определяет, что вторая величина ресурса в данный момент недоступна. В соответствии с этим определением, на этапе 704, диспетчер 132 ресурсов препятствует выполнению второго экземпляра приложения.
[0072] В случае, когда диспетчер 132 ресурсов определяет, что вторая величина ресурса, подлежащего выделению второму экземпляру приложения, в данный момент недоступна, диспетчер 132 ресурсов также может завершать один или более процессов, которые выполняются на вычислительном устройстве 100, для освобождения ресурса. Например, диспетчер 132 ресурсов может предписывать завершение некоторых процессов, которым назначен более низкий приоритет, чем приложению, в соответствии со схемой приоритетов процессов. После снижения расходования ресурсов такими другими процессам диспетчер 132 ресурсов может разрешить выполнение второго экземпляра приложения.
[0073] Этот процесс изображен на блок-схеме 800 операций на фиг. 8. В частности, как показано на фиг. 8, способ согласно блок-схеме 800 операций начинается с этапа 802, на котором диспетчер 132 ресурсов определяет, что вторая величина ресурса в данный момент недоступна. В соответствии с этим определением, на этапе 804, диспетчер 132 ресурсов завершает один или более процессов, которые в данный момент выполняются на вычислительном устройстве 100. Дополнительно или альтернативно, диспетчер 132 ресурсов может осуществлять связь с одним или более из процессов, которые в данный момент выполняются на вычислительном устройстве 100, и предписывать этим процессам снижать их расходование ресурса.
[0074] Для многих вычислительных устройств, например, смартфонов, типичной моделью использования является один пользователь на вычислительное устройство. В этом случае, сохранение профилей использования ресурсов для вычислительного устройства, по существу, идентично сохранению профилей использования ресурсов для конкретного пользователя. Однако вычислительные устройства также можно использовать для поддержки нескольких пользователей. Например, несколько разных членов одной семьи могут использовать один планшетный компьютер, настольный компьютер или игровую консоль для выполнения приложений. Каждый из этих пользователей может использовать разные приложения или может использовать одно и то же приложение по-разному, что приводит к изменению уровней расходования ресурсов. Чтобы справиться с этим сценарием, некоторые варианты осуществления предусматривают сохранение профилей использования ресурсов на вычислительном устройстве как приложением, так и пользователем, чтобы адаптировать прогностическое выделение ресурсов к конкретному пользователю, который в данный момент использует вычислительное устройство. Эти профили использования ресурсов можно рассматривать как профили использования ресурсов, зависящие от пользователя (в отличие от ранее описанных профилей использования ресурсов, зависящих от устройства).
[0075] На фиг. 9 изображена блок-схема 900 операций способа, осуществляемого вычислительным устройством для диспетчеризации его ресурса в соответствии с профилем использования ресурсов, зависящим от пользователя, в соответствии с вариантом осуществления. Способ согласно блок-схеме 900 операций будет описан ниже по-прежнему со ссылкой на компоненты вычислительного устройства 100, описанные выше со ссылкой на фиг. 1. Однако способ не ограничивается этим вариантом осуществления.
[0076] Как показано на фиг. 9, способ согласно блок-схеме 900 операций начинается с этапа 902, на котором диспетчер 132 ресурсов определяет первую величину ресурса, который используется первым экземпляром приложения, выполняющегося на вычислительном устройстве 100 со стороны первого пользователя. Например, диспетчер 132 ресурсов может определять первую величину системной памяти, которая используется первым экземпляром приложения 102, в то время как первый экземпляр приложения 102 выполняется вычислительным устройством 100 со стороны первого пользователя. Тот факт, что первый экземпляр приложения 102 выполняется со стороны первого пользователя можно определять самыми разнообразными средствами. Согласно варианту осуществления, в котором пользователь может выполнять вход в вычислительное устройство 100, для осуществления определения можно использовать текущую информацию входа. Однако этот пример не следует рассматривать в качестве ограничения, и можно использовать любой подходящий способ определения личности пользователя вычислительного устройства.
[0077] На этапе 904, диспетчер 132 ресурсов вычисляет первую прогнозируемую величину использования ресурсов для приложения и первого пользователя на основании, по меньшей мере, первой величины. Например, диспетчер 132 ресурсов может вычислять первую прогнозируемую величину использования системной памяти для приложения 102 и первого пользователя на основании, по меньшей мере, первой величины. Различные иллюстративные алгоритмы были представлены для демонстрации, как может осуществляться этот этап.
[0078] На этапе 906, диспетчер 132 ресурсов сохраняет первую прогнозируемую величину использования ресурсов в хранилище 106 данных. Например, диспетчер 132 ресурсов может сохранять первую прогнозируемую величину использования системной памяти для приложения 102 и первого пользователя в хранилище 106 данных.
[0079] Некоторое время спустя после осуществления этапа 906, диспетчер 132 ресурсов сообщается, что второй экземпляр приложения подлежит выполнению на вычислительном устройстве 100 со стороны первого пользователя. На этапе 908, диспетчер 132 ресурсов определяет вторую величину ресурса, подлежащего выделению второму экземпляру приложения на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов, хранящейся в хранилище 106 данных. Например, диспетчер 132 ресурсов может определять вторую величину системной памяти подлежащий выделению второму экземпляру приложения 102 на основании, по меньшей мере, первой прогнозируемой величины использования системной памяти, сохраненной для приложения 102 и первого пользователя в хранилище 106 данных. Определение второй величины системной памяти может содержать, например, задание второй величины системной памяти равной первой прогнозируемой величине использования системной памяти.
[0080] На этапе 910, диспетчер 132 ресурсов определяет третью величину ресурса, который используется третьим экземпляром приложения, выполняющегося на вычислительном устройстве 100 со стороны второго пользователя, причем второй пользователь отличается от первого пользователя. Например, диспетчер 132 ресурсов может определять третью величину системной памяти, которая используется третьим экземпляром приложения 102, в то время как третий экземпляр приложения 102 выполняется вычислительным устройством 100 со стороны второго пользователя. Тот факт, что третий экземпляр приложения 102 выполняется со стороны второго пользователя можно определять самыми разнообразными средствами. Согласно варианту осуществления, в котором пользователь может выполнять вход в вычислительное устройство 100, для осуществления определения можно использовать текущую информацию входа. Однако этот пример не следует рассматривать в качестве ограничения, и можно использовать любой подходящий способ определения личности пользователя вычислительного устройства.
[0081] На этапе 912, диспетчер 132 ресурсов вычисляет вторую прогнозируемую величину использования ресурсов для приложения и второго пользователя на основании, по меньшей мере, третьей величины. Например, диспетчер 132 ресурсов может вычислять первую прогнозируемую величину использования системной памяти для приложения 102 и второго пользователя на основании, по меньшей мере, третьей величины. Различные иллюстративные алгоритмы были представлены для демонстрации, как может осуществляться этот этап.
[0082] На этапе 914, диспетчер 132 ресурсов сохраняет вторую прогнозируемую величину использования ресурсов в хранилище 106 данных. Например, диспетчер 132 ресурсов может сохранять вторую прогнозируемую величину использования системной памяти для приложения 102 и второго пользователя в хранилище 106 данных.
[0083] Некоторое время спустя после осуществления этапа 914, диспетчер 132 ресурсов сообщается, что четвертый экземпляр приложения подлежит выполнению на вычислительном устройстве 100 со стороны второго пользователя. На этапе 916, диспетчер 132 ресурсов определяет четвертую величину ресурса, подлежащего выделению четвертому экземпляру приложения на основании, по меньшей мере, второй прогнозируемой величины использования ресурсов, хранящейся в хранилище 106 данных. Например, диспетчер 132 ресурсов может определять четвертую величину системной памяти подлежащий выделению четвертому экземпляру приложения 102 на основании, по меньшей мере, второй прогнозируемой величины использования системной памяти, сохраненной для приложения 102 и второго пользователя в хранилище 106 данных. Определение четвертой величины системной памяти может содержать, например, задание четвертой величины системной памяти равной второй прогнозируемой величине использования системной памяти.
[0084] На фиг. 10 изображена блок-схема 1000 операций способа диспетчеризации запуска приложения в соответствии с профилем использования ресурсов, зависящим от устройства или зависящим от пользователя, в соответствии с вариантом осуществления. Способ согласно блок-схеме 1000 операций будет описан ниже по-прежнему со ссылкой на компоненты вычислительного устройства 100, описанные выше со ссылкой на фиг. 1. Однако способ не ограничивается этим вариантом осуществления.
[0085] Как показано на фиг. 10, способ согласно блок-схеме 1000 операций начинается с этапа 1002, на котором принимается запрос на запуск приложения. Например, запрос на запуск приложения 102 может приниматься, например, системными службами 130 и/или диспетчером 132 ресурсов.
[0086] На этапе 1004, диспетчер 132 ресурсов получает прогнозируемую величину использования ресурсов для приложения. Например, диспетчер 132 ресурсов может получать прогнозируемую величину использования ресурсов для приложения 102. Прогнозируемая величина использования ресурсов основана на отслеживаемом использовании ресурса вычислительного устройства 100 в ходе одного или более предыдущих выполнений приложения вычислительным устройством 100. Прогнозируемая величина использования ресурсов или информация, необходимая для вычисления такой прогнозируемой величины использования ресурсов, может быть получена из профиля использования ресурсов для приложения, который может храниться в хранилище 206 данных. Ресурс может включать в себя один или более из ресурса энергозависимой или энергонезависимой памяти, ресурса CPU, ресурса I/O, сетевого ресурса, ресурса питания и ресурса датчика. Прогнозируемая величина использования ресурсов может базироваться на отслеживании использования ресурса вычислительного устройства 100 процессом переднего плана, связанным с приложением, и одной или более фоновыми задачами, связанными с приложением.
[0087] На этапе 1006 принятия решения, диспетчер 132 ресурсов определяет, доступна ли достаточная величина ресурса, путем сравнения прогнозируемой величины использования ресурсов с величиной ресурса, которая доступна в данный момент. Например, согласно варианту осуществления, в котором ресурсом является системная память, диспетчер 132 ресурсов может получать величину системной памяти, которая доступна в данный момент, от диспетчера 122 памяти и затем сравнивать прогнозируемую величину использования системной памяти для приложения с доступной в данный момент системной памятью для определения, достаточная ли величина системной памяти доступна.
[0088] Если диспетчер 132 ресурсов, по меньшей мере, определяет, что доступна достаточная величина ресурса, то диспетчер 132 ресурсов разрешает запуск приложения, как показано на этапе 1008. Например, если диспетчер 132 ресурсов, по меньшей мере, определяет, что доступно достаточно системной памяти, то диспетчер 132 ресурсов разрешает запуск приложения 102. Заметим, что возможны другие условия, которым нужно удовлетворять, чтобы диспетчер 132 ресурсов разрешил запуск приложения.
[0089] Если диспетчер 132 ресурсов определяет, что доступна недостаточная величина ресурса, то диспетчер 132 ресурсов запрещает запуск приложения, как показано на этапе 1010. Например, если диспетчер 132 ресурсов определяет, что доступно недостаточно системной памяти, то диспетчер 132 ресурсов запрещает запуск приложения 102. Дополнительно, диспетчер 132 ресурсов может стремиться освободить ресурсы, предписывая одному или более выполняющимся в данный момент процессам завершиться или иным образом снизить свое использование ресурсов.
[0090] Согласно варианту осуществления, диспетчер 132 ресурсов также способен отслеживать другую информацию, относящуюся к использованию ресурсов приложением и/или пользователем, например, времена, положения и события, связанные с конкретными режимами использования ресурсов. Такую информацию можно преимущественно использовать для прогностического выделения ресурсов вычислительного устройства приложению даже до того, как пользователь попытается запустить его. Кроме того, приложения и/или данные приложения можно загружать в память в момент времени, предшествующий предполагаемому обращению к ним пользователя.
[0091] Например, если удается определить, что пользователь обычно запускает конкретное приложение в конкретное время, в конкретном месте или в связи с конкретным событием, то диспетчер 132 ресурсов может действовать таким образом, чтобы гарантировать доступность достаточных ресурсов, подлежащих выделению приложению, до и, возможно, непосредственно до предполагаемого запуска приложения пользователем. Кроме того, такой прогностический анализ фактически можно использовать для загрузки приложения или контента приложения в системную память, чтобы пользователь мог получать непосредственный доступ к приложению и его признакам.
[0092] Чтобы проиллюстрировать это, на фиг. 11 изображена блок-схема 1100 операций способа для использования отслеживаемого использования ресурсов схемы пользователя в отношении ресурсов вычислительного устройства и выведенной из него информации для прогностического выделения ресурсов процессам. Способ согласно блок-схеме 1100 операций будет описан ниже по-прежнему со ссылкой на компоненты вычислительного устройства 100, описанные выше со ссылкой на фиг. 1. Однако способ не ограничивается этим вариантом осуществления.
[0093] Как показано на фиг. 11, способ согласно блок-схеме 1100 операций начинается с этапа 1102, на котором диспетчер 132 ресурсов отслеживает схему использования, по меньшей мере, одного ресурса вычислительного устройства 100 приложением и/или пользователем. Как рассмотрено ранее, отслеживание схемы использования может предполагать отслеживание использования ресурсов приложением и/или пользователем, а также отслеживание другой информации, связанной с таким использованием ресурсов, например, времен, положений и событий, связанных с конкретными режимами использования ресурсов.
[0094] На этапе 1104, диспетчер 132 ресурсов сохраняет информацию, связанную со схемой использования. Диспетчер 132 ресурсов может сохранять такую информацию, например, в хранилище 106 данных.
[0095] На этапе 1106, диспетчер 132 ресурсов использует сохраненную информацию для прогностического выделения, по меньшей мере, части, по меньшей мере, одного ресурса, по меньшей мере, одному процессу до его выполнения вычислительным устройством 100. В одном иллюстративном варианте осуществления, на этапе 1106, диспетчер 132 ресурсов прогностически выделяет, по меньшей мере, часть ресурса приложению до того, как пользователь вычислительного устройства 100 или какой-либо другой субъект запустит приложение. В другом иллюстративном варианте осуществления, в котором, по меньшей мере, один ресурс включает в себя системную память, диспетчер 132 ресурсов может загружать, по меньшей мере, часть приложения или данных, связанных с приложением, в прогностически выделяемую системную память до того, как пользователь вычислительного устройства 100 или какой-либо другой субъект запустит приложение. Эти примеры приведены исключительно в порядке иллюстрации, но не ограничения. Специалистам в данной области техники очевидно, что можно использовать другие методы для обеспечения информации схемы использования ресурсов для осуществления дополнительных задач диспетчеризации ресурсов.
III. ИЛЛЮСТРАТИВНЫЕ СИСТЕМА И СПОСОБЫ ДИНАМИЧЕСКОЙ ДИСПЕТЧЕРИЗАЦИИ РЕСУРСОВ ДЛЯ МНОГОПРОЦЕССНЫХ ПРИЛОЖЕНИЙ
[0096] Согласно варианту осуществления, вычислительное устройство 100, показанное на фиг. 1, позволяет выполняющемуся на нем приложению (например, приложению 102) динамически управлять разделением выделяемой части ресурса вычислительного устройства 100 между несколькими процессами, связанными с приложением. Например, приложение 102, выполняющееся на вычислительном устройстве 100, может взаимодействовать с диспетчером 132 ресурсов для динамического управления разделением выделяемой части ресурса вычислительного устройства 100 между процессом переднего плана, связанным с приложением, и одним или более фоновыми процессами, связанными с приложением. Благодаря предоставлению приложению такой способности, описанные здесь варианты осуществления, преимущественно, позволяют приложениям адаптироваться к изменяющимся выделениям ресурса и лучше сосуществовать с другими процессами, которые могут выполняться на вычислительном устройстве, таким образом лучше обеспечивая самые разнообразные многозадачные сценарии.
[0097] Один способ, которым приложение 102 и диспетчер 132 ресурсов могут взаимодействовать для осуществления такой динамической диспетчеризации ресурсов, будет описан ниже со ссылкой на блок-схему операций 1200 на фиг. 12. Как показано на фиг. 12, способ согласно блок-схеме операций 1200 начинается с этапа 1202, на котором диспетчер ресурсов 1202 отправляет процессу переднего плана, связанному с приложением 102, извещение, что приложение выполняется на переднем плане.
[0098] На этапе 1204, диспетчер 132 ресурсов принимает от процесса переднего плана, по меньшей мере, одно сообщение, указывающее первую часть первого бюджета использования ресурсов, который подлежит выделению процессу переднего плана, и вторую часть первого бюджета использования ресурсов, который подлежит выделению, по меньшей мере, одной фоновой задаче, связанной с приложением.
[0099] На этапе 1206, диспетчер 132 ресурсов выделяет часть ресурса, которая равна первой части первого бюджета использования ресурсов, процессу переднего плана и выделяет часть ресурса, которая равна второй части первого бюджета использования ресурсов, по меньшей мере, одной фоновой задаче. Ресурс может содержать, в порядке примера, но не ограничения, энергозависимую или энергонезависимую память, CPU, ресурс I/O, сетевой ресурс, ресурс питания, ресурс датчика.
[0100] На этапе 1208, диспетчер 132 ресурсов отправляет процессу переднего плана извещение, что приложение будет приостановлено или завершено.
[0101] На этапе 1210, диспетчер 132 ресурсов принимает от процесса переднего плана, по меньшей мере, одно сообщение, указывающее первую часть второго бюджета использования ресурсов, который подлежит выделению процессу переднего плана, и вторую часть второго бюджета использования ресурсов, который подлежит выделению, по меньшей мере, одной фоновой задаче, связанной с приложением. Второй бюджет использования ресурсов может быть меньше первого бюджета использования ресурсов.
[0102] На этапе 1212, диспетчер 132 ресурсов выделяет часть ресурса, которая равна первой части второго бюджета использования ресурсов, процессу переднего плана и выделяет часть ресурса, которая равна второй части второго бюджета использования ресурсов, по меньшей мере, одной фоновой задаче. По прошествии заранее определенного периода времени, диспетчер 132 ресурсов может затем определять превышает ли сумма величины ресурса, используемого процессом переднего плана, и величины ресурса, используемого, по меньшей мере, одним фоновым процессом, второй бюджет использования ресурсов. В ответ на определение, что сумма превышает второй бюджет использования ресурсов, диспетчер 132 ресурсов может предписывать завершение одного или более из процесса переднего плана и, по меньшей мере, одного фонового процесса.
[0103] В одном варианте осуществления, связь между диспетчером 132 ресурсов и процессом переднего плана согласно вышеупомянутому способу осуществляется посредством совместно используемого API. Такой API может быть открыт разработчикам приложений, чтобы такие разработчики могли разрабатывать приложения, которые могут пользоваться преимуществом этих признаков.
[0104] На фиг. 13 изображена блок-схема 1300 операций другого способа позволяющего приложению, выполняющемуся на вычислительном устройстве, помогать в диспетчеризации выделения ресурсов вычислительного устройства процессу переднего плана и одной или более фоновым задачам, связанным с приложением.
[0105] Как показано на фиг. 13, блок-схема 1300 операций начинается с этапа 1302, на котором диспетчер 132 ресурсов отправляет процессу переднего плана, связанный с приложением, по меньшей мере, одно сообщение, которое указывает бюджет использования ресурсов.
[0106] На этапе 1304, диспетчер 132 ресурсов принимает от процесса переднего плана, по меньшей мере, одно сообщение, указывающее первую часть бюджета использования ресурсов, которая подлежит выделению процессу переднего плана, и вторую часть бюджета использования ресурсов, которая подлежит выделению, по меньшей мере, одной фоновой задаче, связанной с приложением.
[0107] На этапе 1306, диспетчер 132 ресурсов выделяет часть ресурса, которая равна первой части бюджета использования ресурсов, процессу переднего плана и выделяет часть ресурса, которая равна второй части бюджета использования ресурсов, по меньшей мере, одной фоновой задаче.
[0108] Согласно варианту осуществления, по меньшей мере, одно сообщение, отправляемое процессу переднего плана, и, по меньшей мере, одно сообщение, отправляемое диспетчеру ресурсов отправляются посредством совместно используемого API.
[0109] В другом варианте осуществления, бюджет использования ресурсов содержит бюджет использования ресурсов для приложения, которое выполняется на переднем плане, и, по меньшей мере, одно сообщение, которое указывает бюджет использования ресурсов, содержит извещение, что приложение выполняется на переднем плане.
[0110] В еще одном варианте осуществления, бюджет использования ресурсов содержит бюджет использования ресурсов для приложения, которое приостановлено или завершено, и, по меньшей мере, одно сообщение, которое указывает бюджет использования ресурсов, содержит извещение, что приложение будет приостановлено или завершено.
[0111] В дополнительном варианте осуществления, диспетчер 132 ресурсов определяет, по прошествии заранее определенного периода времени, превышает ли сумма величины ресурса, используемого процессом переднего плана, и величины ресурса, используемого, по меньшей мере, одним фоновым процессом, бюджет использования ресурсов, и, в ответ на определение, что сумма превышает бюджет использования ресурсов, предписывает завершение одного или более из процесса переднего плана и, по меньшей мере, одного фонового процесса.
IV. ИЛЛЮСТРАТИВНАЯ РЕАЛИЗАЦИЯ МОБИЛЬНОГО УСТРОЙСТВА
[0112] На фиг. 14 показана блок-схема иллюстративного мобильного устройства 1402, которое может реализовать описанные здесь варианты осуществления. Как показано на фиг. 14, мобильное устройство 1402 включает в себя различные необязательные аппаратные и программные компоненты. Любой компонент мобильного устройства 1402 может осуществлять связь с любым другим компонентом, хотя для простоты иллюстрации показаны не все соединения. Мобильное устройство 1402 может представлять собой любое из различных вычислительных устройств (например, сотовый телефон, смартфон, карманный компьютер, карманный персональный компьютер (PDA) и т.д.) и может обеспечивать беспроводную двустороннюю связь с одной или более сетями 1404 мобильной связи, например, сотовой или спутниковой сетью, или с локальной или глобальной сетью.
[0113] Иллюстрируемое мобильное устройство 1402 может включать в себя контроллер или процессор 1410 (например, процессор сигнала, микропроцессор, ASIC, или другую логическую схему управления и обработки) для осуществления таких задач, как кодирование сигнала, обработка данных, обработка ввода/вывода, управление питанием и/или другие функции. Операционная система 1412 может управлять выделением и использованием компонентов мобильного устройства 1402 и обеспечивать поддержку одной или более прикладных программ 1414 (также именуемых “приложениями”). Прикладные программы 1414 может включать в себя обычные мобильные вычислительные приложения (например, приложения электронной почты, календари, диспетчеры контактов, веб-браузеры, приложения обмена сообщениями) и любые другие вычислительные приложения (например, приложения редактирования текста, картографические приложения, приложения медиапроигрывателя).
[0114] Иллюстрируемое мобильное устройство 1402 может включать в себя память 1420. Память 1420 может включать в себя стационарную память 1422 и/или сменную память 1424. Стационарная память 1422 может включать в себя RAM, ROM, флэш-память, жесткий диск, или другие общеизвестные запоминающие устройства или технологии. Сменная память 1424 может включать в себя флэш-память или карту модуля идентификации абонента (SIM), которые общеизвестны в системах связи GSM, или другие общеизвестные запоминающие устройства или технологии, например "смарт-карты". Память 1420 можно использовать для хранения данных и/или кода для выполнения операционной системы 1412 и приложений 1414. Иллюстративные данные могут включать в себя веб-страницы, текст, изображения, звуковые файлы, видеоданные или другие данные, подлежащие отправке на и/или приему от одного или более сетевых серверов или других устройств через одну или более проводных или беспроводных сетей. Память 1420 можно использовать для сохранения идентификатора абонента, например, международного идентификатора абонента мобильной связи (IMSI) и идентификатора оборудования, например международный идентификатор мобильного оборудования (IMEI). Такие идентификаторы могут передаваться на сетевой сервер для идентификации пользователей и оборудования.
[0115] Мобильное устройство 1402 может поддерживать одно или более устройств 1430 ввода, например, сенсорный экран 1432, микрофон 1434, камеру 1436, физическую клавиатуру 1438 и/или шаровой манипулятор 1440 и одно или более устройств 1450 вывода, например, громкоговоритель 1452 и дисплей 1454. Сенсорные экраны, например, сенсорный экран 1432, могут регистрировать ввод по-разному. Например, емкостные сенсорные экраны регистрируют тактильный ввод, когда объект (например, кончик пальца) искажается или прерывает электрический ток, текущий по поверхности. В порядке другого примера, сенсорные экраны могут использовать оптические датчики для регистрации тактильного ввода, когда прерываются пучки от оптических датчиков. Физический контакт с поверхностью экрана не требуется для регистрации ввода некоторыми сенсорными экранами.
[0116] Другие возможные устройства вывода (не показаны) могут включать в себя пьезоэлектрические или другие тактильные устройства вывода. Некоторые устройства могут выполнять более одной функции ввода/вывода. Например, сенсорный экран 1432 и дисплей 1454 можно объединять в единое устройство ввода/вывода. Устройства 1430 ввода могут включать в себя естественный пользовательский интерфейс (NUI).
[0117] Беспроводной(ые) модем(ы) 1460 может(ут) быть подключен(ы) к антенне(ми) (не показана(ы)) и может(ут) поддерживать двустороннюю связь между процессором 1410 и внешними устройствами, что хорошо понятно в уровне техники. Модем(ы) 1460 показан(ы) в целом и может(ут) включать в себя сотовый модем 1466 для осуществления связи с сетью 1404 мобильной связи и/или другие радиомодемы (например, Bluetooth 1464 и/или Wi-Fi 1462). По меньшей мере, один из беспроводных модемов 1460 обычно выполнен с возможностью осуществления связи с одной или более сотовыми сетями, например, сетью GSM для передачи данных и голоса в единой сотовой сети, между сотовыми сетями, или между мобильным устройством и коммутируемой телефонной сетью общего пользования (PSTN).
[0118] Мобильное устройство 1402 может дополнительно включать в себя, по меньшей мере, один порт 1480 ввода/вывода, источник 1482 питания, приемник 1484 спутниковой навигационной системы, например, приемник глобальной системы позиционирования (GPS), акселерометр 1486 и/или физический соединитель 1490, которым может быть порт USB, порт IEEE 1394 (FireWire) и/или порт RS-232. Проиллюстрированные компоненты мобильного устройства 1402 не являются необходимыми или всеобъемлющими, поскольку можно удалять любые компоненты и можно добавлять другие компоненты, что очевидно специалисту в данной области техники.
[0119] Согласно варианту осуществления, некоторые компоненты мобильного устройства 1402 выполнены с возможностью осуществления описанных здесь функций, относящихся к осуществлению диспетчеризации ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя, и обеспечивающих динамическую диспетчеризацию ресурсов для многопроцессных приложений. Например, в одном варианте осуществления, операционная система 1412 включает в себя признаки операционной системы 104, которые позволяют операционной системе 104 осуществлять диспетчеризацию ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя. В качестве дополнительного примера, операционная система 1412 и, по меньшей мере, одно из приложений 1414 может включать в себя признаки операционной системы 104 и приложения 102, которые позволяют этим компонентам осуществлять динамическую диспетчеризацию ресурсов для многопроцессных приложений. Однако это лишь пример, и разные функции могут осуществляться разными компонентами.
[0120] Компьютерная программная логика для осуществления описанных здесь функций, относящихся к осуществлению диспетчеризации ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя, и обеспечивающих динамическую диспетчеризацию ресурсов для многопроцессных приложений могут сохраняться в памяти 1420 и выполняться процессором 1410. Благодаря выполнению такой компьютерной программной логики, процессору 1410 может быть предписано реализовать любой из признаков любого из компонентов вычислительного устройства 100, описанные выше со ссылкой на фиг. 1. Также, благодаря выполнению такой компьютерной программной логики, процессору 1410 может быть предписано осуществлять некоторые или все из этапов некоторых или всех из блок-схем операций, изображенных на фиг. 2-13.
V. ИЛЛЮСТРАТИВНАЯ РЕАЛИЗАЦИЯ КОМПЬЮТЕРНОЙ СИСТЕМЫ
[0121] На фиг. 15 изображена иллюстративная процессорная компьютерная система 1500, которая может использоваться для реализации различных описанных здесь вариантов осуществления. Например, систему 1500 можно использовать для реализации любого из компонентов вычислительного устройства 100, описанных выше со ссылкой на фиг. 1. Систему 1500 также можно использовать для реализации некоторых или всех из этапов некоторых или всех из блок-схем операций, изображенных на фиг. 2-13. Приведенное здесь описание системы 1500 служит для иллюстрации, но не ограничения. Варианты осуществления могут быть реализованы в дополнительных типах компьютерных систем, что очевидно специалистам в данной области техники.
[0122] Как показано на фиг. 15, система 1500 включает в себя блок 1502 обработки, системную память 1504 и шину 1506 которая подключает различные системные компоненты, включая системную память 1504, к блоку 1502 обработки. Блок 1502 обработки может содержать один или более микропроцессоров или ядер микропроцессора. Шина 1506 представляет один или более из любого из нескольких типов шинных структур, включающих в себя шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт, и процессор или локальная шина с использованием любой из различных шинных архитектур. Системная память 1504 включает в себя постоянную память (ROM) 1508 и оперативную память (RAM) 1510. Базовая система 1512 ввода/вывода (BIOS) хранится в ROM 1508.
[0123] Система 1500 также имеет один или более из следующих приводы: привод 1514 жесткого диска для считывания с и записи на жесткий диск, привод 1516 магнитных дисков для считывания с или записи на сменный магнитный диск 1518 и привод 1520 оптический дисков для считывания с или записи на сменный оптический диск 1522, например, диск CD ROM, DVD ROM, BLU-RAY™ или другие оптические носители. Привод 1514 жесткого диска, привод 1516 магнитных дисков и привод 1520 оптический дисков подключены к шине 1506 интерфейсом 1524 привода жесткого диска, интерфейсом 1526 привода магнитных дисков и интерфейсом 1528 оптического привода, соответственно. Приводы и их соответствующие компьютерно-считываемые носители обеспечивают энергонезависимое хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера. Хотя описаны жесткий диск, сменный магнитный диск и сменный оптический диск, для хранения данных можно использовать другие типы компьютерно-считываемых запоминающих устройств и запоминающих структур, например, карты флэш-памяти, цифровые видеодиски, блоки оперативной памяти (RAM), блоки постоянной памяти (ROM) и пр.
[0124] Некоторые программные модули могут храниться на жестком диске, магнитном диске, оптическом диске, ROM или RAM. Эти программные модули включают в себя операционную систему 1530, одну или более прикладных программ 1532, другие программные модули 1534 и программные данные 1536. В соответствии с различными вариантами осуществления, программные модули могут включать в себя компьютерную программную логику, которая может выполняться блоком 1502 обработки для осуществления некоторых или всех из функций и признаков вычислительного устройства 100, как описано выше со ссылкой на фиг. 1. Программные модули также могут включать в себя компьютерную программную логику, которая, при выполнении блоком 1502 обработки, осуществляет любой из этапов или операций, показанных или описанных со ссылкой на блок-схемы операций на фиг. 2-13.
[0125] Пользователь может вводить команды и информацию в систему 1500 через устройства ввода, например, клавиатуру 1538 и указательное устройство 1540. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой контроллер, сканер и т.п. В одном варианте осуществления, сенсорный экран обеспечен совместно с дисплеем 1544, чтобы пользователь мог обеспечивать пользовательский ввод посредством прикосновение (например, пальцем или стилусом) к одной или более точкам на сенсорном экране. Эти и другие устройства ввода часто подключаются к блоку 1502 обработки через интерфейс 1542 последовательного порта, который подключен к шине 1506, но может подключаться другими интерфейсами, например, параллельным портом, игровым портом или универсальной последовательной шиной (USB). Такие интерфейсы могут быть проводными или беспроводными интерфейсами.
[0126] Дисплей 1544 также подключен к шине 1506 через интерфейс, например видеоадаптер 1546. Помимо дисплея 1544, система 1500 может включать в себя другие периферийные устройства вывода (не показаны), например, громкоговорители и принтеры.
[0127] Система 1500 подключена к сети 1548 (например, локальной сети или глобальной сети, например, интернету) через сетевой интерфейс или адаптер 1550, модем 1552 или другое подходящее средство для установления связи по сети. Модем 1552, который может быть внутренним или внешним, подключен к шине 1506 через интерфейс 1542 последовательного порта.
[0128] Используемые здесь термины "носитель компьютерной программы", "компьютерно-считываемый носитель" и “компьютерно-считываемая среда хранения” используются, в общем случае, для обозначения запоминающих устройств или запоминающих структур, например, жесткого диска, связанного с приводом 1514 жесткого диска, сменного магнитного диска 1518, сменного оптического диска 1522, а также других запоминающих устройств или запоминающих структур, например, карт флэш-памяти, цифровых видеодисков, блоков оперативной памяти (RAM), блоков постоянной памяти (ROM) и пр. Такие компьютерно-считываемые среды хранения отличаются от и не перекрываются со средами передачи данных (не включают в себя среды передачи данных). Среды передачи данных обычно воплощают машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, например, несущей волне. Термин “модулированный сигнал данных” означает сигнал, одна или более из характеристик которого устанавливается или изменяется таким образом, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения, среды передачи данных включают в себя беспроводные среды передачи данных, например акустические, RF, инфракрасные и другие беспроводные среды передачи данных. Варианты осуществления также относятся к таким средам передачи данных.
[0129] Как упомянуто выше, компьютерные программы и модули (включающие в себя прикладные программы 1532 и другие программные модули 1534) могут храниться на жестком диске, магнитном диске, оптическом диске, ROM или RAM. Такие компьютерные программы также могут приниматься через сетевой интерфейс 1550, интерфейс 1542 последовательного порта или интерфейс любого другого типа. Такие компьютерные программы, при выполнении или загрузке приложением, позволяют компьютеру 1500 реализовать признаки рассмотренных здесь вариантов осуществления настоящего изобретения. Соответственно, такие компьютерные программы представляют контроллеры системы 1500.
[0130] Варианты осуществления также относятся к компьютерным программным продуктам, содержащим программное обеспечение, хранящееся на любом компьютерном носителе. Такое программное обеспечение, при выполнении на одном или более устройствах обработки данных, предписывает устройству(ам) обработки данных действовать описанным здесь образом. Варианты осуществления настоящего изобретения используют любой компьютерно-используемый или компьютерно-считываемый носитель, известный или перспективный. Примеры компьютерно-считываемых носителей включают в себя, но без ограничения запоминающие устройства и запоминающие структуры, например, RAM, жесткие диски, флоппи-диски, CD ROM, DVD ROM, zip-диски, ленты, магнитные запоминающие устройства, оптические запоминающие устройства, MEM, запоминающие устройства на основе нанотехнологии и пр.
[0131] В альтернативных реализациях, система 1500 может быть реализована в виде аппаратной логики/электрической схемы или программно-аппаратного обеспечения. В соответствии с дополнительными вариантами осуществления, один или более из этих компонентов может быть реализован в однокристальной системе (SoC). SoC может включать в себя кристалл интегральной схемы, который включает в себя один или более из процессора (например, микроконтроллера, микропроцессора, цифрового сигнального процессора (DSP) и т.д.), памяти, одного или более интерфейсов связи и/или дополнительных схем и/или встроенного программно-аппаратного обеспечения для осуществления их функций.
VI. ЗАКЛЮЧЕНИЕ
[0132] Хотя выше были описаны различные варианты осуществления, следует понимать, что они были представлены исключительно в порядке примера, но не ограничения. Специалистам в данной области техники будет очевидно, что возможны различные изменения, касающиеся формы и деталей, не выходящие за рамки сущности и объема изобретения. Таким образом, объем настоящего изобретения не подлежит ограничению никаким из вышеописанных иллюстративных вариантов осуществления, но определяется только в соответствии с нижеследующей формулой изобретения и ее эквивалентами.
название | год | авторы | номер документа |
---|---|---|---|
ИЕРАРХИЧЕСКАЯ ИНФРАСТРУКТУРА ПЛАНИРОВАНИЯ РЕЗЕРВИРОВАНИЯ РЕСУРСОВ | 2008 |
|
RU2481618C2 |
ЗАЩИТА РЕСУРСОВ ОПЕРАЦИОННОЙ СИСТЕМЫ | 2007 |
|
RU2462747C2 |
АВТОМАТИЗИРОВАННОЕ ПРОФИЛИРОВАНИЕ ИСПОЛЬЗОВАНИЯ РЕСУРСА | 2013 |
|
RU2605473C2 |
БЕЗОПАСНОСТЬ В ПРИЛОЖЕНИЯХ СИНХРОНИЗАЦИИ РАВНОПРАВНЫХ УЗЛОВ | 2006 |
|
RU2421799C2 |
СПОСОБЫ ГИБКОГО ИСПОЛЬЗОВАНИЯ РЕСУРСОВ | 2017 |
|
RU2738349C2 |
УПРАВЛЕНИЕ ЦИФРОВЫМИ ДАННЫМИ С ПОМОЩЬЮ ПУЛА СОВМЕСТНО ИСПОЛЬЗУЕМОЙ ПАМЯТИ | 2008 |
|
RU2466451C2 |
УПРАВЛЯЮЩАЯ ИНФОРМАЦИЯ, СВЯЗАННАЯ С СЕТЕВЫМИ РЕСУРСАМИ | 2012 |
|
RU2595761C2 |
АУТЕНТИФИКАЦИЯ ПРОЦЕССОВ И РАЗРЕШЕНИЯ НА РЕСУРСЫ | 2013 |
|
RU2637878C2 |
ДИНАМИЧЕСКИЙ ВЫБОР УРОВНЕЙ ХРАНИЛИЩА | 2013 |
|
RU2616168C2 |
СРЕДСТВА УПРАВЛЕНИЯ ДОСТУПОМ К ОНЛАЙНОВОЙ СЛУЖБЕ С ИСПОЛЬЗОВАНИЕМ ВНЕМАСШТАБНЫХ ПРИЗНАКОВ КАТАЛОГА | 2011 |
|
RU2598324C2 |
Изобретение относится к способу и системе для диспетчеризации ресурса вычислительного устройства. Технический результат заключается в обеспечении диспетчеризации ресурса вычислительного устройства. В способе определяют первую величину ресурса, который используется первым экземпляром приложения, посредством определения величины ресурса, используемого процессом переднего плана, связанным с первым экземпляром приложения, и фоновыми задачами, связанными с первым экземпляром приложения, вычисляют и сохраняют первую прогнозируемую величину использования ресурсов для приложения на основании первой величины ресурса, определяют вторую величину ресурса для выделения второму экземпляру приложения на основании первой прогнозируемой величины использования ресурсов, причем приложение, выполняющееся на вычислительном устройстве, взаимодействует с диспетчером ресурсов вычислительного устройства для динамического управления тем, как выделяемая часть ресурса вычислительного устройства должна быть разделена между процессом переднего плана, связанным с приложением и одним или более фоновыми процессами, связанными с приложением. 3 н. и 8 з.п. ф-лы, 15 ил.
1. Способ, осуществляемый вычислительным устройством, для диспетчеризации его ресурса, содержащий этапы, на которых:
определяют первую величину ресурса, который используется первым экземпляром приложения, выполняющегося на вычислительном устройстве, причем определение включает в себя определение величины ресурса, который используется процессом переднего плана, связанным с первым экземпляром приложения, и одной или более фоновыми задачами, связанными с первым экземпляром приложения;
вычисляют первую прогнозируемую величину использования ресурсов для приложения на основании, по меньшей мере, первой величины ресурса;
сохраняют первую прогнозируемую величину использования ресурсов в хранилище данных;
определяют вторую величину ресурса, подлежащего выделению второму экземпляру приложения, подлежащего выполнению вычислительным устройством на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов, хранящейся в хранилище данных, причем приложение, выполняющееся на вычислительном устройстве, взаимодействует с диспетчером ресурсов вычислительного устройства для динамического управления тем, как выделяемая часть ресурса вычислительного устройства должна быть разделена между процессом переднего плана, связанным с приложением и одним или более фоновыми процессами, связанными с приложением.
2. Способ по п. 1, в котором ресурс содержит, по меньшей мере, один из:
ресурса энергозависимой или энергонезависимой памяти;
ресурса центрального процессора (CPU);
ресурса ввода/вывода (I/O);
сетевого ресурса;
ресурса питания; и
ресурса датчика.
3. Способ по п. 1, в котором вычисление первой прогнозируемой величины использования ресурсов для приложения на основании, по меньшей мере, первой величины ресурса содержит этапы, на которых:
получают максимальную величину использования ресурсов для приложения путем сравнения первой величины ресурса с одной или более ранее определенных величин ресурса, связанных с одним или более ранее выполненными экземплярами приложения; и
вычисляют первую прогнозируемую величину использования ресурсов на основании максимальной величины использования ресурсов.
4. Способ по п. 1, в котором вычисление первой прогнозируемой величины использования ресурсов для приложения на основании, по меньшей мере, первой величины ресурса содержит этапы, на которых:
получают среднюю величину использования ресурсов для приложения на основании первой величины ресурса и одной или более ранее определенных величин ресурса, связанных с ранее выполненными экземплярами приложения; и
вычисляют первую прогнозируемую величину использования ресурсов на основании средней величины использования ресурсов.
5. Способ по п. 4, в котором получение средней величины использования ресурсов для приложения на основании первой величины ресурса и одной или более ранее определенных величин ресурса, связанных с ранее выполненными экземплярами приложения, содержит этапы, на которых:
умножают первую величину ресурса на первый весовой коэффициент для получения первого произведения;
умножают величину скользящего среднего, полученную на основании, по меньшей мере, одной или более ранее определенных величин ресурса, на второй весовой коэффициент для получения второго произведения; и
суммируют первое произведение и второе произведение.
6. Способ по п. 1, дополнительно содержащий этапы, на которых:
в ответ на определение, что величина ресурса, используемого вторым экземпляром приложения, выполняющегося на вычислительном устройстве, превышает вторую величину ресурса, завершают один или более процессов, которые одновременно выполняются на вычислительном устройстве.
7. Способ по п. 1, дополнительно содержащий этап, на котором:
в ответ на определение, что вторая величина ресурса в данный момент недоступна, препятствуют выполнению второго экземпляра приложения.
8. Способ по п. 1, дополнительно содержащий этап, на котором:
в ответ на определение, что вторая величина ресурса в данный момент недоступна, завершают один или более процессов, которые в данный момент выполняются на вычислительном устройстве.
9. Способ по п. 1, в котором этапы определения, вычисления и сохранения содержат:
определение первой величины ресурса, который используется первым экземпляром приложения, выполняющегося на вычислительном устройстве со стороны первого пользователя;
вычисление первой прогнозируемой величины использования ресурсов для приложения и первого пользователя на основании, по меньшей мере, первой величины ресурса;
сохранение первой прогнозируемой величины использования ресурсов в хранилище данных; и
определение второй величины ресурса, подлежащего выделению второму экземпляру приложения, подлежащего выполнению вычислительным устройством со стороны первого пользователя на основании, по меньшей мере, первой прогнозируемой величины использования ресурсов, хранящейся в хранилище данных;
причем способ дополнительно содержит:
определение третьей величины ресурса, который используется третьим экземпляром приложения, выполняющегося на вычислительном устройстве со стороны второго пользователя;
вычисление второй прогнозируемой величины использования ресурсов для приложения и второго пользователя на основании, по меньшей мере, третьей величины ресурса;
сохранение второй прогнозируемой величины использования ресурсов в хранилище данных; и
определение четвертой величины ресурса, подлежащего выделению четвертому экземпляру приложения, подлежащего выполнению вычислительным устройством со стороны второго пользователя на основании, по меньшей мере, второй прогнозируемой величины использования ресурсов, хранящейся в хранилище данных.
10. Система, реализованная на вычислительном устройстве, для диспетчеризации его ресурса, содержащая:
по меньшей мере, один процессор; и
память, к которой может осуществлять доступ, по меньшей мере, один процессор, причем в памяти хранятся компоненты для выполнения, по меньшей мере, одним процессором, причем компоненты включают в себя:
диспетчер ресурсов, выполненный с возможностью осуществлять способ по п. 1.
11. Система по п. 10, в которой диспетчер ресурсов дополнительно выполнен с возможностью отслеживания схемы использования, по меньшей мере, одного ресурса вычислительного устройства одним или более приложением и пользователем, для сохранения информации, связанной со схемой использования, и использования сохраненной информации для прогностического выделения, по меньшей мере, части ресурса, по меньшей мере, одному процессу до его выполнения, по меньшей мере, одним процессором.
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
Многоступенчатая активно-реактивная турбина | 1924 |
|
SU2013A1 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Способ приготовления мыла | 1923 |
|
SU2004A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Авторы
Даты
2019-03-28—Публикация
2015-02-27—Подача