\section{Πειράματα}

Στο πρόγραμμα που παραδίδεται υλοποιούνται τέσσερα πειράματα. Όλα τα πειράματα υλοποιούνται διαδοχικά στο σώμα της συνάρτησης \texttt{testSampling}.

Στο πρώτο πείραμα (lines 29-38) γίνεται χρήση μόνο της συνάρτησης sleep με στόχο την αναστολή της εκτέλεσης του προγράμματος για χρόνο ίσο με τη περίοδο δειγματοληψίας. Έπειτα εξάγεται και αποθηκεύεται ένα timestamp. Η διαδικασία αυτή γίνεται επαναληπτικά έως ότου ξεπεραστεί ο επιθυμητός χρόνος δειγματοληψίας.

Στο δεύτερο πείραμα (lines 40-52) ακολουθείται η ίδια διαδικασία με το προηγούμενο πείραμα, αυτή τη φορά όμως διατηρείται ο μέσος όρος του σφάλματος μεταξύ της επιθυμητής και της πραγματικής περιόδου δειγματοληψίας. Ο μέσος όρος αυτός αφαιρείται από την περίοδο δειγματοληψίας κατά την κλήση της συνάρτησης sleep, με τον τρόπο αυτό επιδιώκεται η διόρθωση των αποκλίσεων της πραγματικής περιόδου δειγματοληψίας από την επιθυμητή. Μία μέθοδος που πιθανόν να επέφερε καλύτερα αποτελέσματα είναι η υλοποίηση ενός φίλτρου Wiener.

Στο τρίτο πείραμα (lines 54-82) γίνεται χρήση διακοπών για την επίτευξη του ίδιου σκοπού. Το πρόγραμμα θέτει μία επαναλαμβανόμενη διακοπή, η οποία έρχεται με τη μορφή σήματος (signal). Ορίζεται μία σημαία \texttt{sample\_flag} η οποία γίνεται αληθής (true) κατά τη λήψη σήματος από διακοπή. Η διεργασία (process) ελέγχει τη σημαία επαναληπτικά. Όταν η σημαία γίνει αληθής εξάγει και αποθηκεύει το timestamp και θέτει ξανά τη σημαία ψευδή (false).

Στο τέταρτο πείραμα (lines 85-105) γίνεται χρήση τόσο της συνάρτησης sleep όσο και διακοπών. Το πείραμα θέτει και πάλι μία επαναλαμβανόμενη διακοπή. Ωστόσο, κατά την αναμονή σήματος διακοπής η διεργασία αναστέλλεται με χρήση της συνάρτησης sleep. Το πείραμα βασίζεται στο γεγονός ότι τα εισερχόμενα σήματα, αυτό της διακοπής στη προκειμένη περίπτωση, επαναφέρουν τη διεργασία του προγράμματος στο προσκήνιο, πρακτικά ακυρώνοντας τη διαδικασία sleep. Με τη τροποποίηση αυτή είναι επιθυμητή η κατανάλωση λιγότερης ενέργειας.