DISPATCH LEVEL


DISPATCH LEVEL

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

Исполнение в этом режиме возможно только в ядре ОС, код пользовательского режима не имеет никаких способов исполняться в этом режиме.

Архитектурная необходимость в таком режиме проистекает из наличия блокировок (spinlocks). Если блокировка будет захвачена с сохранением вытесняющей многозадачности, то текущий поток может быть прерван в любой момент с переключением процессора на новый поток. Так как нет никаких гарантий на тему того, чем будет заниматься новый поток, есть возможность повторного захвата им того же spinlockа, что немедленно приводит к зависанию процессора.

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

Код, исполняемый на DISPATCH_LEVEL:

  • любой код, захватывающий и удерживающий spinlock
  • код, исполняемый в контексте DPC, в том числе обратные вызовы из нижележащих модулей и обработчики завершения ввода/вывода.

Ограничения на DISPATCH_LEVEL:

  • запрет KeWaitForSingleObject и любых других вызовов, приостанавливающих исполнение потока и отдающих управление другим потокам.
  • запрет прикасаться к любому отгружаемому коду и/или данным. Логически проистекает из предыдущего запрета, ибо разрешение отказа страницы включает в себя ожидание завершения дисковой операции чтения страницы.
  • следует также следить за ограничениями на уровень исполнения, приведенными в документации на конкретные API ядра ОС. Как правило, сутью таких ограничений является использование ожиданий или же отгружаемой памяти внутри реализаций этих вызовов.

Код, исполняемый на DISPATCH_LEVEL, по-прежнему может быть прерван любым прерыванием, хотя и с гарантией, что прерывание не приведет к смене текущего потока. В случае необходимости синхронизации доступа к данным и регистрам аппаратуры, используемым и из прерывания, и из иного кода — необходимо использовать блокировку, связанную с прерыванием, то есть KeSynchronizeExecution или KeAcquireInterruptSpinLock. Пользоваться обычными блокировками в этой ситуации, как и в самих обработчиках прерываний, запрещено.

Примерным аналогом в Linux является «код, не могущий блокироваться» (cannot block). Правило Linux о том, что код, владеюший spinlock, не может блокироваться — полностью аналогично соответствующему правилу в Windows.

Источники


Wikimedia Foundation. 2010.

Смотреть что такое "DISPATCH LEVEL" в других словарях:

  • Dispatch (logistics) — Dispatch is a procedure for assigning employees (workers) or vehicles to customers. Industries that dispatch include taxicabs, couriers, emergency services, as well as home and commercial services such as maid services, plumbing, HVAC, pest… …   Wikipedia

  • Level of support for evolution — The level of support for evolution among scientists, the public and other groups is a topic that frequently arises in the creation evolution controversy and touches on educational, religious, philosophical, scientific and political issues. The… …   Wikipedia

  • Computer-aided dispatch — The CAD system of a fire department on a busy day. The line at the bottom is about to be dispatched. (Note:addresses have been changed for privacy reasons.) Computer assisted dispatch, also called Computer Aided Dispatch (CAD), is a method of… …   Wikipedia

  • Computer-assisted dispatch — The central idea is that persons in a dispatch center are able to easily view and understand the status of all units being dispatched. CAD provides displays and tools so that the dispatcher has an opportunity to handle calls for service as… …   Wikipedia

  • Media dispatch protocol — The Media Dispatch Protocol (MDP) is being developed by the Pro MPEG Media Dispatch Group to provide an open standard for secure, automated, and tapeless delivery of audio, video and associated data files. Such files typically range from low… …   Wikipedia

  • Media Dispatch Protocol — The Media Dispatch Protocol (MDP) was developed by the Pro MPEG Media Dispatch Group to provide an open standard for secure, automated, and tapeless delivery of audio, video and associated data files. Such files typically range from low… …   Wikipedia

  • Multiple dispatch — Theories and practice of polymorphism Double dispatch Multiple dispatch Operator overloading Polymorphism in computer science Polymorphism in OOP Subtyping …   Wikipedia

  • Maurice Level — (August 29, 1875 April 15, 1926), was a French writer of fiction and drama who specialized in short stories of the macabre which were regularly printed in the columns of Paris newspapers and sometimes staged by le Théâtre du Grand Guignol, the… …   Wikipedia

  • Pittsburgh Dispatch — The Pittsburgh Dispatch was a leading newspaper in Pittsburgh, PA, operating from 1846 to 1923. After being enlarged by publisher Daniel O Neill it was reportedly one of the largest and most prosperous newspapers in the United States. From 1880… …   Wikipedia

  • Medical Priority Dispatch System — Star of Life The Medical Priority Dispatch System (MPDS) is a medically approved, unified system used to dispatch appropriate aid to medical emergencies including systematized caller interrogation and pre arrival instructions. Priority Dispatch… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.