Course Outline

Εισαγωγή

  • γρήγορη ιστορία του GNU/Linux
  • αδειοδότησης
  • έκδοση πυρήνα
  • κύκλος απελευθέρωσης
  • πυρηνόδεντρα
  • κύρια γραμμή
  • πυρήνας έναντι χώρου χρήστη
  • μηχανισμός έναντι πολιτικής
  • εναλλακτικές λύσεις προγράμματος οδήγησης πυρήνα
  • RTOS εναντίον Linux

Μνήμη Management

  • Εικονική μνήμη έναντι φυσικής μνήμης
  • κατανομή μνήμης στον πυρήνα
  • σελίδες
  • ζώνες
  • API
  • πλάκα

Patch πυρήνα

  • κύκλος ζωής
  • git
  • πηγή πυρήνα
  • δημιουργία ενημερωμένης έκδοσης κώδικα
  • ελέγξτε το έμπλαστρο
  • διορθώστε το έμπλαστρο
  • έμπλαστρο πλοίου
  • ελεγμένο κωδικό

Ενότητες πυρήνα

  • λάβετε πηγές πυρήνα
  • διαμόρφωση/κατασκευή/εγκατάσταση
  • προγράμματα οδήγησης συσκευών (στατικά συνδεδεμένα, φορτωμένα κατά το χρόνο εκτέλεσης)
  • έναρξη/έξοδος
  • αδειοδότησης
  • ΣΥΜΒΟΛΟ ΕΞΑΓΩΓΗΣ GPL
  • από δέντρο makefile
  • module-init-tools
  • ενότητα στο δέντρο πυρήνα
  • Kconfig
  • πέρασμα παραμέτρων
  • αραιός

Char Drivers

  • αρχιτεκτονική
  • διεπαφή χρήστη/πυρήνα
  • Υποσύστημα I/O
  • VFS
  • sysfs (συσκευές, λεωφορείο, προγράμματα οδήγησης, κλάσεις),
  • kobject/ktype/kset
  • Μοντέλο προγράμματος οδήγησης πυρήνα linux
  • αρχεία συσκευής
  • char driver
    • αρχικοποίηση
    • εγγραφή
    • άνοιγμα, απελευθέρωση
    • cdev, cdev add, cdev del,...
    • κύριοι/ελάσσονες αριθμοί
    • udev, udevmonitor, udevadm

Προηγμένες λειτουργίες προγράμματος οδήγησης χαρακτήρων

  • ioctl
  • ξεκλείδωσε ioctl
  • compat ioctl
  • API χώρου χρήστη
  • API χώρου πυρήνα
  • κύκλο ζωής της διαδικασίας
  • ύπνος/μπλοκάρισμα
  • ύπνος/ξύπνημα
  • ουρά αναμονής
  • βροντερό κοπάδι
  • δημοσκόπηση/επιλογή

Εντοπισμός σφαλμάτων πυρήνα

  • έντομο
  • αποσφαλμάτωση
  • αποσφαλμάτωση του πυρήνα
    • δυαδική αναζήτηση με git
    • υποστήριξη εντοπισμού σφαλμάτων από τον πυρήνα
    • printk syslogd, klogd, loglevels, όριο ρυθμού, επίπεδα εντοπισμού σφαλμάτων, επιλεκτικά υποσυστήματα εντοπισμού σφαλμάτων
    • εντοπισμός σφαλμάτων μέσω ερωτήματος για εντοπισμό σφαλμάτων
    • ουπς εντοπισμός σφαλμάτων, επιβεβαίωση οκ
    • Μαγικό κλειδί SysRq
    • kgdb/kdb
    • JTAG

Ιχνηλασία

  • gcov
  • lcov
  • οπροφίλ
  • ftrace
    • nop tracer
    • ιχνηθέτης λειτουργίας
    • ιχνηλάτης sched switch
    • ιχνηθέτης γραφήματος συνάρτησης
    • δυναμικός ιχνηλάτης
  • trace-cmd/kernelshark
  • perf
  • LTTng

Διακόπτει

  • διακόπτει έναντι ψηφοφορίας
  • διακοπή
  • ενότητες προγράμματος
  • επανεισδοχή
  • εκδηλώσεις
  • χειριστής διακοπής
  • κοινόχρηστος χειριστής διακοπών
  • διακόπτει τη ροή
  • έλεγχος διακοπής

Αναβολή Εργασίας

  • πάνω/κάτω μισά
  • softirqs
  • tasklets
  • ουρές εργασίας
  • διακοπές με σπείρωμα

Συγχρονισμός

  • κρίσιμη περιοχή/τμήμα
  • ατομικός
  • αγωνιστική κατάσταση
  • συγχρονισμός
  • κλείδωμα
  • λύσεις κλειδώματος
  • αδιέξοδο
  • ισχυρισμός
  • τι να κλειδωσω
  • τι μπορεί να χρησιμοποιηθεί;
    • ατομικές λειτουργίες
    • περιστροφικές κλειδαριές
    • περιστροφικές κλειδαριές αναγνώστη-συγγραφέα
    • σηματοφόρος
    • δυαδικός σηματοφόρος
    • mutex
    • σηματοφόρος αναγνώστης-συγγραφέας
    • μεταβλητές ολοκλήρωσης
    • διαδοχικές κλειδαριές
    • απενεργοποιήστε την προκοπή
    • παραγγελίες και εμπόδια

Φορά

  • HZ
  • Jiffies
  • μεγάλες/μικρές καθυστερήσεις
  • χρονόμετρα πυρήνα

Είσοδος/Έξοδος υλικού

  • Θύρες I/O
  • I/O Μνήμη
  • Πώς να αντιμετωπίσετε τις παρενέργειες πρόσβασης στα μητρώα;

Χρήστης-πυρήνας Communication

  • put(get)_user()
  • copy to(from)_user()
  • Πυρήνα I/O
  • χαρτογράφηση μνήμης
  • προφ
  • sysfs
  • διορθώνει
  • ρελέφ
  • netlink
  • ioctl

Φορητότητα

  • μέγεθος λέξης
  • αδιαφανείς τύποι
  • υπογεγραμμένο/ανυπόγραφο χαρ
  • ευθυγράμμιση δεδομένων
  • ολοκληρωμένη προώθηση
  • επαναχρησιμοποίηση κώδικα
  • ενδιάμεση
  • τικ συστήματος
  • μέγεθος σελίδας
  • παραγγελία οδηγιών
  • SMP/preemption/υψηλή μνήμη

Εκτός εάν αναφέρεται διαφορετικά, το περιεχόμενο και η περιγραφή αυτού του μαθήματος αδειοδοτούνται σύμφωνα με το Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Requirements

  • Βασική εξοικείωση με τη χρήση ενός συστήματος GNU/Linux ως τελικός χρήστης
  • Βασική εξοικείωση με ένα κέλυφος γραμμής εντολών
  • Βασικές γνώσεις χώρου χρήστη / ανάπτυξη εφαρμογών
  • Γνώσεις προγραμματισμού μεσαίου επιπέδου C
  • Θα έπρεπε να έχει παρακολουθήσει το Embedded GNU/Linux Systems Architecture πριν (συνιστάται ανεπιφύλακτα!) ή/και να έχει καλή κατανόηση των θεμάτων που περιγράφονται εκεί
 35 Hours

Number of participants


Price per participant

Testimonials (5)

Upcoming Courses

Related Categories