Πρόσβαση σε αισθητήρες σε επίπεδο kernel και εργασία EXT2-lite, με character devices, συγχρονισμό, readers που μπλοκάρουν και εσωτερικά του filesystem.
Το πρόβλημα
Ο κώδικας του kernel πρέπει να συντονίζει με ασφάλεια την κοινή κατάσταση και το blocking I/O ανάμεσα σε ταυτόχρονες διεργασίες χρηστών, σεβόμενος τα όρια user/kernel.
Τι φτιάχτηκε
Driver character device για αισθητήρα σε Linux, που χρησιμοποιεί file operations του kernel και primitives συγχρονισμού, μαζί με εργασία filesystem EXT2-lite επικεντρωμένη στις δομές πάνω στον δίσκο.
Τεχνική προσέγγιση
- Έκθεση των μετρήσεων του αισθητήρα μέσω character devices στο /dev
- Υλοποίηση των λειτουργιών open, read και release
- Συντονισμός κοινών buffers με semaphores, spinlocks και wait queues
- Αναστολή και αφύπνιση των readers ανάλογα με τη διαθεσιμότητα μέτρησης
- Διερεύνηση των δομών inode, block και directory του EXT2
Αποφάσεις μηχανικής
- Readers που μπλοκάρουν αντί για σπάταλο polling.
- Επιλογή primitives συγχρονισμού ανάλογα με το περιβάλλον του kernel και τα όρια της κοινής κατάστασης.
- Μορφοποίηση των δεδομένων του αισθητήρα στη διεπαφή kernel/user space.
- Οι ισχυρισμοί για το filesystem παραμένουν περιορισμένοι μέχρι να ελεγχθούν οι τελικές λειτουργίες.
Πώς ελέγχθηκε
- Το repository τεκμηριώνει file operations character device και ταυτόχρονη πρόσβαση.
- Semaphores, spinlocks και wait queues αποτελούν μέρος της επαληθευμένης εργασίας.
- Το EXT2-lite υπάρχει ως υλοποίηση και χώρος εργασίας για filesystem.
Τι δείχνει
Σκέψη χαμηλού επιπέδου σε C και Linux: ταυτοχρονισμός, blocking I/O, συγχρονισμός κοινής κατάστασης και βασικές αρχές filesystem.
Για την πηγή
Ακαδημαϊκό έργο μηχανικής. Η συμπεριφορά του EXT2 περιγράφεται συντηρητικά μέχρι να ελεγχθεί η τελική υλοποίηση.