Ευχαριστούμε που στάλθηκε η αποσαφήνισή σας! Ένα μέλος της ομάδου μας θα επικοινωνήσει μαζί σας σύντομα.
Ευχαριστούμε για την εκδήλωση κράτησης! Ένας από τους συνεργάτες μας θα επικοινωνήσει μαζί σας σύντομα.
Εξέλιξη Κομματιού
Εισαγωγή
- πολύ γρήγορη ιστορία του GNU/Linux
- άδειες χρήσης
- διαχείριση εκδόσεων κερνέλ
- κύκλος έκδοσης
- δέντρα κερνέλ
- κύρια γραμμή (mainline)
- κερνέλ υπό ανάπτυξη vs. χώρος χρήστη
- μηχανισμός vs. πολιτική (policy)
- εναλλακτικές λύσεις για τρόπους διαχείρισης κερνέλ
- RTOS vs. Linux
Διαχείριση Μνήμης
- φυσική μνήμη vs. εικονική μνήμη
- διαχείριση χώρου πάγωσης στο κερνέλ
- σελίδες (pages)
- zones
- API
- slab
Ενδοιαφέρουσες Αλλαγές στο Κερνέλ (Kernel Patch)
- κύκλος ζωής
- git
- πηγαίος κώδικας κερνέλ
- δημιουργία αλλαγής (patch)
- εξέταση αλλαγής
- διόρθωση αλλαγής
- άποστολή αλλαγής (ship patch)
- ελεγχθέν κώδικας
Μονάδες Κερνέλ (Kernel Modules)
- πώς να πάρετε τις πηγές κερνέλ
- διαμόρφωση/κατασκευή/εγκατάσταση (configure/build/install)
- τρόποι διαχείρισης συσκευών (σύνδεση στατικά, φόρτωση κατά την εκτέλεση)
- init/exit
- άδειες χρήσης (licensing)
- EXPORT SYMBOL GPL
- εκτός δέντρου makefile (out of tree makefile)
- module-init-tools
- μονάδα σε δέντρο κερνέλ
- Kconfig
- παράδοση παραμέτρων (parameter passing)
- sparse
Τρόποι Διαχείρισης Χαρακτήρων (Char Drivers)
- αρχιτεκτονική
- διεπαφή χρήστη/κερνέλ (user/kernel interface)
- υποδιασύστημα I/O
- VFS
- sysfs (συσκευές, bus, drivers, κλάσεις)
- kobject/ktype/kset
- μοντέλο διαχείρισης συσκευών του Linux kernel
- αρχεία συσκευών (device files)
-
τρόπος διαχείρισης χαρακτήρων
- εκκίνηση (initialization)
- Εγγραφή (registration)
- ανοιχτών, κλειδών
- cdev, cdev add, cdev del,...
- μεγάλα/μικρά αριθμοί (major/minor numbers)
- udev, udevmonitor, udevadm
Προηγμένες Λειτουργίες Τρόπων Διαχείρισης Χαρακτήρων
- ioctl
- unlocked ioctl
- compat ioctl
- API χώρου χρήστη (user space)
- API χώρου κερνέλ (kernel space)
- κύκλος ζωής διαδικασίας
- ύπνος/μπλόκινγκ (sleeping/blocking)
- Υπνούντα/Εξυπνούντα (sleeping/waking up)
- ουρά περιμένουσας (wait queue)
- μπούκι κτυφωνήδης (thundering herd)
- poll/select
Επανεξέταση Κερνέλ (Kernel Debugging)
- επανεξέταση
-
επανεξέταση του κερνέλ (kernel debugging)
- δυαδική αναζήτηση με git
- υποστήριξη επανεξέτασης από το κερνέλ (debug support from kernel)
- printk, syslogd, klogd, loglevels, rate limit, debug levels, selective subsystems
- επανεξέταση μέσω ερωτήματος debugfs (debugging by querying debugfs)
- επανεξέταση κτυφών (oops debugging, asserting oops)
- Μαγική κλειδί SysRq
- kgdb/kdb
- JTAG
Συντήρηση (Tracing)
- gcov
- lcov
- oprofile
-
ftrace
- nop tracer
- function tracer
- sched switch tracer
- function graph tracer
- dynamic tracer
- trace-cmd/kernelshark
- perf
- LTTng
Μελάνια (Interrupts)
- μελάνια vs. εξονυχιστική έρευνα (polling)
- μελάνια
- τμήματα προγράμματος
- αντικατάσταση (reentrancy)
- γεγονότα (events)
- χειριστής μελάνια (interrupt handler)
- κοινός χειριστής μελάνια (shared interrupt handler)
- ροή μελάνια (interrupt flow)
- ελέγχους μελάνια (interrupt control)
Αναβολή Εργασίας
- τμήματα από πάνω/κάτω (top/bottom halves)
- softirqs
- tasklets
- work queues
- μελάνια που εκτελούνται ως κλήσεις (threaded interrrupts)
Συμφωνία
- κρίσιμη περιοχή/τμήμα (critical region/section)
- ατόμιες λειτουργίες (atomic)
- συνθήκη ανταγωνισμού (race condition)
- Συγχρονισμός (synchronization)
- κλείδωμα (locking)
- λύσεις κλείδωματος (locking solutions)
- χάους (deadlock)
- ανταγωνισμός (contention)
- τι πρέπει να κλείδωνε;
-
τι μπορεί να χρησιμοποιηθεί;
- ατόμιες λειτουργίες (atomic operations)
- κλειδώματα ποστού (spin locks)
- κλειδώματα ανάγνωσης-γραφής ποστού (reader-writer spin locks)
- σημαφόροι (semaphore)
- δυναμικά σημαφόροι (binary semaphore)
- μέτωνες (mutex)
- σημαφόροι ανάγνωσης-γραφής (reader-writer semaphore)
- μεταβλητές εκτέλεσης (completion variables)
- κλειδώματα σειράς (sequential locks)
- απενεργοποίηση πρόωθησης (disable preemption)
- σειρά και φραγμές (ordering and barriers)
Χρόνος
- HZ
- Jiffies
- μεγάλα/μικρά καθυστέρησεις (big/small delays)
- timers του kernel
Υλική I/O
- Πύλες I/O (I/O Ports)
- Μνήμη I/O (I/O Memory)
- Πώς να αντιδράσετε στα πλευροδιακόπτη κατά την πρόσβαση σε ρευστές;
Επικοινωνία Χρήστη-Κερνέλ
- put(get)_user()
- copy to(from)_user()
- I/O του Κερνέλ (Kernel I/O)
- αποδότηση μνήμης
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Πορταβιλικότητα
- μέγεθος λέξης (word size)
- κρυφά τύποι (opaque types)
- σήμαντικά/ασήμαντικά char
- προσαρμογή δεδομένων (data alignment)
- αναπόσπαστη επέκταση
- πολιτική αναβίωσης κώδικα (code reuse)
- endianess
- σύστημα tick
- μέγεθος σελίδας (page size)
- Ταξινόμηση και φραγμές
- SMP/πρόωθηση/υψηλή μνήμη (SMP/preemption/high memory)
Εκτός αν ορίζεται διαφορετικά, το περιεχόμενο και αυτή η επισκόπηση μαθήματος είναι υπό Αναφορά-Μη Εμπορική-Παραμονή 4.0 Διεθνές (CC BY-NC-SA 4.0).
Απαιτήσεις
- Βασική γνώση της χρήσης συστήματος GNU/Linux ως τελικός χρήστης
- Βασική γνώση κλικ προσανατολισμένων σε εντολές
- Βασική γνώση ανάπτυξης χώρου χρηστών / εφαρμογών
- Διαμεσαία γνώση προγραμματισμού C
- Θα πρέπει να έχουν συμμετέχει στο Ενσωματωμένα Σύστηματα GNU/Linux Architecture (δραστήρια πρότυπο!) και/ή να έχουν καλή κατανόηση των εκεί παρουσιαζόμενων θεμάτων
35 Ώρες
Σχόλια (3)
Όλα είναι καλά.
Adrian Rybka - SEOyon
Κομμάτι - Flutter Development Bootcamp with Dart
Μηχανική Μετάφραση
Πολύ χρήσιμες πρόσθετες πληροφορίες
Grzegorz - Comp S.A.
Κομμάτι - BLoC Pattern
Μηχανική Μετάφραση
Η γνώση και η υπομονή του.
Chrisna - Agricatural Research Council
Κομμάτι - Ionic 4 and Angular for Developers
Μηχανική Μετάφραση