Uppskjuten procedursamtal
En Deferred Procedure Call ( DPC ) är en Microsoft Windows- operativsystemmekanism som tillåter högprioriterade uppgifter (t.ex. en avbrottshanterare ) att skjuta upp obligatoriska men lägre prioriterade uppgifter för senare exekvering. Detta tillåter enhetsdrivrutiner och andra händelsekonsumenter på låg nivå att utföra den högprioriterade delen av sin bearbetning snabbt och schemalägga icke-kritisk ytterligare bearbetning för exekvering med lägre prioritet.
DPC:er implementeras av DPC-objekt som skapas och initieras av kärnan när en enhetsdrivrutin eller något annat kärnlägesprogram utfärdar DPC-förfrågningar. DPC-förfrågningar läggs till i slutet av en DPC- kö . Varje processor har en separat DPC-kö. DPC:er har tre prioritetsnivåer: låg, medium och hög. Som standard är alla DPC:er inställda på medium prioritet. När Windows sjunker till en IRQL av Dispatch/DPC-nivå, kontrollerar det DPC-kön för eventuella väntande DPC:er och kör dem tills kön är tom eller något annat avbrott med högre IRQL inträffar.
Till exempel, när klockavbrottet genereras, ökar klockavbrottshanteraren i allmänhet räknaren för den aktuella tråden för att beräkna den totala exekveringstiden för den tråden, och minskar dess kvarvarande kvanttid med 1. När räknaren sjunker till noll, kommer tråden schemaläggaren måste anropas för att välja nästa tråd som ska köras på den processorn och dispatchern för att utföra en kontextväxling. Eftersom klockavbrottet inträffar vid en mycket högre IRQL kommer det att vara önskvärt att utföra denna trådsändning, vilket är en mindre kritisk uppgift vid ett senare tillfälle när processorns IRQL sjunker. Så klockavbrottshanteraren begär ett DPC-objekt och lägger till det i slutet av DPC-kön som kommer att bearbeta sändningen när processorns IRQL sjunker till DPC/Dispatch-nivå.
När man arbetar med strömmande ljud eller video som använder avbrott, används DPC:er för att bearbeta ljudet i varje buffert när de strömmar in. Om en annan DPC (från en dåligt skriven drivrutin) tar för lång tid och ett annat avbrott genererar en ny buffert med data, innan den första kan bearbetas, ett bortfall resulterar.
- Allmän
- Art Baker & Jerry Lozano. (2000). Windows 2000 Device Driver Book: A Guide for Programmers, Second Edition, The . Prentice Hall. ISBN 978-0-13-020431-8 .
- Microsoft Docs: Deferred Procedure Calls (DPC)
- Specifik