ЭКЗЕМПЛЯРЫ ПЛАНИРОВЩИКА В ПРОЦЕССЕ
SCHEDULER INSTANCES IN PROCESS

Уровень техники
Процессы, исполняемые в компьютерной системе, часто имеют задачи с разными приоритетами. Для желаемой работы процесс может расходовать существенные непроизводительные издержки, чтобы гарантировать, что подходящие процессорные ресурсы распределяются задачам на основе приоритетов задач. Эти непроизводительные издержки могут включать в себя использование планировщика, который планирует задачи процесса для исполнения в компьютерной системе.
Процессы с одним планировщиком обычно совместно используют процессорные ресурсы среди всех задач, сформированных процессом, и применяют одинаковую политику планирования ко всем задачам. Обычно процесс не имеет возможности непосредственно отдавать приоритет подмножеству задач посредством применения другой политики планирования к подмножеству. Хотя разработчик может выделять подмножества задач и назначать разделу контексты исполнения, предлагаемые операционной системой, этот подход может вынудить разработчика проектировать сложную инфраструктуру, которая может являться не оптимальной в компьютерных системах, в которых ресурсы распределяются динамически.
Сущность изобретения
Это описание сущности изобретения предоставлено для того, чтобы в упрощенной форме представить выбор концепций, которые далее описаны в подробном описании. Это описание сущности изобретения не предназначено для выявления ключевых признаков или существенных признаков заявленного предмета изобретения, а также не предназначено для использования в качестве ограничения объема заявленного предмета изобретения.
Обеспечивается среда исполнения компьютерной системы, которая создает несколько экземпляров планировщика в процессе. Каждый экземпляр планировщика включает в себя распределенные процессорные ресурсы, и ему назначается множество задач для исполнения. Экземпляр планировщика планирует задачи для исполнения с использованием распределенных процессорных ресурсов для выполнения работы процесса. Кроме того, задача в одном экземпляре планировщика может создать вложенный экземпляр планировщика.
Краткое описание чертежей
Сопроводительные чертежи включены в описание для обеспечения дополнительного понимания вариантов осуществления и составляют часть этого описания. Чертежи иллюстрируют варианты осуществления и вместе с описанием служат для разъяснения принципов вариантов осуществления. Другие варианты осуществления и многие из намеченных преимуществ вариантов осуществления будет нетрудно понять, поскольку они становятся лучше понятны со ссылкой на последующее подробное описание. Элементы чертежей необязательно масштабированы относительно друг друга. Аналогичные номера для ссылок назначаются соответствующим аналогичным частям.
Фигура 1 - блок-схема, иллюстрирующая вариант осуществления среды исполнения с процессом, который включает в себя несколько экземпляров планировщика.
Фигура 2 - блок-схема последовательности операций, иллюстрирующая вариант осуществления способа создания нескольких экземпляров планировщика в процессе.
Фигура 3 - блок-схема последовательности операций, иллюстрирующая вариант осуществления способа назначения контекстов исполнения экземплярам планировщика в процессе.
Фигуры 4A-4B - блок-схемы, иллюстрирующие варианты осуществления вложенных экземпляров планировщика в процессе.
Фигура 5 - блок-схема последовательности операций, иллюстрирующая вариант осуществления способа создания вложенного экземпляра планировщика в процессе.
Фигура 6 - блок-схема, иллюстрирующая вариант осуществления группы планирования для использования в планировщике.
Фигура 7 - блок-схема, иллюстрирующая вариант осуществления компьютерной системы, выполненной с возможностью реализовать среду исполнения с процессом, который включает в себя несколько экземпляров планировщика.
Подробное описание
В последующем подробном описании делается ссылка на сопроводительные чертежи, которые являются его частью и на которых показаны посредством иллюстрации конкретные варианты осуществления, в которых может быть осуществлено изобретение. В этом отношении термины указания направлений, такие как "верх", "низ", "перед", "зад", "передний", "задний" и т.д., используются относительно ориентации описываемых фигур. Поскольку компоненты вариантов осуществления могут быть расположены во множестве других ориентаций, термины указания направлений используются в целях иллюстрации и никоим образом не являются ограничивающими. Необходимо понимать, что могут использоваться другие варианты осуществления, и структурные или логические изменения могут быть сделаны без отступления от объема настоящего изобретения. Поэтому последующее подробное описание не должно быть воспринято в ограничивающем смысле, и объем настоящего изобретения определяется приложенной формулой изобретения.
Следует понимать, что признаки различных описанных здесь иллюстративных вариантов осуществления могут быть объединены друг с другом, если специально не указано иначе.
Фигура 1 является блок-схемой, иллюстрирующей вариант осуществления среды 10 исполнения с процессом 12A, который включает в себя несколько экземпляров 22(1)-22(N) планировщика, где N - целое число, большее или равное двум, и обозначает экземпляр 22(N) планировщика с порядковым номером N.
Среда 10 исполнения представляет режим исполнения в работе в компьютерной системе, например в компьютерной системе 100, показанной на фигуре 7 и более подробно описанной ниже, причем компьютерная система исполняет команды. Компьютерная система формирует среду 10 исполнения из платформы исполнения, например платформы 122 исполнения, показанной на фигуре 7 и более подробно описанной ниже.
Среда 10 исполнения включает в себя по меньшей мере один активизированный процесс 12A, уровень 14 управления ресурсами и множество аппаратных потоков 16(1)-16(M), где M - целое число, большее или равное одному, и обозначает аппаратный поток 16(M) с порядковым номером M. Среда 10 исполнения дает возможность задачам из процесса 12A исполняться наряду с задачами из любых других процессов, которые сосуществуют с процессом 12A (не показаны), с использованием уровня 14 управления ресурсами и аппаратных потоков 16(1)-16(M). Среда 10 исполнения работает совместно с уровнем 14 управления ресурсами, чтобы дать возможность процессу 12A получать процессорные и другие ресурсы компьютерной системы (например, аппаратные потоки 16(1)-16(M)). Среда 10 исполнения также работает совместно с уровнем 14 управления ресурсами, чтобы дать возможность нескольким экземплярам 22(1)-22(N) планировщика сосуществовать в процессе 12A.
Среда 10 исполнения содержит функцию планировщика, которая формирует каждый экземпляр 22 планировщика. В одном варианте осуществления функция планировщика реализована как прикладной программный интерфейс(API) планировщика. В других вариантах осуществления функция планировщика может быть реализована с использованием других подходящих программных конструкций. При активизации функция планировщика создает экземпляр 22 планировщика в процессе 12A или другом сосуществующем процессе, причем каждый экземпляр 22 планировщика планирует задачи процесса 12A для исполнения одним или более аппаратными потоками 16(1)-16(M). Среда 10 исполнения может использовать параллелизм высокого уровня, который разработчики прикладных программ или библиотек выражают в своих программах (например, процесс 12A) с использованием сопроводительных инструментальных средств, которые осведомлены о возможностях, предоставляемых функцией планировщика.
Процесс 12A включает в себя выделение процессорных и других ресурсов, которые размещают один или более контекстов исполнения (то есть потоков). Процесс 12A получает доступ к процессорным и другим ресурсам в компьютерной системе (например, к аппаратным потокам 16(1)-16(M)) от уровня 14 управления ресурсами. Процесс 12A заставляет задачи исполняться с использованием процессорных и других ресурсов.
Процесс 12A формирует работу в задачах переменной длины, где каждая задача соответствует контексту исполнения в экземпляре 22 планировщика. Каждая задача включает в себя последовательность команд, которые выполняют единицу работы при их исполнении компьютерной системой. Каждый контекст исполнения формирует поток (или аналогичное понятие операционной системы, например дочерний процесс), который исполняет соответствующие задачи на распределенных процессорных ресурсах. Каждый контекст исполнения включает в себя состояние программы и информацию о состоянии машины. Контексты исполнения могут завершиться, когда больше не осталось задач для исполнения. Для каждой задачи среда 10 исполнения и/или процесс 12A либо назначают задаче экземпляр 22 планировщика для планирования исполнения, либо, иначе, заставляют задачу исполняться без использования экземпляра 22 планировщика.
Процесс 12A может быть сконфигурирован для работы в компьютерной системе на основе любой подходящей модели исполнения, например модели стека или модели интерпретатора, и может представлять любой подходящий тип кода, например прикладную программу, библиотечную функцию или службу операционной системы. Процесс 12A имеет состояние программы и состояние машины, соответствующее множеству распределенных ресурсов, которые включают в себя заданное пространство адресов памяти. Процесс 12A исполняется автономно или в значительной степени автономно от любых сосуществующих процессов в среде 10 исполнения. В соответствии с этим процесс 12A не изменяет неблагоприятным образом состояние программы сосуществующих процессов или состояние машины любых ресурсов, распределенных сосуществующим процессам. Аналогичным образом сосуществующие процессы не изменяют неблагоприятным образом состояние программы процесса 12A или состояние машины любых ресурсов, распределенных процессу 12A.
Уровень 14 управления ресурсами распределяет процессорные ресурсы процессу 12A посредством назначения одного или более аппаратных потоков 16 процессу 12A. Уровень 14 управления ресурсами существует отдельно от операционной системы компьютерной системы (не показана на фигуре 1) в варианте осуществления, показанном на фигуре 1. В других вариантах осуществления уровень 14 управления ресурсами или некоторые, или все его функции могут быть включены в операционную систему.
Аппаратные потоки 16 располагаются в ядрах исполнения множества или одного или более процессорных пакетов (например, процессорных пакетов 102, показанных на фигуре 7 и более подробно описанных ниже) компьютерной системы. Каждый аппаратный поток 16 выполнен для исполнения команд независимо или в значительной степени независимо от других ядер исполнения и включает в себя состояние машины. Аппаратные потоки 16 могут быть включены в один процессорный пакет или могут быть распределены по нескольким процессорным пакетам. Каждое ядро исполнения в процессорном пакете может включать в себя один или более аппаратных потоков 16.
Процесс 12A неявно или явно заставляет каждый экземпляр 22(1)-22(N) планировщика быть созданным через функцию планировщика, предоставленную средой 10 исполнения. Экземпляр 22 планировщика может быть неявно создан, когда процесс 12A использует интерфейсы API, доступные в компьютерной системе, или функциональные возможности языка программирования. В ответ на интерфейс API или функциональные возможности языка программирования среда 10 исполнения создает экземпляр 22 планировщика с заданной по умолчанию политикой 37. Чтобы явно создать экземпляр 22 планировщика, процесс 12A может активизировать функцию планировщика, предоставленную средой 10 исполнения, и определить одну или более политик 37 для экземпляра 22 планировщика. Процесс 12A может увеличить или уменьшить количество активизированных экземпляров 22 планировщика в течение своего исполнения.
Каждый экземпляр 22 планировщика взаимодействует с уровнем 14 управления ресурсами для согласования процессорных и других ресурсов компьютерной системы таким способом, который является прозрачным для процесса 12. Уровень 14 управления ресурсами распределяет аппаратные потоки 16 экземплярам 22 планировщика на основе спроса и предложения и любой политики 37 экземпляров 22 планировщика.
(1)
(M)
(1)
(M)
В варианте осуществления, показанном на фигуре 1, экземпляры 22 планировщика управляют процессорными ресурсами посредством создания виртуальных процессоров 32, которые формируют абстракцию лежащих в основе потоков оборудования 16. Каждый экземпляр 22 планировщика включает в себя множество виртуальных процессоров 32(1)-32(P), где каждое значение P - целое число, большее или равное одному, и обозначает виртуальный процессор 32(P) с порядковым номером P в экземпляре 22 планировщика. Каждый экземпляр 22 планировщика может иметь одинаковые или разные количества виртуальных процессоров 32 в различных точках при исполнении процесса 12A (то есть каждое значение P-P может быть меньше, больше или равно любому другому из значений P-P во время исполнения процесса 12A). Каждый экземпляр 22 планировщика мультиплексирует виртуальные процессоры 32 в аппаратные потоки 16 посредством сопоставления каждого виртуального процессора 32 с аппаратным потоком 16. Каждый экземпляр 22 планировщика может сопоставить более одного виртуального процессора 32 с отдельным аппаратным потоком 16, но сопоставляет только один аппаратный поток 16 с каждым виртуальным процессором 32. В других вариантах осуществления каждый экземпляр 22 планировщика управляет процессорными ресурсами другими подходящими способами, чтобы заставить команды процесса 12 исполняться посредством аппаратных потоков 16.
Множество контекстов исполнения в каждом экземпляре 22 планировщика включает в себя множество контекстов 34(1)-34(P) исполнения с соответствующими задачами 36(1)-36(P), которые исполняются соответствующими виртуальными процессорами 32(1)-32(P), и в любой точке во время исполнения процесса 12A множество из нуля или более контекстов 38 исполнения. Каждый контекст 34 и 38 исполнения включает в себя информацию о состоянии, которая указывает, исполняется ли контекст 34 или 38 исполнения, является ли он готовым к исполнению (например, в ответ на его разблокирование или добавление к экземпляру 22 планировщика), или заблокированным. Контексты 34 исполнения, которые исполняются, были присоединены к виртуальному процессору 32 и в настоящий момент исполняются. Контексты 38 исполнения, которые являются готовыми к исполнению, включают в себя соответствующую задачу 40 и готовы исполняться доступным виртуальным процессором 32. Контексты 38 исполнения, которые заблокированы, также включают в себя соответствующую задачу 40 и ожидают данные, сообщение или событие, которое формируется другим контекстом 34 исполнения или будет сформировано другим контекстом 38 исполнения.
Каждый контекст 34 исполнения, исполняющийся на виртуальном процессоре 32, может сформировать в ходе своего исполнения дополнительные задачи 42, которые организуются любым подходящим образом (например, добавляются к рабочим очередям (не показаны на фигуре 1)). Работа может быть создана либо посредством использования прикладных программных интерфейсов (API), предоставленных средой 10 исполнения, либо посредством использования функциональных возможностей языка программирования и соответствующих инструментальных средств в одном варианте осуществления. Когда процессорные ресурсы доступны для экземпляра 22 планировщика, задачи назначаются контекстам 34 или 38 исполнения, которые исполняют их до завершения или точки блокирования (например, ожидания сообщения или завершения перехваченной дочерней задачи) на виртуальных процессорах 32 перед выборкой новых задач. Когда задача разблокируется, задача подвергается повторному планированию для исполнения на доступном виртуальном процессоре, возможно, с приоритетом, данным выбору виртуального процессора 32 на аппаратном потоке 16, на котором она исполнялась перед блокированием, в надежде на то, что иерархия памяти (то есть иерархия кэша) уже содержит данные, которые могут быть оптимально повторно использованы. Контекст 34 исполнения, исполняющийся на виртуальном процессоре 32, также может разблокировать другие контексты 38 исполнения посредством формирования данных, сообщения или события, которые будут использоваться другими контекстами 38 исполнения.
Каждая задача в каждом экземпляре 22 планировщика может являться осуществленной (например, осуществленные задачи 36 и 40), что указывает, что контекст 34 или 38 исполнения был или будет присоединен к задаче, и задача готова к исполнению. Осуществленные задачи обычно включают в себя разблокированные контексты исполнения и запланированные агенты. Задача, которая не является осуществленной, называется неосуществленной. Неосуществленные задачи (например, задачи 42) могут быть созданы как дочерние задачи, сформированные посредством исполнения родительских задач, и могут быть сформированы параллельными конструкциями (например, parallel, parallel for, begin и finish). Каждый экземпляр 22 планировщика может быть организован в синхронизированную коллекцию (например, стек и/или очередь) для логически независимых задач с контекстами исполнения (то есть для осуществленных задач) наряду со списком очередей перехвата работ для зависимых задач (то есть неосуществленных задач), как проиллюстрировано в варианте осуществления на фигуре 6, описанном ниже.
После завершения, блокирования или другого прерывания (например, явной уступки или принудительного приоритетного прерывания) задачи 36, соответствующей контексту 34 исполнения, исполняющемуся на виртуальном процессоре 32, виртуальный процессор 32 становится доступным для исполнения другой осуществленной задачи 40 или неосуществленной задачи 42. Экземпляр 22 планировщика выполняет поиск готового к исполнению контекста 38 исполнения или неосуществленной задачи 42 для присоединения к доступному виртуальному процессору 32 для исполнения любым подходящим образом. Например, экземпляр 22 планировщика может сначала выполнить поиск готового к исполнению контекста 38 исполнения для исполнения перед поиском неосуществленной задачи 42 для исполнения. Каждый экземпляр 22 планировщика продолжает прикреплять контексты 38 исполнения к доступным виртуальным процессорам 32 для исполнения до тех пор, пока все задачи и контексты 38 исполнения экземпляра 22 планировщика не будут исполнены.
Экземпляры 22 планировщика могут иметь контексты исполнения гетерогенных типов. В вариантах осуществления компьютерной системы, которые включают в себя операционную систему Windows, где процесс 12A является процессом Windows, разные экземпляры 22 планировщика в процессе Windows могут включать в себя контексты исполнения потоков и контексты исполнения волокон. В соответствии с этим контексты исполнения потоков и контексты исполнения волокон могут существовать в одном и том же процессе Windows.
До исполнения задач каждый экземпляр 22 планировщика получает контексты 34 и 38 исполнения от среды 10 исполнения или операционной системы (например, OS 120 на фигуре 7). Доступные виртуальные процессоры 32 определяют местонахождение и исполняют контексты 34 исполнения, чтобы начать исполнять задачи. Виртуальные процессоры 32 становятся доступными снова в ответ на завершение, блокирование или иное прерывание задачи 36, соответствующей контексту 34 исполнения. Когда виртуальные процессоры 32 становятся доступны, виртуальные процессоры 32 переключаются на готовый к исполнению контекст 38 исполнения или исполняют следующую задачу 40 или 42 как продолжение на текущем контексте 34 исполнения, если завершена предыдущая задача 36, исполняемая текущим контекстом 34 исполнения.
В одном варианте осуществления экземпляры 22 планировщика работают автономно друг от друга и взаимодействуют с общим уровнем 14 управления ресурсами под ними. В других вариантах осуществления экземпляры 22 планировщика взаимодействуют с уровнем 14 управления ресурсами и друг с другом, чтобы дать возможность работе, запланированной на одном экземпляре экземпляра 22 планировщика, координироваться с работой, запланированной на другом экземпляре 22 планировщика.
Каждый экземпляр 22 планировщика может иметь одинаковые или разные политики 37. Среда 10 исполнения и/или процесс 12A определяют политику 37 для экземпляра 22 планировщика, когда экземпляр 22 планировщика активизируется. Политика 37 каждого экземпляра 22 планировщика может определять один или более элементов множества, состоящего из:
1) количества процессорных ресурсов, которые должны быть распределены (например, минимальное, желаемое и/или максимальное количество);
2) типа совместного использования (например, исключительный или с обеспечением совместного доступа);
3) типа приоритета (например, высокий, средний или низкий);
4) типа равнодоступности (например, увеличение локальности кэша или увеличение равнодоступности);
5) типов поведения (например, порог неконтролируемых рутинных операций, порог неактивности, порог фрагментации и/или другие типы поведения перераспределения ресурсов);
6) типа порядка исполнения (например, порядок "последним вошел, первым вышел" ("магазин", LIFO), порядок "первым вошел, первым вышел" (в порядке поступления, FIFO) или заданный по умолчанию порядок для качества обслуживания или гарантий упорядочения); и
7) типа топологии (то есть информации, которая определяет специфическую характеристику местоположения (например, множество связанных процессорных ресурсов в компьютерной системе), и/или информации, которая определяет специфическую характеристику ресурса (например, множество процессорных ресурсов с выбранными возможностями набора микросхем в компьютерной системе)).
В дополнение к процессу 12A другие сосуществующие процессы в среде 10 исполнения (не показаны) могут включать в себя ноль или более экземпляров 22 планировщика, количество которых может увеличиваться или уменьшаться в течение исполнения процессов.
Фигура 2 является блок-схемой последовательности операций, иллюстрирующей вариант осуществления способа создания нескольких экземпляров 22 планировщика в процессе 12A. Способ на фигуре 2 может быть выполнен неявно или явно посредством процесса 12A и/или среды 10 исполнения в компьютерной системе в одном варианте осуществления.
По меньшей мере первый и второй экземпляры 22(1) и 22(2) планировщика создаются в процессе 12A, как указано на этапе 52. Каждый из экземпляров 22(1) и 22(2) планировщика включает в себя команды, исполнимые компьютерной системой, чтобы заставить соответствующие множества из одной или более задач, назначенных средой 10 исполнения и/или процессом 12A, исполняться на соответствующих подмножествах процессорных ресурсов. Множество процессорных ресурсов включает в себя аппаратные потоки 16 и в одном варианте осуществления также включает в себя виртуальные процессоры 32, распределенные уровнем 14 управления ресурсами. Когда уровень 14 управления ресурсами распределяет множества виртуальных процессоров 32 экземплярам 22(1) и 22(2) планировщика, множества виртуальных процессоров 32 представляют собой соответствующие подмножества ресурсов процессора (то есть аппаратные потоки 16) компьютерной системы. В соответствии с этим уровень 14 управления ресурсами сопоставляет каждое множество виртуальных процессоров 32 с соответствующим множеством аппаратных потоков 16.
Экземпляры 22(1) и 22(2) планировщика могут быть неявно или явно инициализированы средой 10 исполнения и/или процессом 12A с использованием функции планировщика среды 10 исполнения, как описано выше. Экземпляры 22(1) и 22(2) планировщика также могут быть инициализированы в одно и то же время (например, когда инициализируется процесс 12A) или в разное время во время исполнения процесса 12A. Кроме того, экземпляры 22(1) и 22(2) планировщика могут иметь одинаковые или разные политики 37.
Среда 10 исполнения и/или процесс 12A назначают множество из одной или более задач экземпляру 22(1) планировщика для исполнения и множество из одной или более задач экземпляру 22(2) планировщика для исполнения. Среда 10 исполнения и/или процесс 12A могут назначить множества задач на основе соответствующей политики 37 экземпляров 22(1) и 22(2) планировщика, как описано более подробно ниже со ссылкой на фиг.3, или на основе других критериев.
Как показано на фигуре 2, первое множество задач планируется для исполнения экземпляром 22(1) планировщика, как указано на этапе 54. Когда виртуальный процессор 32 экземпляра 22(1) планировщика становится доступным, экземпляр 22(1) планировщика прикрепляет контекст 34 исполнения к доступному виртуальному процессору 32 и привязывает задачу из множества задач в экземпляре 22(1) планировщика к контексту 34 исполнения, чтобы заставить задачу исполняться виртуальным процессором 32 через лежащий в основе аппаратный поток 16. Экземпляр 22(1) планировщика продолжает исполнять задачи из множества задач, пока все задачи в экземпляре 22(1) планировщика не будут исполнены.
Аналогичным образом, второе множество задач планируется для исполнения экземпляром 22(2) планировщика, как указано на этапе 56. Когда виртуальный процессор 32 экземпляра 22(2) планировщика становится доступным, экземпляр 22(2) планировщика прикрепляет контекст 34 исполнения к доступному виртуальному процессору 32 и привязывает задачу из множества задач в экземпляре 22(2) планировщика к контексту 34 исполнения, чтобы заставить задачу исполняться виртуальным процессором 32 через лежащий в основе аппаратный поток 16. Экземпляр 22(2) планировщика продолжает исполнять задачи из множества задач, пока все задачи в экземпляре 22(2) планировщика не будут исполнены.
Теперь будет описан пример использования способа на фигуре 2 в соответствии с одним вариантом осуществления. В этом примере процесс 12A является прикладной программой, которая выполняет обработку аудио и видео, и обработка аудио имеет приоритет над обработкой видео. В соответствии с этим процесс 12A активизирует первый экземпляр 22(1) планировщика с большим количеством процессорных ресурсов для выполнения обработки аудио и второй экземпляр 22(2) планировщика с малым количеством процессорных ресурсов для выполнения обработки видео. Среда 10 исполнения назначает множество задач, относящихся к обработке аудио, экземпляру 22(1) планировщика, как определено процессом 12A, и назначает множество задач, относящихся к обработке видео, экземпляру 22(2) планировщика, как определено процессом 12A. Если количество процессорных ресурсов, распределенных процессу 12A, изменяется, среда 10 исполнения может скорректировать количество процессорных ресурсов, распределенных экземплярам 22(1) и/или 22(2) планировщика, гарантируя, что экземпляр 22(1) планировщика имеет достаточные процессорные ресурсы для обработки аудио с более высоким приоритетом.
Фигура 3 является блок-схемой последовательности операций, иллюстрирующей вариант осуществления способа назначения множества из одной или более задач экземплярам 22 планировщика в процессе 12A. Когда среда 10 исполнения и/или процесс 12A определяют, что множество задач должно быть назначено экземпляру 22 планировщика для исполнения, среда 10 исполнения и/или процесс 12A идентифицируют политики 37 всех экземпляров 22 планировщика 22, как указано на этапе 62, и назначают множество задач экземплярам 22 планировщика на основе политик 37, как указано на этапе 64.
Среда 10 исполнения может предоставить процессу 12A возможность запросить экземпляр 22 планировщика с одной или более политиками 37, которые наиболее близко соответствуют одной или более политикам, определенных процессом 12A. Среда 10 исполнения выполняет поиск экземпляров 22 планировщика в процессе 12A и выбирает экземпляр 22 планировщика на основе предопределенной эвристики, которая может быть сконфигурирована.
Если вернуться к приведенному выше примеру, когда процесс 12A выполняет обработку аудио и видео, среда 10 исполнения может определить из соответствующей политики 37 экземпляров 22(1) и 22(2) планировщика, что экземпляр 22(1) планировщика сконфигурирован так, чтобы иметь больше процессорных ресурсов, чем экземпляр 22(2) планировщика. В соответствии с этим среда 10 исполнения может назначить задачи обработки аудио с более высоким приоритетом экземпляру 22(1) планировщика, как определено процессом 12A, и задачи обработки видео с более низким приоритетом экземпляру 22(2) планировщика, как определено процессом 12A.
Использование нескольких экземпляров 22 планировщика, как описано выше со ссылкой на фигуры 1-3, может эффективно предоставить способ определения ограничения политики на разделах работы в процессе 12A. Разработчики процесса могут захотеть создать несколько экземпляров 22 планировщика в процессе, каждый - с отличающейся политикой 37, и заставить помещать единицы работы на подходящие экземпляры 22 планировщика в зависимости от характера работы. Разработчики могут настроить параметры политик 37 экземпляров 22 планировщика, чтобы по желанию воздействовать на пропускную способность или быстроту реагирования процессов.
В дополнение к множествам задач, назначенным экземплярам 22 планировщика, процесс 12A может получить доступ к процессорным ресурсам, которые являются отдельными от процессорных ресурсов, распределенных экземплярам 22 планировщика. Например, среда 10 исполнения может позволить распределить процесс 12A виртуальным процессорам 32 из уровня 14 управления ресурсами в дополнение к тем, которые распределены экземплярам 22 планировщика. Среда 10 исполнения и/или процесс 12A может заставить выбранные множества задач исполняться на этих отдельных процессорных ресурсах, чтобы заставить выбранные контексты 34 исполнения исполняться без использования экземпляров 22 планировщика.
Как показано в вариантах осуществления на фигурах 4A-4B и 5, среда 10 исполнения также позволяет контексту 34 выполнения динамически вложить новый экземпляр 22(2) планировщика в существующий экземпляр 22(1) планировщика. Задача 36(2), которая исполняется на контексте 34(2) исполнения в существующем экземпляре 22(1) планировщика, может активизировать функцию планировщика среды 10 исполнения, чтобы создать новый экземпляр экземпляра 22(2) планировщика. Фигуры 4A-4B являются блок-схемами, иллюстрирующими варианты осуществления экземпляров 22(1) и 22(2) планировщика, существующих рядом в процессе 12B, где контекст 34(2) исполнения экземпляра 22(1) планировщика вкладывает экземпляр 22(2) планировщика в экземпляр 22(1) планировщика. Фигура 5 является блок-схемой, иллюстрирующей вариант осуществления способа создания вложенного экземпляра 22(2) планировщика на контексте 34 исполнения, первоначально принадлежащего планировщику 22(1) в процессе 12B.
Как показано на фигурах 4A и 5, первый экземпляр 22(1) планировщика создается в процессе 12B, как указано на этапе 72. В примере на фигуре 4A экземпляр 22(1) планировщика включает в себя множество виртуальных процессоров 32(1) и 32(2), которые исполняют контексты 34(1) и 34(2) исполнения соответственно. Экземпляр 22(1) планировщика также включает в себя пул контекстов 38 исполнения, которые ожидают своего исполнения, и политики 37. Каждый из контекстов 34(1)-34(2) и 38 исполнения включает в себя данные 44(1), которые идентифицируют экземпляр 22(1) планировщика. Данные 44(1) сохраняются с каждым из контекстов 34(1)-34(2) и 38 исполнения в результате распределения каждого из контекстов 34(1)-34(2) и 38 исполнения экземпляру 22(1) планировщика. Данные 44(1) могут храниться в стеке в локальной памяти каждого из контекстов 34(1)-34(2) и 38 исполнения и представляют собой первую запись, которая была помещена в стек, в одном варианте осуществления.
Задача 36(2), исполняющаяся на контексте 34(2) исполнения в экземпляре 22(1) планировщика в процессе 12B, может вызвать создание второго экземпляра 22(2) планировщика, как указано на этапе 74. Политика 37 экземпляра 22(2) планировщика может отличаться от политики 37 экземпляра 22(1) планировщика, чтобы дать возможность экземплярам 22(1) и 22(2) планировщика исполнять разные множества задач с разными показателями производительности. В примере на фигурах 4A и 4B задача 36(2), исполняющаяся на контексте 34(2) исполнения, вызывает создание экземпляра 22(2) планировщика с политикой 37 и тем самым динамически вкладывает экземпляр 22(2) планировщика в контекст 34(2) исполнения. Виртуальный процессор 32(1) в экземпляре 22(2) планировщика выполняет выборку контекста 34(2) исполнения для исполнения. В экземпляре 22(1) планировщика виртуальный процессор 32(2), который был ранее назначен контексту 34(2) исполнения, становится доступным для исполнения других задач в планировщике 22(1). В соответствии с этим виртуальный процессор 32(2) в экземпляре 22(1) планировщика выполняет выборку контекста 38(1) исполнения для исполнения задачи 40(1).
Данные 44(2), которые идентифицируют экземпляр 22(2) планировщика, сохраняются с контекстом 34(2) исполнения в результате перемещения контекста 34(2) исполнения в экземпляр 22(2) планировщика. Данные 44(2) могут храниться в стеке в локальной памяти контекста 34(2) исполнения и помещаются поверх первой записи в стеке, который включает в себя данные 44(1), в одном варианте осуществления. Верхняя запись стека указывает текущий экземпляр 22 планировщика для каждого контекста 44 исполнения.
Вложенный экземпляр 22(2) планировщика может быть создан с дополнительными виртуальными процессорами 32, например с виртуальным процессором 32(2), как показано в примере на фигуре 4B.
Каждый из экземпляров 22(1) и 22(2) планировщика планирует соответствующие множества задач для исполнения с использованием соответствующих множеств виртуальных процессоров 32, как указано на этапе 76.
Экземпляр 22(1) планировщика продолжает планировать задачи экземпляра 22(1) планировщика для исполнения на виртуальных процессорах 32(1) и 32(2) экземпляра 22(1) планировщика, и экземпляр 22(2) планировщика планирует задачи экземпляра 22(1) планировщика, которые формируются задачей 36(2) на контексте 34(2) выполнения для исполнения на виртуальных процессорах 32(1) и 32(2) экземпляра 22(2) планировщика.
Среда 10 исполнения и/или процесс 12B может продолжать назначать дополнительные множества задач экземпляру 22(1) планировщика, которые выбираются контекстами 34 и 38 исполнения для исполнения. Данные 44(1), которые идентифицируют экземпляр 22(1) планировщика, хранятся с любыми дополнительными контекстами исполнения, распределенными экземпляру 22(1) планировщика.
Однако среда 10 исполнения и/или процесс 12B позволяет назначать вложенному экземпляру 22(2) планировщика только задачи, которые формируются задачей 36(2) на контексте 34(2) исполнения. В примере на фигуре 4B задача 36(3) на контексте 34(3) исполнения исполняется виртуальным процессором 32(2) и пул контекстов 38 исполнения ожидает своего исполнения экземпляром 22(2) планировщика. Данные 44(2), которые идентифицируют экземпляр 22(2) планировщика, хранятся с контекстами 34(2)-34(3) и 38 исполнения в экземпляре 22(2) планировщика.
Контекст 34(2) исполнения может, в конечном счете, быть возвращен экземпляру 22(1) планировщика, как указано на этапе 78. Чтобы сделать это, данные 44(2) удаляются из контекста 34(2) исполнения, с тем чтобы данные 44(1) указывали, что контекст 34(2) исполнения принадлежит экземпляру 22(1) планировщика. Когда данные 44(1) и 44(2) хранятся в виде стека, данные 44(2) выталкиваются с вершины стека и данные 44(1) возвращаются на вершину стека. Виртуальный процессор 32 планировщика 22(1) выполняет выборку контекста 34(2) исполнения для исполнения.
С использованием способа на фигуре 5 любое количество экземпляров 22 планировщика может быть расположено в стеке или вложено в каждый контекст 34 исполнения, причем каждый экземпляр 22 планировщика включает в себя желаемую политику 37, которая может отличаться от политики 37 других экземпляров 22 планировщика. Каждый контекст исполнения включает в себя данные 44, которые идентифицируют назначенный экземпляр 22 планировщика. Новые данные 44, которые идентифицируют новый экземпляр 22 планировщика, добавляются (например, на стек) к контексту исполнения каждый раз, когда контекст исполнения перемещается в новый экземпляр 22 планировщика.
В других вариантах осуществления вложенный экземпляр 22 планировщика может быть более тесно интегрирован с родительским экземпляром 22 планировщика, чтобы потенциально дать возможность совместного использования ресурсов между родительскими и вложенными экземплярами 22 планировщика.
С использованием способа на фигуре 5 разработчики библиотек могут эффективно создавать библиотеки, которые вкладывают экземпляры 22 планировщика с выбранной политикой планировщика или предпочтениями политики. Это может позволить разработчику библиотек гарантировать, что библиотечные функции в библиотеке исполняются с наиболее подходящей политикой планировщика для функций независимо от политики планировщика лежащего над ними процесса. Например, задача 36(2) на контексте 34(2) исполнения может представлять собой библиотечную функцию, вызываемую процессом 12B, в примере на фигурах 4A-4B. Посредством использования экземпляра 22(2) планировщика контекст 34(2) исполнения может выполняться более эффективно, чем если бы он исполнялся экземпляром 22(1) планировщика.
В одном варианте осуществления процессы 12A и 12B организуют задачи в одну или более групп 90 планирования и представляют группы 90 планирования экземплярам 22 планировщика. Фигура 6 является блок-схемой, иллюстрирующей вариант осуществления группы 90 планирования для использования в экземпляре 22 планировщика.
Группа 90 планирования включает в себя коллекцию 92 готовых к исполнению задач, коллекцию 93 осуществленных задач, коллекцию 94 работ и множество из нуля или более очередей 96 перехвата работ. Коллекция 92 готовых к исполнению задач содержит список разблокированных контекстов 38 исполнения. Экземпляр 22 планировщика добавляет контекст 38 исполнения к коллекции 92 готовых к исполнению задач, когда контекст исполнения становится разблокированным. Коллекция 93 осуществленных задач содержит список осуществленных задач 40 (например, неначатых агентов), которые могут иметь или не иметь соответствующие контексты 38 исполнения. Экземпляр 22 планировщика добавляет осуществленную задачу к коллекции 93 осуществленных задач, когда новая, готовая к исполнению задача представляется экземпляру 22 планировщика процессом 12. Коллекция 94 работ содержит список очередей 96 перехвата работ, как обозначено стрелкой 98, и отслеживает контексты 34 исполнения, которые исполняют задачи из очередей 96 перехвата работ. Каждая очередь 96 перехвата работ включает в себя одну или более неосуществленных задач 42.
Используя вариант осуществления на фигуре 6, экземпляр 22 планировщика может сначала выполнить поиск незаблокированных контекстов 38 исполнения в коллекции 92 готовых к исполнению задач каждой группы 90 планирования в экземпляре 22 планировщика. Экземпляр 22 планировщика может затем выполнить поиск осуществленных задач в коллекции 93 осуществленных задач всех групп 90 планирования в экземпляре 22 планировщика перед поиском неосуществленных задач в очередях 96 перехвата работ групп 90 планирования.
В одном варианте осуществления виртуальный процессор 32, который становится доступным, может попытаться определить местонахождение готового к исполнению контекста 38 исполнения в коллекции 92 готовых к исполнению задач или осуществленной задачи 40 в коллекции 93 осуществленных задач в группе 90 планирования, из которой доступный виртуальный процессор 32 последний раз получил готовый к исполнению контекст 38 исполнения (то есть в текущей группе 90 планирования). Доступный виртуальный процессор 32 может затем попытаться определить местонахождение готового к исполнению контекста 38 исполнения в коллекциях 92 готовых к исполнению задач или осуществленной задачи 40 в коллекции 93 осуществленных задач в оставшихся группах 90 планирования экземпляра 22 планировщика в круговом или другом подходящем порядке. Если готовый к исполнению контекст 38 исполнения не найден, то доступный виртуальный процессор 32 может тогда попытаться определить местонахождение неосуществленной задачи 42 в очередях 96 перехвата работ из текущей группы 90 планирования, прежде чем выполнять поиск в очередях 96 перехвата работ в оставшихся группах 90 планирования экземпляра 22 планировщика в круговом или другом подходящем порядке.
Фигура 7 является блок-схемой, иллюстрирующей вариант осуществления компьютерной системы 100, выполненной с возможностью реализовать среду 10 исполнения с несколькими экземплярами 22 планировщика в процессе 12A или 12B. Компьютерная система 100 включает в себя один или более процессорных пакетов 102, систему 104 памяти, ноль или более устройств 106 ввода/вывода, ноль или более устройств 108 отображения, ноль или более периферийных устройств 110 и ноль или более сетевых устройств 112. Процессорные пакеты 102, система 104 памяти, устройства 106 ввода/вывода, устройства 108 отображения, периферийные устройства 110 и сетевые устройства 112 взаимодействуют с использованием множества соединений 114, которые включают в себя контроллеры, шины, интерфейсы и/или другие проводные или беспроводные соединения любого подходящего типа, конфигурации и в любом количестве.
Компьютерная система 100 представляет собой любое подходящее устройство обработки, выполненное для общей или специальной цели. Примеры компьютерной системы 100 включают в себя сервер, персональный компьютер, переносной компьютер, планшетный компьютер, персональное информационное устройство (PDA), мобильный телефон и устройство для работы с аудио/видео. Компоненты компьютерной системы 100 (то есть процессорные пакеты 102, система 104 памяти, устройства 106 ввода/вывода, устройства 108 отображения, периферийные устройства 110, сетевые устройства 112 и соединения 114) могут содержаться в общем корпусе (не показан) или в любом подходящем количестве отдельных корпусов (не показаны).
Процессорные пакеты 102 включают в себя аппаратные потоки 16(1)-16(M). Каждый аппаратный поток 16 в процессорных пакетах 102 выполнен с возможностью получать доступ и выполнять команды, хранящиеся в системе 104 памяти. Команды могут включать в себя базовую систему ввода/вывода (BIOS) или встроенное программное обеспечение (не показаны), операционную систему (OS) 120, платформу 122 исполнения, прикладные программы 124 и уровень 14 управления ресурсами (также показанный на фигуре 1). Каждый аппаратный поток 16 может выполнять команды совместно или в ответ на информацию, принятую от устройств 106 ввода/вывода, устройств 108 отображения, периферийных устройств 110 и/или сетевых устройств 112.
Компьютерная система 100 выполняет начальную загрузку и исполняет операционную систему 120. Операционная система 120 включает в себя команды, исполняемые аппаратными потоками 16, для управления компонентами компьютерной системы 100 и предоставления множества функций, которые позволяют прикладным программам 124 получать доступ к компонентам и использовать их. В одном варианте осуществления операционная система 120 является операционной системой Windows. В других вариантах осуществления операционная система 120 является другой операционной системой, подходящей для использования с компьютерной системой 100.
Уровень 14 управления ресурсами включает в себя команды, которые являются исполнимыми совместно с операционной системой 120, для распределения ресурсов компьютерной системы 100, в том числе аппаратных потоков 16, как описано выше со ссылкой на фигуру 1. Уровень 14 управления ресурсами может быть включен в компьютерную систему 100 как библиотека функций, доступных для одной или более прикладных программ 124, или как интегрированная часть операционной системы 120.
Платформа 122 исполнения включает в себя команды, которые являются исполнимыми совместно с операционной системой 120 и уровнем 14 управления ресурсами для формирования среды 10 исполнения и предоставления функций исполнения прикладным программам 124. Эти функции исполнения включают в себя функцию планировщика, как описано более подробно выше со ссылкой на фигуру 1. Функции исполнения могут быть включены в компьютерную систему 100 как часть прикладной программы 124, как библиотека функций, доступных для одной или более прикладных программ 124, или как интегрированная часть операционной системы 120 и/или уровня 14 управления ресурсами.
Каждая прикладная программа 124 включает в себя команды, которые являются исполнимыми совместно с операционной системой 120, уровнем 14 управления ресурсами и/или платформой 122 исполнения, чтобы заставить желаемые операции выполняться компьютерной системой 100. Каждая прикладная программа 124 представляет собой один или более процессов, например, описанные выше процессы 12A и 12B, которые могут исполняться с несколькими экземплярами 22 планировщика, как обеспечено операционной системой 120, уровнем 14 управления ресурсами и/или платформой 122 исполнения.
Система 104 памяти включает в себя энергозависимые или энергонезависимые запоминающие устройства любого подходящего типа, конфигурации и в любом количестве, выполненные с возможностью хранить команды и данные. Запоминающие устройства системы 104 памяти представляют собой машиночитаемые носители данных, которые хранят исполняемые на компьютере команды, в том числе операционную систему 120, уровень 14 управления ресурсами, платформу 122 исполнения и прикладные программы 124. Команды являются исполнимыми компьютерной системой для выполнения функций и способов операционной системы OS, уровня 14 управления ресурсами, платформы 122 исполнения и прикладных программ 124, описанных здесь. Примеры запоминающих устройств в системе 104 памяти включают в себя накопители на жестких дисках, оперативное запоминающее устройство (ОЗУ; RAM), постоянное запоминающее устройство (ПЗУ; ROM), накопители и карты флэш-памяти и магнитные и оптические диски.
Система 104 памяти хранит команды и данные, принятые от процессорных пакетов 102, устройств 106 ввода/вывода, устройств 108 отображения, периферийных устройств 110 и сетевых устройств 112. Система 104 памяти предоставляет сохраненные команды и данные процессорным пакетам 102, устройствам 106 ввода/вывода, устройствам 108 отображения, периферийным устройствам 110 и сетевым устройствам 112.
Устройства 106 ввода/вывода включают в себя устройства ввода/вывода любого подходящего типа, конфигурации и в любом количестве, выполненные с возможностью вводить команды или данные от пользователя в компьютерную систему 100 и выводить команды или данные от компьютерной системы 100 пользователю. Примеры устройств 106 ввода/вывода включают в себя клавиатуру, мышь, сенсорную панель, сенсорный экран, кнопки, дисковые шкалы, рукоятки и переключатели.
Устройства 108 отображения включают в себя устройства отображения любого подходящего типа, конфигурации и в любом количестве, выполненные с возможностью выводить текстовую и/или графическую информацию пользователю компьютерной системы 100. Примеры устройств 108 отображения включают в себя монитор, экран дисплея и проектор.
Периферийные устройства 110 включают в себя периферийные устройства любого подходящего типа, конфигурации и в любом количестве, выполненные с возможностью работать с одним или более другими компонентами в компьютерной системе 100 для выполнения общих или специализированных функций обработки.
Сетевые устройства 112 включают в себя сетевые устройства любого подходящего типа, конфигурации и в любом количестве, выполненные с возможностью позволять компьютерной системе 100 взаимодействовать через одну или более сетей (не показаны). Сетевые устройства 112 могут работать в соответствии с любым подходящим сетевым протоколом и/или конфигурацией, чтобы дать возможность передавать информацию посредством компьютерной системы 100 в сеть или принимать ее посредством компьютерной системы 100 из сети.
Хотя здесь были проиллюстрированы и описаны заданные варианты осуществления, специалисты в данной области техники поймут, что вместо заданных вариантов осуществления, которые показаны и описаны, может быть использовано множество альтернативных и/или эквивалентных реализаций без отступления от объема настоящего изобретения. Эта заявка предназначена для охвата любой адаптации или разновидности заданных вариантов осуществления, обсужденных здесь. Поэтому подразумевается, что это изобретение ограничено только формулой изобретения и ее эквивалентами.