Apa Panggilan Prosedur yang Ditangguhkan?

Daftar Isi:

Anonim

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

Transfer

Driver perangkat mode kernel secara konvensional menangani transfer data audio atau video dari atau ke perangkat eksternal. Pemrosesan data driver perangkat didorong 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, yang merupakan 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 memeriksa antrian DPC dan mengeksekusi DPC pertama jika tidak ada interupsi dan tidak ada proses DPC yang berjalan. DPC adalah utas prioritas tertinggi dalam sistem, karena pemrosesan antrian DPC terjadi sebelum pengirim memilih utas dan memberikannya ke CPU. DPC memiliki tiga tingkat prioritas: rendah, sedang dan tinggi.

Proses

Setiap DPC ditautkan dengan satu objek DPC yang ditentukan sistem. Ketika driver mendaftarkan rutin DPCForslr, sistem menginisialisasi objek DPC yang ditentukan sebelumnya. Jika diperlukan lebih dari satu DPC, 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), membuat IRP berikutnya, menetapkan status input / output dalam IRP yang diterima dan proses untuk menyelesaikan permintaan.

Rutinitas

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