Ertelenmiş Prosedür Çağrıları Nelerdir?

İçindekiler:

Anonim

Ertelenmiş yordam çağrısı (DPC), Microsoft Windows işletim sisteminde, sürücülerin belirli işlemleri çalıştırırken başvuruda bulunabileceği bir kesme işlemi mekanizmasıdır. DPC, bir görevin çok öncelikli bir kesme isteği düzeyinden (IRQL) etkinleştirilmesini ancak yürütülmemesini sağlar. Bu, bir sürücünün, bir üst seviye IRQL kodlarının yürütülmesini ertelerken ertelerken bir üst seviye kesme servis rutini (ISR) hızlı bir şekilde işlemesini sağlar. Sürücüler, giriş / çıkış (G / Ç) işlemlerini zamanlamak için DPC'leri kullanır. Sürücüler, Windows tarafından donanım aygıtlarıyla iletişim kurmak için kullanılan yazılımlardır.

Transferler

Bir çekirdek modu aygıt sürücüsü, bir ses veya video veri akışının harici bir aygıta veya harici bir aygıta aktarılmasını geleneksel olarak gerçekleştirir. Aygıt sürücülerinin veri işlemesi kesilir. Harici donanım, aygıt sürücüsünden bir sonraki veri kümesini aktarmasını istemek için rutin olarak kesintiler oluşturur. Bir aygıt sürücüsü, kesme yordamındaki verileri anında işleyemez; Bu nedenle, işletim sisteminin DPC olan bir geri çağırma rutini başlatması gerekir. Çekirdek modu veya sistem modu ve kullanıcı modu, merkezi işlem ünitenizin çalışma modlarıdır. Çekirdek tüm sistem işleme faaliyetlerini kontrol eder.

Zamanlama

Ertelenmiş prosedür çağrısı kavramı yalnızca çekirdek modunda mevcuttur. İşletim sistemi, aygıt sürücüleri tarafından planlanan DPC'leri kuyrukta tutar. Sisteminizin kesintileri işlemesi gerekiyorsa, çekirdek DPC sırasını kontrol eder ve kesinti yoksa ve DPC işlemlerinin çalışmaması durumunda ilk DPC'yi yürütür. DPC kuyruğu işlemi, dağıtım programı bir iş parçacığı seçmeden ve bunu CPU'ya atamadan önce gerçekleştiğinden, DPC sistemdeki en öncelikli iş parçacığıdır. DPC'ler üç öncelik seviyesine sahiptir: düşük, orta ve yüksek.

Süreçler

Her DPC, bir sistem tanımlı DPC nesnesiyle bağlantılıdır. Bir sürücü bir DPCForslr yordamını kaydederse, sistem önceden tanımlanmış DPC nesnesini başlatır. Birden fazla DPC gerekliyse, bir sürücü CustomDPC yordamları olarak bilinen ek DPC nesneleri oluşturur. DPCForlsr yordamı birkaç işlemi gerçekleştirir; giriş / çıkış isteği paketleri (IRP) tarafından açıklanan G / Ç işlemini tamamlar, bir sonraki IRP'yi temizler, alınan IRP'deki giriş / çıkış durumunu ve isteği tamamlama işlemini ayarlar.

Rutin

Normalde, bir kesme hizmeti yordamı olan bir aygıt sürücüsünde, kesme odaklı G / Ç işlemlerinin işlenmesini tamamlamak için en az bir DPCForIsr veya CustomDPC yordamı vardır. Open Systems Resources, Inc.’e göre, sürücünün tek bir DPCForlsr rutini, bir CustomDPC rutini veya her ikisinin de temel bir nedeni olmasının temel sebebi, altındaki cihazın yapısına ve desteklemesi gereken G / Ç isteklerine bağlıdır. Bir sürücünün ISR'sinin, DPCForlsr yordamlarını kullanan kesme odaklı G / Ç işlemleri için IoRequestDPC'yi çağırması gerekir. Buna karşılık, çakışan işlemler için, CustomDPC yordamlarını kullanan kesinti ile çalışan G / Ç işlemleri için ISR'nin KeInsertQueueDPC'yi çağırması gerekir.