восстановление управления ресурсом обработки, который исполняет внешний контекст исполнения
Классы МПК: | G06F9/06 с хранимой программой, те с записью и хранением программы в устройствах памяти вычислительных машин |
Автор(ы): | РИНГСЕТ Пол (US), ФЕРНАНДЕС Женевьев (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2009-05-01 публикация патента:
27.09.2013 |
Изобретение относится к области планирования задач процессов для исполнения в компьютерной системе. Техническим результатом является повышение надежности работы планировщика. Планировщик в процессе компьютерной системы обеспечивает возможность исполнения внешнего контекста исполнения в ресурсе обработки, выделяемом планировщику. Планировщик предоставляет управление ресурсом обработки внешнему контексту исполнения. Планировщик регистрируется на получение уведомления о событии завершения, ассоциированном с внешним контекстом исполнения. В ответ на прием уведомления о том, что произошло событие завершения, планировщик восстанавливает управление ресурсом обработки и обеспечивает выполнение задачи, ассоциированной с контекстом исполнения, управляемым планировщиком, с помощью ресурса обработки. 2 н. и 13 з.п. ф-лы, 8 ил.
Формула изобретения
1. Способ, выполняемый планировщиком (22) процесса (12), исполняющегося в компьютерной системе (100), при этом способ содержит этапы, на которых
предоставляют первый ресурс (16/32) обработки планировщика для использования первым контекстом (26) исполнения таким образом, что первый ресурс обработки не находится под управлением планировщика;
регистрируются на получение уведомления о событии завершения, ассоциированном с первым внешним контекстом исполнения; и
восстанавливают управление первым ресурсом обработки в ответ на прием уведомления о событии завершения.
2. Способ по п.1, дополнительно содержащий этап, на котором
исполняют первый контекст исполнения с помощью первого ресурса обработки.
3. Способ по п.1, дополнительно содержащий этап, на котором
выполняют задачу (40) планировщика в первом ресурсе обработки после восстановления управления первым ресурсом обработки.
4. Способ по п.3, дополнительно содержащий этап, на котором ассоциируют задачу со вторым контекстом (38) исполнения перед выполнением задачи.
5. Способ по п.4, в котором первый контекст исполнения создан процессом, при этом второй контекст исполнения создан планировщиком.
6. Способ по п.1, дополнительно содержащий этап, на котором
выполняют задачу (36) планировщика в первом ресурсе обработки перед предоставлением первого ресурса обработки для использования первым контекстом исполнения.
7. Способ по п.1, дополнительно содержащий этап, на котором регистрируются на получение уведомления о событии завершения, ассоциированном с первым контекстом исполнения, в одной из операционной системы (14) и среды (10/122) исполнения.
8. Способ по п.1, дополнительно содержащий этап, на котором
выполняют задачу (36) планировщика на втором ресурсе обработки планировщика после предоставления первого ресурса обработки для использования первым контекстом исполнения и перед восстановлением управления первым ресурсом обработки.
9. Способ по п.1, в котором первый ресурс обработки включает в себя виртуальный процессор (32) и аппаратный поток (16).
10. Машиночитаемый носитель (104) информации, на котором сохранены машиноисполняемые инструкции, которыми при их исполнении компьютерной системой (100) осуществляется способ, содержащий этапы, на которых
регистрируются на получение уведомления о событии завершения, ассоциированном с первым контекстом (26) исполнения, предоставляемым планировщику (22) в процессе (12), выполняющемся в компьютерной системе;
исполняют первый контекст исполнения в ресурсе (16/32) обработки, предоставляемом из планировщика первому контексту исполнения; и
выполняют первую задачу (40) в ресурсе обработки после приема уведомления о событии завершения.
11. Машиночитаемый носитель информации по п.10, в котором способ дополнительно содержит этап, на котором
создают первый контекст исполнения с помощью процесса до предоставления первого контекста исполнения планировщику.
12. Машиночитаемый носитель информации по п.10, в котором способ дополнительно содержит этапы, на которых
создают второй контекст (38) исполнения с помощью планировщика и
ассоциируют первую задачу со вторым контекстом исполнения до выполнения упомянутой задачи.
13. Машиночитаемый носитель информации по п.10, в котором способ дополнительно содержит этап, на котором
преобразуют внешний контекст исполнения в процессе в автономный контекст исполнения, который включает в себя первый контекст исполнения, который получает управление ресурсом обработки.
14. Машиночитаемый носитель информации по п.10, в котором способ дополнительно содержит этап, на котором
регистрируются на получение уведомления о событии завершения в одном из операционной системы (14) или среды (10/122) исполнения.
15. Машиночитаемый носитель информации по п.10, в котором способ дополнительно содержит этап, на котором
выполняют вторую задачу (36) планировщика во втором ресурсе (16/32) обработки планировщика при исполнении первого контекста исполнения в первом ресурсе обработки.
Описание изобретения к патенту
Предшествующий уровень техники
Процессы, исполняющиеся в компьютерной системе, могут включать в себя средства планирования (планировщики) контекстаисполнения, которые планируют задачи процессов для исполнения в компьютерной системе. Планировщик может формировать контексты исполнения (например, потоки, элементарные потоки или дочерние процессы) для выполнения задач. Во время исполнения планировщик поддерживает управление над такими контекстами исполнения и поддерживает управление ресурсами обработки, выделенными для планировщика.
Планировщик обычно не имеет контроля над контекстами исполнения, сформированными за пределами планировщика (то есть внешними контекстами исполнения). Если планировщик обеспечивает возможность исполнения внешнего контекста исполнения, используя ресурс обработки планировщика, тогда внешний контекст исполнения получает управление над этим ресурсом обработки. Внешний контекст исполнения не обязательно может включать механизм для возврата управления над ресурсом обработки в планировщик. В результате, планировщик может потерять ресурс обработки, который исполняет внешний контекст исполнения.
Сущность изобретения
Данный раздел «Сущность изобретения» предусмотрен для представления подборки концепций в упрощенной форме, которые дополнительно описаны ниже в разделе «Подробное описание изобретения». Данный раздел «Сущность изобретения» не предназначен для идентификации ключевых свойств или существенных свойств заявленного изобретения, и при этом он не предназначен для использования для ограничения объема заявленного изобретения.
Планировщик, функционирующий в компьютерной системе, разрешает исполнение внешнего контекста исполнения, используя ресурс обработки, выделенный для планировщика. Планировщик предоставляет управление ресурсом обработки внешнему контексту исполнения. Планировщик регистрируется на получение уведомления о событии завершения, ассоциированном с внешним контекстом исполнения. В ответ на получение уведомления о том, что возникло событие завершения, планировщик восстанавливает управление ресурсом обработки и обеспечивает выполнение задачи, ассоциированной с контекстом исполнения, управляемым планировщиком, используя этот ресурс обработки.
Краткое описание чертежей
Приложенные чертежи включены для обеспечения дальнейшего понимания вариантов выполнения, и они представлены здесь и составляют часть данного описания. На чертежах иллюстрируются варианты выполнения, и вместе с описанием они используются для пояснения принципов этих вариантов выполнения. Другие варианты выполнения и множество соответствующих им преимуществ вариантов выполнения будут более понятны при ссылке на следующее подробное описание изобретения. Элементы чертежей не обязательно представлены в масштабе относительно друг друга. Одинаковыми номерами ссылочных позиций обозначены соответствующие аналогичные части.
На фиг.1A-1D показаны блок-схемы, иллюстрирующие варианты выполнения планировщика, выполненного с возможностью запроса и приема уведомлений о событии завершения, ассоциированного с внешним контекстом исполнения в среде исполнения.
На фиг.2 показана блок-схема, иллюстрирующая вариант выполнения группы планирования для использования в планировщике.
На фиг.3 показана блок-схема последовательности операций, иллюстрирующая вариант выполнения способа для запроса и приема уведомлений о событии завершения, ассоциированных с внешним контекстом исполнения.
На фиг.4 показана блок-схема последовательности операций, иллюстрирующая вариант выполнения способа для предоставления уведомлений о событии завершения.
На фиг.5 показана блок-схема, иллюстрирующая вариант выполнения компьютерной системы, выполненной с возможностью воплощения среды исполнения, включающей в себя планировщик, выполненный с возможностью запроса и получения уведомлений о событии завершения, ассоциированных с внешним контекстом исполнения.
Подробное описание изобретения
В следующем разделе «Подробное описание изобретения» делается ссылка на приложенные чертежи, которые формируют его часть и на которых представлены, в качестве иллюстрации, конкретные варианты выполнения, в которых изобретение может быть выполнено на практике. В этом отношении терминология, относящаяся к направлению, такая как «верхний», «нижний», «передний», «задний», «ведущий», «замыкающий» и т.д., используется относительно ориентации описываемой фигуры (фигур). Поскольку компоненты вариантов выполнения могут быть расположены во множестве различных ориентаций, терминология направления используется с целью иллюстрации и никоим образом не для ограничения. Следует понимать, что могут использоваться другие варианты выполнения, и структурные или логические изменения могут быть выполнены без выхода за пределы объема настоящего изобретения. Следующее подробное описание изобретения, поэтому, не следует воспринимать в смысле ограничения, и объем настоящего изобретения определен приложенной формулой изобретения.
Следует понимать, что свойства различных примерных вариантов выполнения, описанных здесь, могут быть скомбинированы друг с другом, если только не будет специально отмечено другое.
На фиг.1A-1D показаны блок-схемы, иллюстрирующие варианты выполнения планировщика 22 в процессе 12 среды 10 исполнения. Планировщик 22 выполнен с возможностью запроса и приема уведомлений о событии завершения, ассоциированных с внешним контекстом 26 исполнения.
Как показано на фиг.1A, среда 10 исполнения представляет режим исполнения, соответствующей работе компьютерной системы, например, компьютерной системы 100, показанной на фиг.5 и дополнительно описанной ниже, где компьютерная система исполняет инструкции. Компьютерная система генерирует среду 10 исполнения на основе платформы исполнения, такой как платформа 122 исполнения, которая показана на фиг.5 и дополнительно подробно описана ниже.
Среда 10 исполнения включает в себя, по меньшей мере, один запущенный процесс 12, операционную систему (OS, ОС) 14, набор аппаратных потоков 16(1)-16(M), где М представляет собой целое число, которое больше или равно единице и обозначает M-тый аппаратный поток 16(M), и уровень 18 управления ресурсами. Среда 10 исполнения обеспечивает возможность выполнения задач процесса 12 вместе с задачами любых других процессов, которые совместно присутствуют с процессом 12 (не показан), используя OS 14, уровень 18 управления ресурсами и аппаратные потоки 16(1)-16(M). Среда 10 исполнения работает совместно с OS 14 и/или уровнем 18 управления ресурсами для обеспечения процессу 12 возможности получения процессора и других ресурсов компьютерной системы (например, аппаратных потоков 16(1)-16(M)).
Среда 10 исполнения включает в себя функцию планировщика, которая генерирует планировщик 22. В одном варианте выполнения функция планировщика воплощена как интерфейс прикладного программирования (API) планировщика. В других вариантах выполнения функция планировщика может быть воплощена с использованием других соответствующих конструктивных элементов программирования. Будучи запущенной, функция планировщика формирует планировщик 22 в процессе 12, где планировщик 22 во время работы планирует исполнение задач процесса 12, используя один или больше аппаратных потоков 16(1)-16(M). Среда 10 исполнения может эксплуатировать мелкоструктурную параллельную обработку, которая была выражена разработчиками приложения или библиотеки в своих программах (например, процесс 12), используя сопроводительные инструменты, которые имеют информацию о возможностях, которые предоставляются функцией планировщика.
Процесс 12 включает в себя выделение веществ обработки и других ресурсов, которые вмещают один или больше контекстов исполнения (то есть потоков). Процесс 12 получает доступ к ресурсам обработки и другим ресурсам в компьютерной системе (например, к аппаратным потокам 16(1)-16(M) из OS 14 и/или уровня 18 управления ресурсами. Процесс 12 обеспечивает возможность выполнения задач, используя ресурсы обработки и другие ресурсы.
Процесс 12 формирует работу в задачах переменной длины, где каждая задача ассоциирована с контекстом исполнения в планировщике 22. Каждая задача включает в себя последовательность инструкций, которые выполняют единицу работы, при их исполнении в компьютерной системе. Каждый контекст исполнения формирует поток, который выполняет ассоциированные задачи, используя выделенные ресурсы обработки. Каждый контекст исполнения включает в себя информацию состояния программы и информацию состояния машины. Контексты исполнения могут прекращать работу, когда больше не остается задач для выполнения. Для каждой задачи среда 10 исполнения и/или процесс 12 либо назначают задачу для планировщика 22, которая должна быть спланирована для выполнения, либо, в противном случае, обеспечивают выполнение задачи без использования планировщика 22.
Процесс 12 может быть приспособлен для работы в компьютерной системе на основе любой соответствующей модели исполнения, например, модели стека или модели интерпретатора, и может представлять собой любой соответствующий тип кода, например, программное приложение, функцию библиотеки или службу операционной системы. Процесс 12 имеет программное состояние и машинное состояние, ассоциированные с набором выделенных ресурсов, которые включают в себя заданное пространство адресов в памяти. Процесс 12 выполняется автономно или по существу автономно от любых одновременно существующих процессов в среде 10 исполнения. В соответствии с этим, процесс 12 не оказывает отрицательного влияния на программное состояние совместно существующих процессов или машинное состояние каких-либо ресурсов, выделенных совместно существующим процессам. Аналогично, совместно существующие процессы не вызывают отрицательного изменения программного состояния процесса 12 или машинного состояния каких-либо ресурсов, выделенных для процесса 12.
OS 14 управляет ресурсами обработки и другими ресурсами компьютерной системы и предоставляет набор функций, которые обеспечивают процессу 12 и другим процессам в компьютерной системе возможность осуществлять доступ к компонентам и использовать их. Кроме того, OS 14 предлагает контексты исполнения для планировщика 22 и процесса 12 в компьютерной системе. Как показано на фиг.1A, OS 14 предлагает контексты 34(1)-34(N) исполнения и набор контекстов 38 исполнения для планировщика 22, где N представляет собой целое число, большее чем или равное единице, и обозначает N-тый контекст 34(N) исполнения. OS 14 также предлагает контексты 26(1)-26(P) исполнения для процесса 12, где P представляет собой целое число, большее или равное единице, и обозначает P-тый контекст 26(P) исполнения.
Аппаратные потоки 16 расположены в ядрах исполнения набора или одного или больше процессорных комплектах (например, в процессорных комплектах 102, показанных на фиг.5 и описанных более подробно ниже) компьютерной системы. Каждый из аппаратных потоков 16 сконфигурирован для исполнения инструкций независимо или, по существу, независимо от других ядер исполнения и включает в себя машинное состояние. Аппаратные потоки 16 могут быть включены в один процессорный комплект или могут быть распределены между множеством процессорных комплектов. Каждое ядро исполнения в процессорном комплекте может включать в себя один или больше аппаратных потоков 16.
Уровень 18 управления ресурсами выделяет ресурсы обработки для процесса 12 путем назначения одного или больше аппаратных потоков 16 для процесса 12. Уровень 18 управления ресурсами существует отдельно от OS 14 в вариантах выполнения, показанных на фиг.1A-1D. В других вариантах выполнения уровень 18 управления ресурсами или некоторые или все из его функций могут быть включены в OS 14.
Процесс 12 явно или неявно обеспечивает формирование планировщика 22 через функцию планировщика, предусмотренную средой 10 исполнения. Экземпляр 22 планировщика может быть сформирован неявно, когда процесс 12 использует API, доступные в компьютерной системе или в функциональных возможностях языка программирования. В ответ на API или функциональные возможности языка программирования среда 10 исполнения формирует планировщик 22 с используемой по умолчанию политикой. Для того, чтобы явно сформировать планировщик 22, процесс 12 может запустить функцию планировщика, предоставляемую средой 10 исполнения, и задать одну или больше политик для планировщика 22.
Планировщик 22 взаимодействует с уровнем 18 управления ресурсами для согласования ресурсов обработки и других ресурсов компьютерной системы таким путем, который является прозрачным для процесса 12. Уровень 18 управления ресурсами выделяет аппаратные потоки 16 для планировщика 22 на основе спроса и предложения и любых политик планировщика 22.
В варианте выполнения, показанном на фиг.1А-1D, планировщик 22 управляет ресурсами обработки путем создания виртуальных процессоров 32, которые формируют абстракцию лежащих в ее основе аппаратных потоков 16. Планировщик 22 включает в себя набор виртуальных процессоров 32(1)-32(N), где N представляет собой целое число, большее или равное единице, и обозначает N-тый виртуальный процессор 32(N). Планировщик 22 объединяет виртуальные процессоры 32 с аппаратными потоками 16 путем задания соответствия каждого виртуального процессора 32 аппаратному потоку 16. Планировщик 22 может задавать отображать соответствие больше чем одного виртуального процессора 32 конкретному аппаратному потоку 16, но ставит только один аппаратный поток 16 в соответствие каждому виртуальному процессору 32. В других вариантах выполнения планировщик 22 управляет ресурсами обработки другими подходящими способами для обеспечения исполнения инструкции процесса 12, используя аппаратные потоки 16.
Набор контекстов исполнения в планировщике 22 включает в себя набор контекстов 34(1)-34(N) исполнения с соответствующими, ассоциированными задачами 36(l)-36(N), которые выполняются соответствующими виртуальными процессорами 32(1)-32(N) и в любой момент времени, во время выполнения процесса 12, набор из нуля или большего количества контекстов 38 исполнения. Каждый контекст 34 и 38 исполнения включает в себя информацию состояния, которая обозначает, является ли контекст 34 или 38 исполняющим, пригодным для запуска (например, в ответ на разблокирование или добавление в планировщик 22) или заблокированным. Контексты 34 исполнения, которые исполняются, были прикреплены к виртуальному процессору 32 и являются исполняющимися в текущее время. Контексты 38 исполнения, которые пригодны для запуска, включают в себя ассоциированную задачу 40 и готовы к исполнению доступным виртуальным процессором 32. Контексты 38 исполнения, которые блокированы, также включают в себя ассоциированную задачу 40 и ожидают данные, сообщение или событие, генерируемые другим контекстом 34 исполнения или которые будут сгенерированы другим контекстом 38 исполнения.
Каждый контекст 34 исполнения, исполняемый в виртуальном процессоре 32, может генерировать, во время его исполнения, дополнительные задачи 42, которые организуются любым подходящим способом (например, добавляются к рабочим очередям (не показаны на фиг.1A-1D)). Работа может быть сформирована путем использования любых интерфейсов прикладного программирования (API), предусмотренных средой 10 исполнения или функциональными возможностями языка программирования и в соответствующих инструментах в одном варианте выполнения. Когда исполнительные ресурсы доступны для планировщика 22, задачи назначаются контекстом 34 или 38 исполнения, которые выполняют их до окончания в виртуальных процессорах 32, прежде чем будут взяты новые задачи. Контекст 34 исполнения, исполняющийся в виртуальном процессоре 32, также может разблокировать другие контексты 38 исполнения путем генерирования данных, сообщения или события, которые будут использоваться другими контекстами 38 исполнения.
Каждая задача в планировщике 22 может быть реализована (например, реализованные задачи 36 и 40), что обозначает, что контекст 34 или 38 исполнения был или будет прикреплен к задаче, и задача готова к выполнению. Реализованные задачи обычно включают в себя разблокированные контексты исполнения и запланированные агенты. Задача, которая не реализована, называется нереализованной задачей. Нереализованные задачи (например, задачи 42), могут быть сформированы как дочерние задачи, генерируемые в результате исполнения родительских задач, и могут быть сформированы с использованием параллельных конструкций (например, parallel, parallel for, begin и finish). Планировщик 22 может быть организован в синхронизированную компоновку (например, в виде стека и/или очереди) для логически независимых задач с контекстами исполнения (то есть реализованных задач) вместе со списком очередей типа workstealing для зависимых задач (то есть нереализованных задач), как представлено в варианте выполнения по фиг.2, описанном ниже.
После окончания блокирование или другое прерывание (например, после явного возврата или принудительного приоритетного прерывания) контекста 34 исполнения, работающего в виртуальном процессоре 32, виртуальный процессор 32 становится доступным для выполнения другой реализованной задачи 40 или нереализованной задачи 42. Планировщик 22 выполняет поиск пригодного для запуска контекста 38 исполнения или нереализованной задачи 42 для прикрепления к доступному виртуальному процессору 32 для исполнения любым соответствующим способом. Например, планировщик 22 может вначале осуществить поиск пригодного для запуска контекста 38 исполнения для исполнения перед поиском нереализованной задачи 42 для исполнения. Планировщик 22 продолжает прикрепление контекстов 38 исполнения к доступным виртуальным процессорам 32 для исполнения до тех пор, пока все задачи и контексты 38 исполнения планировщика 22 не будут выполнены.
В одном варианте выполнения процесс 12 организует задачи в одну или больше групп 50 планирования и представляет группы 50 планирования в планировщик 22. На фиг.2 показана блок-схема, представляющая вариант выполнения группы 50 планирования для использования в планировщике 22.
Группа 50 планирования включает в себя подборку 52 пригодных для запуска контекстов, подборку 53 реализованных задач, подборку 54 работы и набор из нуля или большего количества очередей 56 типа workstealing. Подборка 52 пригодных для запуска контекстов содержит список разблокированных контекстов 38 исполнения. Планировщик 22 добавляет контекст 38 исполнения к подборке 52 пригодных для запуска контекстов, когда контекст исполнения становится разблокированным. Подборка 53 реализованных задач содержит список реализованных задач 40 (например, незапущенных агентов), которые могут иметь или могут не иметь ассоциированные контексты 38 исполнения. Планировщик 22 добавляет реализованную задачу к подборке 53 реализованных задач или когда процессор 12 представляет для планировщика 22 новую, готовую к исполнению задачу. Подборка 54 работы содержит список очередей 56 типа workstealing, как обозначено стрелкой 58, и отслеживает контексты 34 исполнения, которые представляют собой выполняющиеся задачи из очередей 56 типа workstealing. Каждая очередь 56 типа workstealing, включает в себя одну или больше нереализованных задач 42.
Используя вариант выполнения, показанный на фиг.2, планировщик 22 может вначале выполнять поиск незаблокированных контекстов 38 исполнения в подборке 52 пригодных для запуска контекстов каждой группы 50 планирования в планировщике 22. Планировщик 22 затем может выполнять поиск реализованных задач в подборке 53 реализованных задач всех групп 50 планирования в планировщике 22 перед поиском нереализованных задач в очередях 56 типа workstealing групп 50 планирования.
В одном варианте выполнения виртуальный процессор 32, который становится доступным, может попытаться отыскать пригодный для запуска контекст 38 исполнения в подборке 52 пригодных для запуска контекстов в группе 50 планирования, из которой доступный виртуальный процессор 32 наиболее недавно получил пригодный для запуска контекст 38 исполнения (то есть текущей группе 50 планирования). Доступный виртуальный процессор 32 может затем попытаться отыскать пригодный для запуска контекст 38 исполнения в подборе 52 пригодных для запуска контекстов в остальных группах 50 планирования планировщика 22, используя циклический или другой подходящий порядок. Если ни один пригодный для запуска контекст 38 исполнения не будет найден, тогда доступный виртуальный процессор 32 может затем попытаться отыскать местоположение нереализованной задачи 42 в очередях 56 типа workstealing из текущей группы 50 планирования перед поиском по очередям 56 типа workstealing в оставшихся группах 50 планирования планировщика 22 в циклическом или другом подходящем порядке.
Обращаясь снова к фиг.1A, планировщик 22 создает и управляет контекстами 34 и 38 исполнения. Когда контекст 34 исполнения исполняется до окончания в виртуальном процессоре 32, контекст 34 исполнения возвращает управление виртуальным процессором 32 в планировщик 22. Планировщик 22 может затем обеспечить осуществление виртуальным процессором 32 поиска другого контекста 38 исполнения для исполнения, пока все контексты 38 исполнения и задачи 42 не будут полностью выполнены.
В дополнение к контекстам 34 и 38 исполнения, сформированным и управляемым планировщиком 22, планировщик 22 обеспечивает прямое исполнение внешних контекстов 26 исполнения, которые созданы процессом 12 и являются внешними для планировщика 22, в виртуальных процессорах 32, принадлежащих планировщику 22. Когда внешние контексты 26 исполнения непосредственно исполняются в виртуальных процессорах 32, принадлежащих планировщику 22, планировщик 22 переводит управление виртуальными процессорами 32 на внешние контексты 26 исполнения. В результате этого планировщик 22 может исключить потенциально дорогостоящее переключение контекста и обеспечить возможность применения политик планирования планировщика 22 к внешним контекстам 26 исполнения.
Однако, поскольку внешние контексты 26 исполнения больше не находятся под управлением планировщика 22, внешние контексты 26 исполнения не возвращают виртуальные процессоры 32 планировщику 22. Вместо этого внешние контексты 26 исполнения продолжают использовать виртуальные процессоры 32 до тех пор, пока исполнение внешних контекстов 26 исполнения не будет остановлено существующей средой 10 исполнения или средой операционной системы, сформированной операционной системой 14. Когда внешние контексты 26 исполнения останавливают исполнение, планировщик 22 требует обратно виртуальные процессоры 32, используемые внешними контекстами 26 исполнения.
Для того чтобы истребовать обратно виртуальные процессоры 32, используемые внешними контекстами 26 исполнения, планировщик 22 регистрируется на получение уведомлений о событиях завершения, ассоциированных с внешними контекстами 26 исполнения, в среде 10 исполнения или OS 14. В ответ на прием уведомлений о том, что события завершения произошли, из среды 10 исполнения или OS 14, планировщик 22 восстанавливает управление над виртуальными процессорами 32 и обеспечивает выполнение задач 40 или 42, ассоциированных с контекстами 34 или 38 исполнения, управляемыми планировщиком 22, с помощью виртуальных процессоров 32.
На фиг.3 показана блок-схема последовательности операций, иллюстрирующая вариант выполнения способа для запроса и приема уведомлений о событии завершения, ассоциированных с внешним контекстом 26 исполнения. Способ, показанный на фиг.3, в том виде, как он выполняется планировщиком 22, будет описан со ссылкой на варианты выполнения, показанные на фиг.1A-1D. Кроме того, функции, выполняемые средой 10 исполнения или OS 14, будут описаны со ссылкой на фиг.4. На фиг.4 показана блок-схема последовательности операций, иллюстрирующая вариант выполнения способа обеспечения уведомлений о событии завершения.
На фиг.3 планировщик 22 определяет, включен ли внешний контекст исполнения в планировщик 22, как обозначено этапом 62. Используемый здесь термин «внешний контекст исполнения» относится к контексту исполнения, сформированному процессом 12, а не планировщиком 22. Процесс 12 поэтому управляет исполнением внешних контекстов исполнения. Внешний контекст исполнения может быть включен в планировщик 22 в ответ на генерирование задач для выполнения планировщиком 22 или в результате явного формирования планировщиком 22.
Со ссылкой на пример, показанный на фиг.1A, планировщик 22 определяет, включаются ли какие-либо внешние контексты 26 исполнения планировщиком 22. Процесс 12 формирует внешние контексты 26 исполнения, предоставляя запросы в OS 14. Поскольку эти внешние контексты 26 исполнения были созданы процессом 12, процесс 12, а не планировщик 22 управляет исполнением внешних контекстов 26 исполнения. В отличие от этого планировщик 22 формирует контексты 34 и 38 исполнения, предоставляя запрос в OS 14. В соответствии с этим планировщик 22 управляет исполнением контекстов 34 и 38 исполнения.
Если внешний контекст исполнения включен в планировщик 22, тогда планировщик 22 преобразует внешний контекст исполнения в автономный контекст исполнения, как обозначено этапом 64. Используемый здесь термин «автономный контекст исполнения» представляет контекст исполнения, который исполняется с помощью ресурса обработки планировщика 22, но не под управлением планировщика 22. В соответствии с этим планировщик 22 предоставляет ресурс обработки планировщика 22 для использования любым автономным контекстом исполнения, чтобы обеспечить автономному контексту исполнения возможность исполняться с помощью ресурса обработки. Таким образом, планировщик 22 оставляет управление ресурсом обработки таким образом, что ресурс обработки находится под управлением автономного контекста исполнения, а не под управлением планировщика 22.
Со ссылкой на пример фиг.1B, планировщик 22 определяет, что внешний контекст 26(1) исполнения включен в планировщик 22. Планировщик 22 преобразует внешний контекст 26(1) исполнения в автономный контекст 26(1) исполнения и предоставляет виртуальный процессор 32(1) для автономного контекста 26(1) исполнения. Виртуальный процессор 32(1) выполняет по меньшей мере одну задачу 28(1) автономного контекста 26(1) исполнения.
Планировщик 22 регистрируется на получения уведомления о событии завершения, ассоциированном с автономным контекстом исполнения, как обозначено этапом 66. Автономный контекст исполнения выполняет задачи процесса 12 в планировщике 22 и может не включать в себя механизм для возврата управления ресурсом обработки в планировщик 22. Автономный контекст исполнения продолжает исполняться с помощью ресурса обработки планировщика 22 до тех пор, пока автономный контекст исполнения не будет в явном виде отсоединен от планировщика 22 (например, через API, предусмотренный средой 10 исполнения). Автономный контекст исполнения может выходить из среды 10 исполнения и/или среды операционной системы, сформированной OS 14 в любой момент времени. В соответствии с этим, планировщик 22 предоставляет сигнал в среду 10 исполнения или в OS 14 для регистрации на получение уведомления о событии завершения, ассоциированном с автономным контекстом исполнения. Например, планировщик 22 подает сигнал 44 в OS 14, как показано на фиг.1B. В случае когда OS 14 представляет собой операционную систему Windows, планировщик 22 может обеспечить возможность добавления описателя автономного контекста исполнения в массив 46 ожидания и ожидать сигнал от OS 14. В других вариантах выполнения планировщик 22 может обеспечить предоставление или сохранение такого описателя в других подходящих структурах данных.
Как показано на фиг.4, средой 10 исполнения или OS 14 осуществляется определение относительно того, был ли принят запрос на получение уведомления о событии завершения, ассоциированном с автономным контекстом исполнения, как обозначено этапом 82. Среда 10 исполнения или OS 14 принимает запрос от планировщика 22 на получение уведомления о событии завершения, ассоциированном с автономным контекстом исполнения, исполняющимся в ресурсе обработки, выделенном для планировщика 22. Например, OS 14 принимает сигнал 44 из планировщика 22 в примере по фиг.1B. В ответ на прием запроса среда 10 исполнения или OS 14 добавляет описатель, идентифицирующий автономный контекст исполнения, в массив 46 ожидания, как обозначено этапом 84. В других вариантах выполнения среда 10 исполнения или OS 14 может сохранять запрос на получение уведомления в других подходящих структурах данных.
Возвращаясь обратно к фиг.3, автономный контекст исполнения выполняется с помощью ресурса обработки планировщика 22, как обозначено этапом 68. В примере по фиг.1B автономный контекст 26(1) исполнения исполняется в виртуальном процессоре 32(1) планировщика 22. Перед исполнением автономного контекста 26(1) исполнения виртуальный процессор 32(1) исполняет контекст 34(1) исполнения, как показано на фиг.1A. Виртуальный процессор 32(1) может стать доступным для исполнения автономного контекста 26(1) исполнения в ответ на окончание, блокирование или другое прерывание (например, явный возврат или принудительное приоритетное прерывание) контекста 34(1) исполнения. Другие виртуальные процессоры 32 в планировщике 22 могут продолжать исполнение контекстов 34 исполнения планировщика 22, в то время как виртуальный процессор 32(1) выполняет автономный контекст 26(1) исполнения. Автономный контекст исполнения может прекратить исполнение в виртуальном процессоре 32(1) и выйти из среды 10 исполнения и/или среды операционной системы, сформированной OS 14, в любой момент времени.
Возвращаясь снова к фиг.4, среда 10 исполнения или OS 14 осуществляет определение относительно того, произошло ли событие завершения, ассоциированное с автономным контекстом исполнения, как обозначено этапом 86. Среда 10 исполнения или OS 14 обнаруживает событие завершения, когда автономный контекст исполнения выходит или по-другому завершается или прекращает исполнение в ресурсе обработки планировщика 22. Как показано в примере по фиг.1C, виртуальный процессор 32(1) больше не исполняет автономный контекст 26(1) исполнения. В ответ на определение того, что произошло событие завершения, среда 10 исполнения или OS 14 предоставляет уведомление о событии завершения в планировщик 22, как обозначено этапом 88. Например, OS 14 передает сигнал 48 в планировщик 22 в примере по фиг.1C.
Возвращаясь снова к фиг.3, планировщик 22 определяет, было ли принято уведомление о событии завершения, соответствующем автономному контексту исполнения, как обозначено этапом 70. В ответ на прием уведомления о событии завершения (например, прием сигнала 48 из OS 14) планировщик 22 идентифицирует и восстанавливает управление ресурсом обработки, который исполнял автономный контекст исполнения. Планировщик 22 создает другую задачу в ресурсе обработки, используемом автономным контекстом, как обозначено этапом 72.
В примере по фиг.1D планировщик 22 восстанавливает управление виртуальным процессором 32(1) и обеспечивает исполнение задачи 40(1), ассоциированной с контекстом 38(1) исполнения, в виртуальном процессоре 32(1) после восстановления управления виртуальным процессором 32(1). Контекст 38(1) исполнения может быть разблокированным или новым контекстом исполнения.
Используя способы, показанные на фиг.3 и 4, планировщик 22 обеспечивает возможность исполнения для внешнего контекста исполнения, используя ресурсы обработки планировщика 22, при гарантировании того, что ресурсы обработки будут получены обратно планировщиком 22 после выхода внешних контекстов исполнения.
На фиг.5 показана блок-схема, иллюстрирующая вариант выполнения компьютерной системы 100, которая сконфигурирована для реализации среды 10 исполнения, включающей в себя планировщик 22, при том что планировщик 22 выполнен с возможностью запроса и приема уведомления о событиях завершения, ассоциированных с внешним контекстом исполнения.
Компьютерная система 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) или встроенное программное обеспечение (firmware) (не показан), OS 14 (также показана на фиг.1A-1D), платформу 122 исполнения, приложения 124 и уровень 18 управления ресурсами (также показан на фиг.1A-1D). Каждый аппаратный поток 16 может исполнять инструкции совместно с или в ответ на информацию, принятую из устройств 106 ввода/вывода, дисплейных устройств 108, периферийных устройств 110 и/или сетевых устройств 112.
Компьютерная система 100 загружает и исполняет OS 14. OS 14 включает в себя инструкции, исполняемые аппаратными потоками 16 для управления компонентами компьютерной системы 100, и предоставляет набор функций, которые обеспечивают приложению 124 возможность доступа к и использования компонентов. В одном варианте выполнения OS 14 представляет собой операционную систему Windows. В других вариантах выполнения OS 14 представляет собой другую операционную систему, пригодную для использования с компьютерной системой 100.
Уровень 18 управления ресурсами включает в себя инструкции, которые могут исполняться совместно с OS 14 для выделения ресурсов компьютерной системы 100, включая аппаратные потоки 16, как описано выше со ссылкой на фиг.1A-1D. Уровень 18 управления ресурсами может быть включен в компьютерную систему 100 как библиотека функций, доступных для одного или больше приложений 124, или в качестве составляющей части OS 14.
Платформа 122 исполнения включает в себя инструкции, которые могут исполняться совместно с OS 14 и уровнем 18 управления ресурсами для генерирования среды 10 исполнения и предоставления функций исполнения в приложения 124. Такие функции исполнения включают в себя функцию планировщика, как более подробно описано выше со ссылкой на фиг.1A-1D. Функции исполнения могут быть включены в компьютерную систему 100 как часть приложения 124, как библиотека функций, доступных для одного или больше приложений 124, или как составляющая часть OS 14 и/или уровня 18 управления ресурсами.
Каждое приложение 124 включает в себя инструкции, которые могут исполняться совместно с OS 14, уровнем 18 управления ресурсами и/или платформой 122 исполнения для обеспечения возможности выполнения требуемых операций компьютерной системой 100. Каждое приложение 124 представляет один или больше процессов, например, процесс 12, как описано выше, которые могут быть выполнены с помощью планировщика 22, предусмотренного платформой 122 исполнения.
Система 104 памяти включает в себя любые подходящие типы, количества и конфигурации энергозависимых или энергонезависимых запоминающих устройств, приспособленных для хранения инструкции и данных. Запоминающие устройства системы 104 памяти представляют считываемые компьютером носители информации, в которых содержатся исполняемые компьютером инструкции, включая OS 14, уровень 18 управления ресурсами, платформу 122 исполнения и приложения 124. Инструкции могут исполняться компьютерной системой для выполнения функций и методов OS 14, уровня 18 управления ресурсами платформы 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 из сети.
Упомянутые выше варианты выполнения обеспечивают для планировщика задач возможность использования внешних контекстов исполнения (то есть контекстов, которые находятся за пределами управления, осуществляемого планировщиком) для планирования работы без истощения виртуализованных ресурсов обработки, когда внешние контексты исполнения завершаются. В результате этого потенциально дорогостоящие переключения контекста могут быть исключены и требующиеся политики планирования планировщика 22 могут быть применены к выбранным внешним контекстам исполнения.
Хотя здесь были описаны и иллюстрировались конкретные варианты выполнения, для специалистов в данной области техники будет понятно, что различные альтернативные и/или эквивалентные варианты выполнения могут быть представлены вместо конкретных показанных и описанных вариантов выполнения, без выхода за пределы объема настоящего изобретения. Настоящая заявка предназначена для охвата любых адаптаций или вариаций описанных здесь конкретных вариантов выполнения. Поэтому предполагается, что данное изобретение ограничено только формулой изобретения и ее эквивалентами.
Класс G06F9/06 с хранимой программой, те с записью и хранением программы в устройствах памяти вычислительных машин