Δείτε πώς λειτουργεί:
* Χρονική: Ο χρονομετρητής λογισμικού παρακολουθεί το χρόνο, συνήθως με τον περιοδικό έλεγχο του ρολογιού συστήματος (ένας μετρητής υψηλής ανάλυσης που διατηρείται από το λειτουργικό σύστημα). Αυτό θα μπορούσε να περιλαμβάνει απλή αφαίρεση (συγκρίνοντας τον τρέχοντα χρόνο με χρόνο στόχου) ή πιο εξελιγμένες μεθόδους.
* Προγραμματισμός συμβάντων: Ο χρονομετρητής λογισμικού έχει οριστεί για να ενεργοποιήσει ένα συμβάν ή να εκτελέσει μια συνάρτηση μετά από ένα συγκεκριμένο χρονικό διάστημα ή σε ένα συγκεκριμένο χρονικό σημείο.
* Εφαρμογή: Η εφαρμογή ποικίλλει ανάλογα με τη γλώσσα προγραμματισμού και το λειτουργικό σύστημα. Οι κοινές τεχνικές περιλαμβάνουν:
* Δημοσκόπηση: Το πρόγραμμα ελέγχει συνεχώς την τρέχουσα ώρα έναντι του χρόνου προορισμού. Αυτό είναι απλό, αλλά καταναλώνει πόρους της CPU, καθώς το πρόγραμμα πρέπει να παρακολουθεί ενεργά το χρόνο.
* Διακοπή (σπάνια σε καθαρά χρονομετρητές λογισμικού): Αν και λιγότερο συνηθισμένοι για τους καθαρά χρονομετρητές λογισμικού, μερικοί μπορεί να χρησιμοποιούν διακόπτες του συστήματος σε τακτά χρονικά διαστήματα. Ο χειριστής διακοπής θα ελέγξει εάν έχουν λήξει οποιοσδήποτε χρονομετρητής λογισμικού. Αυτό είναι πιο αποτελεσματικό από τη δημοσκόπηση, αλλά απαιτεί αλληλεπίδραση σε επίπεδο OS.
* Λειτουργίες ύπνου/περιμένετε: Το πρόγραμμα μπορεί να χρησιμοποιήσει λειτουργίες όπως `Sleep ()` (σε γλώσσες όπως το C/C ++) ή παρόμοια κατασκευάσματα για την παύση της εκτέλεσης για μια καθορισμένη διάρκεια πριν επαναληφθεί και έλεγχος για λήξη του χρονοδιακόπτη. Αυτός είναι ένας συμβιβασμός μεταξύ των προσεγγίσεων με δημοσκόπηση και διακοπής, χρησιμοποιώντας λιγότερη CPU από την ψηφοφορία, αλλά δυνητικά λιγότερο ακριβή.
Πλεονεκτήματα:
* Ευελιξία: Οι χρονομετρητές λογισμικού μπορούν εύκολα να προγραμματιστούν και να προσαρμοστούν για να χειριστούν σύνθετες ανάγκες χρονισμού.
* Φορητότητα (δυνητικά): Οι καλά σχεδιασμένοι χρονομετρητές λογισμικού μπορούν να μεταφερθούν ευκολότερα σε διαφορετικά λειτουργικά συστήματα από τις λύσεις που βασίζονται σε χρονοδιακόπτη υλικού.
Μειονεκτήματα:
* overhead CPU: Οι χρονομετρητές λογισμικού που βασίζονται σε δημοσκοπήσεις μπορούν να καταναλώσουν σημαντικούς πόρους της CPU, ειδικά εάν πολλοί χρονομετρητές εκτελούνται ταυτόχρονα.
* Ακρίβεια: Η ακρίβεια ενός χρονομετρητή λογισμικού εξαρτάται από τη συχνότητα με την οποία το ρολόι του συστήματος ενημερώνεται και η ακρίβεια του μηχανισμού χρονομέτρησης του συστήματος. Είναι γενικά λιγότερο ακριβές από τους χρονομετρητές υλικού.
* Αποκλεισμός (ενδεχομένως): Οι απλές υλοποιήσεις ενδέχεται να εμποδίσουν άλλα μέρη του προγράμματος ενώ περιμένουν να λήξει ο χρονομετρητής.
Χρήση περιπτώσεων:
Οι χρονομετρητές λογισμικού χρησιμοποιούνται συνήθως σε:
* Ανάπτυξη παιχνιδιών: Για εργασίες όπως η κινούμενη εικόνα, ο έλεγχος του εχθρού AI και η ενεργοποίηση των γεγονότων.
* Ενσωματωμένα συστήματα: Όπου οι χρονομετρητές υλικού ενδέχεται να είναι περιορισμένοι ή μη διαθέσιμοι.
* Λειτουργικά συστήματα: Για τις εργασίες προγραμματισμού και τις διαδικασίες διαχείρισης.
* Εφαρμογές δικτύου: Για χρονικά όρια και αναμεταδόσεις.
Σε αντίθεση με τους χρονομετρητές υλικού, τα οποία είναι αφιερωμένα τσιπς στη μητρική πλακέτα, οι χρονομετρητές λογισμικού είναι καθαρά κατασκεύασμα λογισμικού. Είναι συχνά μια καλή επιλογή για απλούστερες εφαρμογές ή καταστάσεις όπου οι χρονομετρητές υλικού δεν είναι διαθέσιμοι ή μη πρακτικοί στη χρήση, αλλά δεν υποκαθιστούν εφαρμογές υψηλής ακρίβειας, σε πραγματικό χρόνο που απαιτούν πολύ ακριβή χρονισμό.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα