Назначение и планирование потоков для нескольких очередей с учетом приоритета

Изобретение относится к средствам администрирования потоков операционной системы. Технический результат заключается в расширении арсенала технических средств планирования потоков, исполняющихся в компьютерной системе. Компьютер планирования потоков для множественных очередей с учетом приоритета, содержащий: память, процессорное устройство; операционную систему, выполненную с возможностью: выделять пул рабочих потоков для приложения, каждый рабочий поток обслуживает запросы из данного приложения на доступ к ресурсам операционной системы, связывать множество очередей с пулом рабочих потоков, каждая очередь обладает приоритетом, причем операционная система дополнительно содержит контроллер параллелизма, назначающий элементы из упомянутого множества очередей рабочим потокам. 3 н. и 23 з.п. ф-лы, 7 ил.

 

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ

[0001] В современных вычислительных системах обычное дело, когда есть операционная система, которая обеспечивает возможность исполнения компьютерных программ в качестве нескольких потоков, которые совместно используют доступ к вычислительным ресурсам, администрирование которыми осуществляется посредством операционной системы. Сама по себе операционная система также может иметь несколько потоков, доступных для обслуживания запросов от приложений в отношении ресурсов операционной системы, именуемых в данном документе рабочими потоками.

[0002] Существует несколько способов осуществления администрирования сложности в отношении нескольких приложений, конкурирующих за ресурсы. Как правило, предусматривается очередь, чтобы осуществлять администрирование запросов от приложений, чтобы использовать рабочие потоки, как, например, запрос использования потока, чтобы осуществлять доступ к ресурсу. Если все запросы интерпретируются одинаково, тогда первым рабочему потоку назначается первый-по-прибытию запрос. В некоторых случаях некоторые запросы имеют более высокий приоритет, чем другие. В таком случае отдельные очереди запросов используются для каждого уровня приоритета, и каждый уровень приоритета имеет свой собственный пул рабочих потоков. Планировщик назначает потоки запросам в очередях на основании времени прибытия и осуществляет администрирование совместного доступа к ресурсам посредством нескольких потоков, делая потоки активными и блокируя или разрешая потоки на основании приоритета.

[0003] При такой системе каждый рабочий поток имеет фиксированный приоритет и не может менять приоритет во время исполнения; в противном случае существует риск инверсий приоритетов. Также, при наличии пула рабочих потоков для каждого уровня приоритета, количество уровней приоритета ограничивается ресурсами системы. В заключении, в такой системе могут возникать взаимоблокировки зависимости.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

[0006] Контроллер параллелизма содержит в себе планировщик. Следовательно, поток также может менять свой приоритет в середине операции посредством непосредственного информирования планировщика. Если поток становится с более низким приоритетом и в настоящий момент активен, тогда предпринимаются шаги, чтобы гарантировать то, что не возникнет инверсии приоритетов. В частности, планировщик может прервать обслуживание активного рабочего потока теперь с более низким приоритетом в пользу рабочего потока с более высоким приоритетом.

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

ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

[0009] Фиг. 2 является схемой, иллюстрирующей примерную реализацию нескольких очередей разных приоритетов для пула рабочих потоков, администрирование которых осуществляется посредством операционной системы для компьютерной системы.

[0010] Фиг. 3 является блок-схемой примерной реализации добавления элемента в очередь.

[0011] Фиг. 4 является блок-схемой примерной реализации выбора элемента после того, как рабочий поток завершается.

[0012] Фиг. 5 является блок-схемой примерной реализации изменения приоритета потока.

[0013] Фиг. 6 является блок-схемой примерной реализации назначения рабочего потока выбранному элементу из очереди.

[0014] Фиг. 7 является схемой иллюстративного примера управления параллелизмом в действии.

ПОДРОБНОЕ ОПИСАНИЕ

[0015] Нижеследующий раздел описывает примерную компьютерную систему, на которой может быть реализована операционная система, которая назначает и планирует рабочие потоки применительно к элементам из нескольких очередей с учетом приоритета.

[0016] Нижеследующее описание предназначено, чтобы предоставить краткое общее описание пригодного компьютера, с помощью которого может быть реализована такая система. Компьютер может быть любым из многообразия общего назначения или специализированных конфигураций вычислительного аппаратного обеспечения. Примеры общеизвестных компьютеров, которые могут быть пригодны, включают в себя, но не ограничиваются, персональные компьютеры, серверные компьютеры, переносные устройства или устройства класса «лэптоп» (например, мультимедийные проигрыватели, компьютеры класса «ноутбук», планшетные компьютеры, сотовые телефоны, помощники по персональным данным, диктофоны), многопроцессорные системы, основанные на микропроцессоре системы, телевизионные абонентские приставки, игровые консоли, программируемую потребительскую электронику, сетевые PC, мини-компьютеры, компьютеры класса мэйнфрейм, распределенные вычислительные среды, которые включают в себя любые из вышеприведенных систем или устройств, и подобное.

[0017] Фиг. 1 иллюстрирует пример пригодного компьютера. Это лишь один пример пригодного компьютера и не предполагается, что он накладывает какие-либо ограничения на объем использования и функциональность такого компьютера.

[0018] Со ссылкой на Фиг. 1, примерный компьютер 100, в базовой конфигурации, включает в себя, по меньшей мере, один блок 102 обработки и память 104. Компьютер может включать в себя несколько блоков обработки и/или дополнительные блоки совместной обработки, такие как блок 120 обработки графики. В зависимости от точной конфигурации и типа компьютера, память 104 может быть энергозависимой (такой, как RAM), энергонезависимой (такой, как ROM, флэш-память и т.д.) или некоторым сочетанием двух видов. Данная конфигурация иллюстрируется на Фиг. 1 посредством штриховой линии 106.

[0019] Дополнительно, компьютер 100 также может обладать дополнительными признаками/функциональностью. Например, компьютер 100 также может включать в себя дополнительное хранилище (съемное и/или несъемное), включая, но не ограничиваясь, магнитные или оптические диски или ленту. Такое дополнительное хранилище иллюстрируется на Фиг. 1 посредством съемного хранилища 108 и несъемного хранилища 110. Компьютерные запоминающие носители информации включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители информации, реализованные любым способом или по любой технологии для хранения информации, такой как инструкции компьютерной программы, структуры данных, программные модули и прочие данные. Память 104, съемное хранилище 108 и несъемное хранилище 110 - все являются примерами компьютерных запоминающих носителей информации. Компьютерный запоминающий носитель информации включает в себя, но не ограничивается, RAM, ROM, EEPROM, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную ленту, хранилище на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель информации, который может быть использован, чтобы хранить требуемую информацию, и доступ к которому может быть получен посредством компьютера 100. Любые такие компьютерные запоминающие носители информации могут быть частью компьютера 100.

[0020] Компьютер 100 также может содержать соединение(я) 112 связи, которое предоставляет возможность устройству осуществлять связь с другими устройствами через средство связи. Средства связи, как правило, несут инструкции компьютерной программы, структуры данных, программные модули или прочие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включают в себя любые средства доставки информации. Понятие «модулированный сигнал данных» означает сигнал, одна или более характеристики которого установлены или изменены таким образом, чтобы кодировать информацию в сигнале, тем самым меняя конфигурацию или состояние принимающего сигнал устройства. В качестве примера, а не ограничения, средства связи включают в себя проводные средства, такие как проводную сеть или непосредственное соединение, и беспроводные средства, такие как акустические, RF, инфракрасные и прочие беспроводные средства. Соединения 112 связи являются устройствами, которые обеспечивают интерфейс со средствами связи, чтобы передавать данные по и принимать данные из средств связи, таких как сетевой интерфейс.

[0021] Компьютер 100 может обладать различными устройством(ами) 114 ввода, такими как клавиатура, манипулятор типа мышь, перо, камера, устройство сенсорного ввода и т.п. Также может быть включено устройство(а) 116 вывода, такое как дисплей, громкоговорители, принтер и т.п. Все из этих устройств хорошо известны в области техники и в данном документе не требуется их детального рассмотрения. Различные устройства ввода и вывода могут реализовывать естественный интерфейс пользователя (NUI), который является любой технологией интерфейса, которая позволяет пользователю взаимодействовать с устройством «естественным» образом, свободно от искусственных ограничений, накладываемых устройствами ввода, такими как манипуляторы типа мышь, клавиатуры, пульты дистанционного управления и подобные.

[0022] Примеры способов NUI включают в себя те, что основаны на распознавании речи, распознавании касания и стилуса, распознавании жеста как по экрану, так и рядом с экраном, жестов по воздуху, отслеживании головы или глаз, голосе и речи, зрении, касании, жестах и машинном интеллекте, и могут включать в себя использование сенсорных дисплеев, распознавание голоса и речи, понимание намерения и цели, обнаружение жеста движением, используя камеры глубины (такие, как системы стереоскопических камер, системы инфракрасных камер, и другие системы камер и сочетания их), обнаружение жеста движением, используя акселерометры и гироскопы, распознавания лица, трехмерные дисплеи, отслеживание головы, глаза и взгляда, систем дополненной реальности с эффектом присутствия и виртуальной реальности, все то, что обеспечивает более естественный интерфейс, как впрочем и технологии для регистрации мозговой активности, используя электроды регистрации электрического поля (EEG и родственные способы).

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

[0024] В качестве альтернативы, или в дополнение, функциональность, описываемая в данном документе, может быть выполнена, по меньшей мере частично, посредством одного или более компонентов аппаратной логики. Например, и без ограничения, иллюстративные типы компонентов аппаратной логики, которые могут быть использованы, включают в себя программируемые вентильные матрицы (FPGA), специализированные интегральные микросхемы (ASIC), специализированные стандартные изделия (ASSP), системы вида Система-на-Кристалле (SoC), комплексные программируемые логические устройства (CPLD) и т.д.

[0025] Описав теперь компьютер, операционная система является компьютерной программой, исполняемой на компьютере, которая осуществляет администрирование доступа к ресурсам компьютера другими приложениями. Одним способом, посредством которого операционная система предоставляет доступ к таким ресурсам, является посредством пула 200 рабочих потоков 202, такого как показанный на Фиг. 2. Рабочие потоки 202 представляют собой экземпляры компьютерной программы, которая может быть вызвана, чтобы осуществить доступ к ресурсам операционной системы. Такие ресурсы могут включать в себя, но не ограничиваются, устройства ввода, устройства вывода, запоминающие устройства, процессорное время и подобное.

[0026] Приложение использует интерфейс прикладного программирования операционной системы, чтобы выполнять различные задачи, которые относятся к такому пулу, такие как, но не ограничиваясь, чтобы запросить такой пул, чтобы указать элементы работы, которые будут обработаны пулом, и чтобы изменить приоритет рабочих элементов, обрабатываемых пулом.

[0027] В одном варианте осуществления, администрирование пулом доступных рабочих потоков осуществляется, используя очередь «последним пришел - первым обслужен» (LIFO), или стек. Посредством использования такой реализации потокам, которые ждали меньше всего времени, первым назначается работа, чтобы оптимизировать вероятность результативного обращения в кэш в отношении структур данных, которые относятся к потоку.

[0028] Чтобы осуществлять администрирование использования такого пула рабочих потоков, пул обладает ассоциированным набором очередей 206 из элементов. Каждый элемент в очереди представляет собой запрос от приложения в отношении работы, которая будет выполнена посредством рабочих потоков. Каждая очередь обладает ассоциированным уровнем приоритета, при этом каждый уровень приоритета обладает ассоциированной очередью. Разные очереди обладают разными уровнями приоритета. В одном примере реализации для каждой очереди 206, или для каждого уровня приоритета, система ведет счет 208 потоков, указывающий количество рабочих потоков, назначенных элементам с тем же самым уровнем приоритета, что и у очереди. Очередь может быть реализована различными способами, но чтобы предписывать обработку первыми запросов с более ранними временами прибытия, каждая очередь реализуется в качестве формы очереди «первым пришел – первым обслужен» (FIFO).

[0029] Как более подробно описывается ниже, контроллер 220 параллелизма для пула назначает элементы в очереди рабочим потокам, при этом ограничивая количество параллельно активных рабочих потоков. Чтобы выполнять данную функцию, контроллер параллелизма ведет лимит 222 количества рабочих потоков, которые могут быть параллельно активны, т.е. осуществляющими доступ к ресурсу операционной системы. Контроллер параллелизма гарантирует то, что количество активных рабочих потоков не превышает лимит параллелизма. В качестве примера, операционная система может устанавливать лимит параллелизма на основании количества процессоров, так что количество работающих потоков чрезмерно не абонирует центральный блок обработки. Данный пример реализует «пакетный» режим обработки, при котором рабочие потоки работают до завершения, вместо того, чтобы мультиплексироваться по времени с другими потоками в системе.

[0030] Каждый рабочий поток включает в себя данные, указывающие его приоритет 210 в момент, когда он был назначен элементу, любой измененный приоритет 212 в случае, когда приоритет потока может быть изменен, и флаг 214 параллелизма, указывающий на то, заносится ли данный поток в счет лимита параллелизма, который будет использоваться, если приоритеты потоков могут быть изменены. Любой заблокированный поток не заносится в счет параллелизма для его уровня приоритета. Поток с прерванным обслуживанием остается занесенным в счет потоков или счет параллелизма для его уровня приоритета.

[0031] При наличии описанных выше структур контроллер параллелизма может осуществлять администрирование назначения каждого нового запроса рабочему потоку, при этом ведя лимит параллелизма. Контроллер параллелизма также интегрирует планировщик, который осуществляет администрирование параллельного доступа активными рабочими потоками к ресурсам системы. Используя дополнительные данные для каждого потока, указывающие измененный приоритет 212 и флаг 214 параллелизма, контроллер параллелизма может осуществлять администрирование планирования активных рабочих потоков по мере изменения приоритетов потоков.

[0032] Примерная реализация контроллера параллелизма, который осуществляет администрирование добавления новых запросов в очередь, изменения приоритетов элементов и потоков и назначения рабочих потоков элементов в очередях с учетом приоритета, теперь будет описан в связи с Фиг. 3-6.

[0033] На Фиг. 3 примерная реализация контроллера параллелизма теперь будет описана в связи с операцией добавления элемента в очередь с учетом приоритета применительно к пулу рабочих потоков. Данное описание предполагает, что пул рабочих потоков уже был создан и информация о пуле была предоставлена приложению, так что приложение может осуществлять доступ к пулу, используя интерфейс прикладного программирования. После того как приложение имеет доступ к пулу, одна из команд, которую она может запросить, заключается в подаче запроса, чтобы рабочий поток в пуле, выполнял некоторую указанную работу с указанным уровнем приоритета. Указание уровня приоритета может подразумеваться из контекста, например уровня приоритета приложения или природы запроса ресурса, или может быть указан посредством приложения.

[0034] После того как приложение подает такой запрос, операционная система принимает 300 запрос и его уровень приоритета. Запрос помещается 302 в очередь для указанного уровня приоритета.

[0035] Далее определяется, может ли быть обслужен данный запрос. Если новый запрос не является следующим неназначенным элементом в его очереди, он не обслуживается до тех пор, пока не завершается предыдущий элемент(ы) в этой очереди в рамках лимита параллелизма. Контроллер параллелизма определяет 306 счет параллелизма для уровня приоритета нового запроса. Данный счет параллелизма является количеством активных рабочих потоков с уровнем приоритета очереди, в которую запрос был добавлен, и более высокими уровнями приоритета.

[0036] Например, если есть два рабочих потока с уровнем приоритета пять и один рабочий поток с уровнем приоритета четыре, тогда счет параллелизма для уровня приоритета четыре равен трем, а счет параллелизма для уровня приоритета пять равен двум.

[0037] Если лимит параллелизма превышается счетом параллелизма для уровня приоритета нового элемента, как определяется на этапе 308, тогда новый элемент лишь добавляется в очередь, в противном случае он выбирается 312 для непосредственного назначения рабочему потоку. Назначение элемента рабочему потоку будет описано более подробно в связи с Фиг. 6. Счет (например, 208 на Фиг. 2) рабочих потоков с этим уровнем приоритета обновляется, когда элемент назначается рабочему потоку, когда рабочий поток завершается, когда рабочий поток блокируется, когда меняется приоритет рабочего потока.

[0038] Обращаясь к Фиг. 4, другой момент, в который контроллер параллелизма может назначать рабочий поток элементу из очередей с учетом приоритета является тем, когда завершается другой рабочий поток. Контроллер параллелизма принимает 400 указание того, что рабочий поток завершился. Счет потоков для уровня приоритета этого рабочего потока может быть уменьшен 402. До тех пор, пока счет параллелизма для уровня приоритета меньше, чем лимит параллелизма, контроллер параллелизма выполняет 404 итерацию по любым неактивным потокам и очередям элементов, сначала с наивысшим приоритетом, чтобы идентифицировать наивысший уровень приоритета касательно либо неактивного потока, либо, по меньшей мере, одного элемента в его очереди. Он выбирает 406 следующий элемент наивысшего приоритета. Если этот элемент находится в очереди, он назначается рабочему потоку, который делается активным; если элемент уже назначен рабочему потоку, данный рабочий поток делается активным. Неактивные потоки выбираются по находящимся в очереди элементам на том же самом уровне приоритета. Таким образом, поток с прерванным обслуживанием планируется, когда лимит параллелизма еще не был достигнут и не может быть запущен поток с более высоким приоритетом и не существует потоков равного приоритета впереди потока. Таким образом, до тех пор, пока поток является с прерванным обслуживанием, очереди не могут высвободить любой элемент для назначения рабочему потоку с тем же самым уровнем приоритета или ниже, чем у потока с прерванным обслуживанием. Назначение элемента рабочему потоку более подробно описывается в связи с Фиг. 6.

[0039] Теперь, обращаясь к Фиг. 5, другим событием, которое оказывает влияние на находящиеся в очереди элементы и рабочие потоки, является то, когда меняется приоритет элемента или рабочего потока. Например, приложение может предпринять попытку изменения приоритета запроса, которое может вызвать изменение элемента в очереди или изменение приоритета рабочего потока, которому назначен элемент. Такое изменение выполняется посредством контроллера параллелизма, который интегрирует планировщик, так что приоритет рабочего потока меняется непосредственно посредством планировщика. Когда меняется приоритет элемента в очереди, он удаляется из очереди применительно к его исходному уровню приоритета и затем добавляется в очередь применительно к его новому уровню приоритета. Если приоритет для элемента или рабочего потока становится выше, тогда воздействие на систему является минимальным. Приоритет элемента в очереди или рабочий поток могут быть просто изменены. Элемент может быть удален из очереди по более низкому приоритету и помещен в другую очередь по более высокому приоритету; приоритет рабочего потока может быть изменен, чтобы быть выше, в планировщике.

[0040] Тем не менее, если элемент уже назначен рабочему потоку и его приоритет становится ниже, существует риск возникновения инверсии приоритетов, при которой поток с более низким приоритетом вследствие предотвращает запуск потока с более высоким приоритетом, назначенного элементу работы из очереди более высокого приоритета. В частности, инверсия приоритетов возникает, если предотвращается запуск потока более низкого приоритета, например, посредством еще одного другого потока с промежуточным приоритетом, и предотвращается запуск потока с более высоким приоритетом из-за потока с более низким приоритетом.

[0041] Примерная реализация администрирования изменения приоритета теперь будет описана на Фиг. 5. С учетом условий, которые могут привести к инверсии приоритетов, контроллер параллелизма принимает 500 указание того, что изменился уровень приоритета элемента. Например, посредством интерфейса прикладного программирования приложение может проинформировать контроллер параллелизма об изменении в приоритете. Если элемент не был назначен рабочему потоку, т.е. элемент по-прежнему в очереди, как определяется на этапе 502, тогда элемент может быть помещен 506 в очередь соответственно в очередь применительно к новому уровню приоритета и интерпретироваться в качестве нового запроса (смотри Фиг. 3). Если элемент уже назначен рабочему потоку, еще новый приоритет выше, как определяется на этапе 504, тогда приоритет нового потока может быть просто изменен в планировщике. Счет потоков и счет параллелизма для каждого уровня приоритета может быть обновлен. В противном случае, если приоритет уменьшается и данный элемент уже назначен рабочему потоку, тогда дополнительные шаги предпринимаются, чтобы прервать обслуживание нового запроса более низкого приоритета, чтобы позволить сделать активным поток более высокого приоритета, что может включать в себя назначение запроса из очереди по более высокому приоритету рабочему потоку.

[0042] Чтобы назначить запрос более высокого приоритета рабочему потоку или чтобы разрешить сделать активным поток более высокого приоритета, контроллер параллелизма сначала блокирует 508 очереди, чтобы разрешить выполнение изменения без взаимовлияния. Прерывается 510 обслуживание рабочего потока, назначенного элементу с измененным приоритетом. Счет потоков для предыдущего уровня приоритета и соответствующий счет параллелизма уменьшаются. Счет потоков и счет параллелизма для нового уровня приоритета увеличиваются. Приоритет потока устанавливается 512 в новый уровень приоритета. Контроллер параллелизма затем выбирает 514 следующий элемент самого высокого приоритета посредством либо активации потока более высокого приоритета, либо выбора элемента, которому не был еще назначен рабочий поток. Такое назначение описывается более подробно ниже в связи с Фиг. 6. После того как рабочий поток для следующего элемента с самым высоким приоритетом активен, данные очереди обновляются, блокировка по очереди может быть высвобождена 516.

[0043] Как отмечено выше, элемент может быть назначен рабочему потоку, когда он является следующим элементом самого высокого приоритета в очередях и если счет параллелизма для его уровня приоритета не превышает текущего лимита параллелизма. Данное назначение может произойти, например, когда элемент добавляется в очередь, когда рабочий поток завершает элемент, и когда меняется приоритет рабочего потока.

[0044] Примерная реализация назначения элемента рабочему потоку теперь будет описана в связи с Фиг. 6.

[0045] Контроллер параллелизма принимает 600 указание следующего выбранного элемента, который будет назначен рабочему потоку. Данный этап может быть точно таким же этапом, как описанный выше, где контроллер параллелизма выбирает следующий элемент. Затем определяется, на этапе 602, доступен ли рабочий поток из пула. В некоторых случаях, как ожидается, рабочий поток будет доступен, как, например, когда контроллер выбирает элемент после того, как другой рабочий поток завершается. В других, может быть один или более рабочих потоков, более низкого приоритета, чем у текущего элемента, в отношении одного из которых прерывается обслуживание, если ресурс недоступен. Если рабочий поток доступен, он назначается 604 текущему элементу. Если рабочий поток недоступен, рабочий поток более низкого приоритета выбирается и прерывается 606 его обслуживание. Затем текущий элемент назначается 604 теперь доступному рабочему потоку. Когда элемент назначается рабочему потоку, поток может быть помечен 608 как тот, что вносит свой вклад в лимит параллелизма и счет потоков для этого уровня приоритета может быть увеличен.

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

[0047] При рабочих потоках, назначенных элементам из очереди с учетом приоритета, планировщик, размещающийся в контроллере параллелизма, затем может планировать параллельную операцию активных рабочих потоков.

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

[0049] Иллюстративный пример такой системы в действии иллюстрируется на Фиг. 7. На Фиг. 7 показаны пул рабочих потоков 700, очереди 702 по приоритету со счетом 704 потоков и лимит («2») параллелизма. Каждая из очередей по приоритету обладает приоритетом, в данном примере 0, 4, 10, 15 и 31 соответственно. Последовательность элементов работы, которые будут помещены в очередь, иллюстрируется обозначением 704. Как показано в обозначении «A», все очереди пусты. Далее, как показано в обозначении «B», элемент работы с приоритетом 10 добавляется в очередь с приоритетом 10. Данный элемент работы назначается рабочему потоку с приоритетом 10 и счет потоков для очереди по приоритету 10 увеличивается. Как показано в обозначении «C», второй элемент работы с приоритетом 10 добавляется в очередь с приоритетом 10. Данный элемент работы назначается рабочему потоку с приоритетом 10 и счет потоков для очереди по приоритету 10 увеличивается до «2». Как показано в обозначении «D», следующий элемент имеет приоритет 4 и добавляется в очередь с приоритетом 4. Так как лимит параллелизма равен «2» и счет потоков для всех очередей с приоритетом выше чем четыре уже «2» (из-за двух элементов с приоритетом 10), элемент не назначается рабочему потоку. Далее, как показано в обозначении «E», элемент работы с приоритетом 15 добавляется в его соответствующую очередь. Сумма всех счетов потоков с уровнем приоритета 15 и выше меньше, чем лимит параллелизма. Следовательно, данному элементу незамедлительно назначается рабочий поток, и поток устанавливается, чтобы иметь приоритет 15. Если машина обладает только двумя доступными вычислительными ресурсами, тогда глобальный планировщик прекращает обслуживание одного из потоков, запущенных с приоритетом 10, чтобы разрешить запуск потока с приоритетом 15.

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

[0051] Теперь описав примерные реализации и варианты, должно быть очевидно, что любая или все из вышеупомянутых альтернативных реализаций, описанных в данном документе, может быть использована в любом сочетании, требуемом для формирования дополнительных гибридных реализаций. Должно быть понятно, что предмет изобретения, определяемый в прилагаемой формуле изобретения, необязательно ограничивается описанными выше особыми реализациями. Описанные выше особые реализации раскрываются лишь в качестве примера.

1. Компьютер, выполненный с возможностью планирования потоков для множественных очередей с учетом приоритета, при этом компьютер содержит:

память и по меньшей мере одно процессорное устройство;

операционную систему, исполняющуюся на по меньшей мере одном процессорном устройстве, причем операционная система выполнена с возможностью:

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

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

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

добавлять элемент, соответствующий данному запросу, в очередь, обладающую приоритетом упомянутого запроса, и определять, достигнут ли лимит параллелизма для очереди, обладающей приоритетом упомянутого запроса, на основе, по меньшей мере, счета потоков в отношении параллельно исполняющихся рабочих потоков, относящегося к данной очереди, и

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

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

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

4. Компьютер по п.3, в котором каждый рабочий поток имеет указание исходного приоритета и указание любого измененного приоритета.

5. Компьютер по п.4, в котором в ответ на изменение приоритета рабочего потока на более низкий приоритет этот рабочий поток вытесняется и делается активным рабочий поток более высокого приоритета.

6. Компьютер по п.1, в котором контроллер параллелизма помечает элемент как обладающий гарантией того, что будет доступен рабочий поток для обслуживания этого элемента.

7. Компьютер по п.1, в котором контроллер параллелизма в ответ на добавление элемента в очередь более высокого приоритета, чем текущий рабочий поток, вытесняет текущий рабочий поток и назначает элемент более высокого приоритета рабочему потоку.

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

9. Компьютер по п.1, в котором контроллер параллелизма назначает элементы рабочим потокам в пределах лимита параллелизма для каждой очереди в соответствии с элементами наивысшего приоритета и затем временем прибытия элементов.

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

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

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

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

добавлять элемент, соответствующий данному запросу, в очередь, обладающую приоритетом упомянутого запроса, и определять, достигнут ли лимит параллелизма для очереди, обладающей приоритетом упомянутого запроса, на основе, по меньшей мере, счета потоков в отношении параллельно исполняющихся рабочих потоков, относящегося к данной очереди, и

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

11. Машиночитаемый носитель по п.10, при этом операционная система имеет интерфейс прикладного программирования, позволяющий приложениям добавлять элементы в очереди с заданными приоритетами.

12. Машиночитаемый носитель по п.11, при этом каждый рабочий поток имеет флаг параллелизма, указывающий на то, подсчитывается ли этот рабочий поток в отношении лимита параллелизма.

13. Машиночитаемый носитель по п.12, при этом каждый рабочий поток имеет указание исходного приоритета и указание любого измененного приоритета.

14. Машиночитаемый носитель по п.13, при этом в ответ на изменение приоритета рабочего потока на более низкий приоритет этот рабочий поток вытесняется и делается активным рабочий поток более высокого приоритета.

15. Машиночитаемый носитель по п.10, при этом контроллер параллелизма помечает элемент как обладающий гарантией того, что будет доступен рабочий поток для обслуживания этого элемента.

16. Машиночитаемый носитель по п.10, при этом контроллер параллелизма в ответ на добавление элемента в очередь более высокого приоритета, чем текущий рабочий поток, вытесняет текущий рабочий поток и назначает элемент более высокого приоритета рабочему потоку.

17. Машиночитаемый носитель по п.10, при этом контроллер параллелизма для определения того, достигнут ли лимит параллелизма для упомянутой очереди, дополнительно выполнен с возможностью сравнивать счеты потоков для очередей, обладающих не меньшим приоритетом, чем приоритет упомянутого запроса, с лимитом параллелизма.

18. Машиночитаемый носитель по п.10, при этом контроллер параллелизма назначает элементы рабочим потокам в пределах лимита параллелизма для каждой очереди в соответствии с элементами наивысшего приоритета и затем временем прибытия элементов.

19. Компьютерно-реализуемый способ планирования потоков для множественных очередей с учетом приоритета, причем способ выполняется операционной системой, исполняющейся на компьютере, при этом способ содержит:

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

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

назначение элементов пулу рабочих потоков с использованием контроллера параллелизма, предусмотренного в операционной системе, ограничивая при этом количество параллельно исполняющихся рабочих потоков путем того, что в ответ на запрос из упомянутого приложения, включающий в себя обладающий приоритетом элемент, посредством контроллера параллелизма:

добавляют этот элемент в очередь, обладающую приоритетом данного элемента,

определяют, достигнут ли лимит параллелизма для очереди, обладающей приоритетом упомянутого элемента, на основе, по меньшей мере, счета потоков в отношении параллельно исполняющихся рабочих потоков, относящегося к данной очереди, и

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

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

21. Компьютерно-реализуемый способ по п.20, в котором каждый рабочий поток имеет указание исходного приоритета и указание любого измененного приоритета.

22. Компьютерно-реализуемый способ по п.21, в котором в ответ на изменение приоритета рабочего потока на более низкий приоритет этот рабочий поток вытесняется и делается активным рабочий поток более высокого приоритета.

23. Компьютерно-реализуемый способ по п.19, дополнительно содержащий этап, на котором помечают элемент как обладающий гарантией того, что будет доступен рабочий поток для обслуживания этого элемента.

24. Компьютерно-реализуемый способ по п.19, в котором контроллер параллелизма в ответ на добавление элемента в очередь более высокого приоритета, чем текущий рабочий поток, вытесняет текущий рабочий поток и назначает элемент более высокого приоритета рабочему потоку.

25. Компьютерно-реализуемый способ по п.19, в котором контроллер параллелизма для определения того, достигнут ли лимит параллелизма для упомянутой очереди, дополнительно выполнен с возможностью сравнивать счеты потоков для очередей, обладающих не меньшим приоритетом, чем приоритет упомянутого запроса, с лимитом параллелизма.

26. Компьютерно-реализуемый способ по п.19, в котором контроллер параллелизма назначает элементы рабочим потокам в пределах лимита параллелизма для каждой очереди в соответствии с элементами наивысшего приоритета и затем временем прибытия элементов.



 

Похожие патенты:

Изобретение относится к вычислительной технике. Технический результат заключается в увеличении среднего времени работы компьютера до переполнения доступной памяти компьютерной системы.

Изобретение относится к вычислительной технике. Технический результат заключается в увеличении среднего времени работы компьютера до переполнения доступной памяти компьютерной системы.

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

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

Изобретение относится к области сред виртуализации. Техническим результатом является выгрузка сетевых потоков виртуальных машин в физические очереди сетевого аппаратного обеспечения.

Изобретение относится к области виртуализации мобильной сети. Технический результат изобретения заключается в повышении производительности обработки пользовательских данных за счет распределения пакетов пользовательских данных по множеству CPU-ядер.

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

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

Изобретение относится к сети высокопроизводительного межсоединения периферийных компонентов (PCIe), а именно к технологии для управления междоменным выделением ресурсов в PCIe сети.

Изобретение относится к сети высокопроизводительного межсоединения периферийных компонентов (PCIe), а именно к технологии для управления междоменным выделением ресурсов в PCIe сети.

Изобретение относится к вычислительной технике. Технический результат заключается в увеличении среднего времени работы компьютера до переполнения доступной памяти компьютерной системы.

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

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

Изобретение относится к области сред виртуализации. Техническим результатом является выгрузка сетевых потоков виртуальных машин в физические очереди сетевого аппаратного обеспечения.

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

Изобретение относится к средствам планирования Web-обходчиков в соответствии с поиском по ключевым словам. Технический результат заключается в расширении арсенала средств планирования Web-обходчиков в соответствии с поиском по ключевым словам.

Устройство отображения кронштейного типа по настоящему изобретению включает: фиксирующий элемент (110) для прикрепления к опоре (200); дисплейную панель (120), прикрепленную к одной стороне фиксирующего элемента (110) и выполненную гибкой с возможностью сворачиваться и разворачиваться; и средства поддержания формы (130), установленные на верхней части и нижней части дисплейной панели (120) и выполненные с возможностью сворачивать дисплейную панель (120) в форме рулона или разворачивать ее в форме плоской панели и сохранять состояние формы при действии внешних сил.

Группа изобретений относится к области обработки информации и может быть использована для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности.

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

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

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