Apa itu Panggilan Prosedur yang Ditangguhkan?

Panggilan prosedur yang ditangguhkan (DPC) adalah mekanisme penanganan interupsi di sistem operasi Microsoft Windows yang dapat dirujuk oleh driver saat menjalankan proses tertentu. DPC memungkinkan tugas diaktifkan, tetapi tidak dieksekusi, dari tingkat permintaan interupsi yang sangat diprioritaskan (IRQL). Ini memungkinkan pengemudi untuk memproses rutin layanan interupsi tingkat tinggi (ISR) dengan cepat sambil menunda eksekusi kode IRQL tingkat yang lebih rendah. Driver menggunakan DPC untuk menjadwalkan operasi input/output (I/O). Driver adalah perangkat lunak yang digunakan oleh Windows untuk berkomunikasi dengan perangkat keras.

Transfer

Driver perangkat mode kernel secara konvensional menangani transfer aliran data audio atau video dari atau ke perangkat eksternal. Pemrosesan data driver perangkat digerakkan oleh interupsi. Perangkat keras eksternal secara rutin menghasilkan interupsi untuk meminta driver perangkat untuk mentransfer kumpulan data berikutnya. Driver perangkat tidak dapat memproses data secara instan dalam rutinitas interupsinya; dengan demikian, sistem operasi perlu memicu rutinitas panggilan balik, yaitu DPC. Mode kernel, atau mode sistem, dan mode pengguna adalah mode operasi unit pemrosesan pusat Anda. Kernel mengontrol semua aktivitas pemrosesan sistem.

Penjadwalan

Konsep panggilan prosedur yang ditangguhkan hanya ada dalam mode kernel. Sistem operasi membuat DPC dijadwalkan oleh driver perangkat dalam antrian. Jika sistem Anda perlu memproses interupsi, kernel akan memeriksa antrian DPC dan mengeksekusi DPC pertama jika tidak ada interupsi dan tidak ada proses DPC yang berjalan. DPC adalah utas dengan prioritas tertinggi dalam sistem, karena pemrosesan antrean DPC terjadi sebelum petugas operator memilih utas dan menetapkannya ke CPU. DPC memiliki tiga tingkat prioritas: rendah, sedang, dan tinggi.

Proses

Setiap DPC ditautkan dengan satu objek DPC yang ditentukan sistem. Saat driver mendaftarkan rutin DPCForslr, sistem menginisialisasi objek DPC yang ditentukan sebelumnya. Jika lebih dari satu DPC diperlukan, driver membuat objek DPC tambahan yang dikenal sebagai rutinitas CustomDPC. Rutin DPCForlsr menangani beberapa proses; itu menyelesaikan operasi I/O yang dijelaskan oleh paket permintaan input/output (IRP), deques IRP berikutnya, menetapkan status input/output di IRP yang diterima dan proses untuk menyelesaikan permintaan.

Rutinitas

Biasanya, driver perangkat yang memiliki rutin layanan interupsi memiliki setidaknya satu rutin DPCForIsr atau CustomDPC untuk menyelesaikan pemrosesan operasi I/O yang digerakkan oleh interupsi. Menurut Open Systems Resources, Inc., alasan mendasar seorang driver memiliki satu rutin DPCForlsr, satu set rutinitas CustomDPC atau keduanya bergantung pada sifat perangkat dasarnya dan set permintaan I/O yang harus didukungnya. ISR driver perlu memanggil IoRequestDPC untuk operasi I/O yang digerakkan oleh interupsi menggunakan rutinitas DPCForlsr. Sebaliknya, untuk operasi yang tumpang tindih, operasi I/O yang digerakkan oleh interupsi menggunakan rutinitas CustomDPC, ISR perlu memanggil KeInsertQueueDPC.