Τι καλεί η διαδικασία αναβολής;

Πίνακας περιεχομένων:

Anonim

Μια κλήση αναστολής διαδικασίας (DPC) είναι ένας μηχανισμός χειρισμού διακοπών στο λειτουργικό σύστημα Microsoft Windows, στον οποίο μπορούν να αναφέρονται οι οδηγοί κατά την εκτέλεση ορισμένων διαδικασιών. Το DPC επιτρέπει σε μια εργασία να ενεργοποιηθεί, αλλά να μην εκτελεστεί, από ένα επίπεδο προτεραιότητας αιτήματος διακοπής (IRQL). Αυτό επιτρέπει σε ένα πρόγραμμα οδήγησης να επεξεργάζεται γρήγορα μια ρουτίνα υψηλού επιπέδου υπηρεσίας διακοπής (ISR), ενώ αναβάλλει την εκτέλεση κωδικών IRQL χαμηλότερου επιπέδου. Οι οδηγοί χρησιμοποιούν DPCs για να προγραμματίσουν τις λειτουργίες εισόδου / εξόδου (I / O). Τα προγράμματα οδήγησης είναι λογισμικό που χρησιμοποιείται από τα Windows για επικοινωνία με συσκευές υλικού.

Μεταφορές

Ένας οδηγός συσκευής λειτουργίας πυρήνα χειρίζεται συμβατικά τη μεταφορά μιας ροής δεδομένων ήχου ή βίντεο από ή σε μια εξωτερική συσκευή. Η επεξεργασία δεδομένων των προγραμμάτων οδήγησης συσκευών προκαλείται από διακοπή. Το εξωτερικό υλικό δημιουργεί συστηματικά διακοπές για να ζητήσει από το πρόγραμμα οδήγησης της συσκευής να μεταφέρει την επόμενη παρτίδα δεδομένων. Ένα πρόγραμμα οδήγησης συσκευής δεν μπορεί να επεξεργαστεί τα δεδομένα αμέσως στη ρουτίνα διακοπής του. Έτσι, το λειτουργικό σύστημα πρέπει να ενεργοποιήσει μια ρουτίνα επανάκλησης, η οποία είναι η DPC. Η λειτουργία πυρήνα ή η κατάσταση συστήματος και η κατάσταση χρήστη είναι οι τρόποι λειτουργίας της κεντρικής μονάδας επεξεργασίας. Ο πυρήνας ελέγχει όλες τις δραστηριότητες επεξεργασίας του συστήματος.

Χρονοδρομολόγηση

Η έννοια μιας κλήσης αναβολής διαδικασίας υπάρχει μόνο στη λειτουργία πυρήνα μόνο. Το λειτουργικό σύστημα διατηρεί τα DPC που προγραμματίζονται από τα προγράμματα οδήγησης συσκευών σε μια ουρά. Εάν το σύστημά σας χρειάζεται να επεξεργαστεί διακοπές, ο πυρήνας ελέγχει την ουρά DPC και εκτελεί το πρώτο DPC εάν δεν υπάρχουν διακοπές και δεν εκτελούνται διαδικασίες DPC. Το DPC είναι το υψηλότερο κατά προτεραιότητα νήμα στο σύστημα, καθώς η επεξεργασία ουρών DPC πραγματοποιείται πριν ο αποστολέας επιλέξει ένα νήμα και το αντιστοιχίσει στον επεξεργαστή. Τα DPC έχουν τρία επίπεδα προτεραιότητας: χαμηλό, μεσαίο και υψηλό.

Διαδικασίες

Κάθε DPC συνδέεται με ένα αντικείμενο DPC που έχει οριστεί από το σύστημα. Όταν ένας οδηγός καταχωρεί μια ρουτίνα DPCForslr, το σύστημα αρχικοποιεί το προηγουμένως καθορισμένο αντικείμενο DPC. Εάν απαιτούνται περισσότερα από ένα DPC, ένας οδηγός δημιουργεί πρόσθετα αντικείμενα DPC γνωστά ως ρουτίνες CustomDPC. Η ρουτίνα DPCForlsr χειρίζεται διάφορες διαδικασίες. ολοκληρώνει τη λειτουργία εισόδου / εξόδου που περιγράφεται από τα πακέτα αίτησης εισόδου / εξόδου (IRP), deques την επόμενη IRP, ορίζει την κατάσταση εισόδου / εξόδου στο λαμβανόμενο IRP και τη διαδικασία για την ολοκλήρωση της αίτησης.

Ρουτίνες

Κανονικά, ένα πρόγραμμα οδήγησης συσκευής που έχει ρουτίνα υπηρεσιών διακοπής έχει τουλάχιστον μία ρουτίνα DPCForIsr ή CustomDPC για να ολοκληρώσει την επεξεργασία των λειτουργιών I / O που διεξάγονται με διακοπή. Σύμφωνα με την Open Systems Resources, Inc., ο βασικός λόγος που ο οδηγός έχει μια ενιαία ρουτίνα DPCForlsr, ένα σύνολο ρουτινών CustomDPC ή και οι δύο εξαρτάται από τη φύση της υποκείμενης συσκευής και από το σύνολο αιτήσεων I / O που πρέπει να υποστηρίζει. Το ISR του οδηγού πρέπει να καλέσει το IoRequestDPC για λειτουργίες εισόδου / εξόδου με διακοπή, χρησιμοποιώντας ρουτίνες DPCForlsr. Αντιστρόφως, για αλληλεπικαλυπτόμενες λειτουργίες, λειτουργίες I / O που χρησιμοποιούν διακοπή χρησιμοποιώντας ρουτίνες CustomDPC, η ISR πρέπει να καλέσει το KeInsertQueueDPC.