Λογισμικό Συστήματος (9011)

Ανακοινώσεις

Διαδικαστικά Μαθήματος Λογισμικό Συστήματος, Τμήμα ΗΜΜΥ
- Πέμπτη, 11 Ιανουαρίου 2024 - 12:53 μ.μ. -

Το μάθημα είναι ενιαίο και περιλαμβάνει Θεωρία (Δευτέρα 16:15-19:00) και Εργαστήριο (Δευτέρα 19:00-21:00) στο Εργαστήριο 1. Ξεκινάμε στις 2 Οκτώβρη (μετέπειτα κάποια μαθήματα θα γίνουν μαζί, λόγω διπλών εκλογών).

Εξεταστέα Ύλη

Η Εξεταστέα Ύλη χωρίζεται σε 3 ενότητες.

Ενότητα 1 – Ανάπτυξη Λογισμικού, POSIX/IPC, Τεχνικές Βελτιστοποίησης Απόδοσης & Ενεργειακής Κατανάλωσης

Η Ενότητα 1 περιλαμβάνει 5 μαθήματα (x01-x05). Στο πρώτο μάθημα (x01), εξετάζονται θέματα και εργαλεία ανάπτυξης ανοικτού λογισμικού και βιβλιοθηκών που βασίζονται κυρίως σε GNU software development. Τα εργαλεία αυτά αφορούν κυρίως compiling, assembling, linking, και debugging σε διάφορα συστήματα, π.χ. desktop, servers, και ενσωματωμένα συστήματα. Στα επόμενα 3 μαθήματα (x02 έως x04), κεντρικό σημείο αναφοράς αποτελεί η χρήση προγραμματιστικών τεχνικών και βιβλιοθηκών για αύξηση της απόδοσης και μείωση της ενεργειακής κατανάλωσης (dynamic power consumption), όπως σε concurrent servers. Γίνεται εκτενής αναφορά στη χρήση παράλληλων διεργασιών, νημάτων, συχγρονισμών, σημάτων, ουρών, σωληνώσεων, και γενικότερα δια-διεργασιακής επικοινωνίας και δiκτυακού προγραμματισμού (POSIX, IPC). Επίσης στο πέμπτο μάθημα (x05), εξετάζονται τεχνικές επιτάχυνσης σε επίπεδο compiler (SSEx vector operations), μέθοδοι που αυξάνουν το locality (caching, prefetching) και εργαλεία ανάλυσης/βελτιστοποίησης (profiling, performance tuning).

Ενότητα 2 – Λογισμικό Συστήματος για Μικροσυστήματα, Συστήματα Πραγματικού Χρόνου

Η Ενότητα 2 περιλαμβάνει 2 μαθήματα (x06-x07). Στο έκτο μάθημα (x06) εξετάζεται η χρήση και βιβλιοθηκών νημάτων (thin clients, protothreads) και small stacks (uIP, protosockets, lwIP) σε περιβάλλοντα με περιορισμένες απαιτήσεις (π.χ. boards βασισμένα σε 8- ή 16-bit AVR μικροελεγκτές). Επίσης στο έβδομο μάθημα (x07), εξετάζονται θέματα λειτουργικών συστημάτων πραγματικού χρόνου (RTOS) και υποστήριξης τεχνικών multitasking καθώς και προγραμμάτων οδηγών σε συστήματα πραγματικού χρόνου (WCET, WCCT). Εξετάζονται θέματα σχεδιασμού και χρονοπρογραμματισμού διεργασιών σε γνωστά λειτουργικά συστήματα πραγματικού χρόνου, π.χ. FreeRTOS και priority-based preemptive ThreadΧ (σε αντίστοιχες ενσωματωμένες πλατφόρμες). Επίσης εξετάζονται πρακτικά ζητήματα προβλεψιμότητας, ασφάλειας (security) και αξιοπιστίας (safety, reliability) μηνυμάτων σε  δίκτυα πραγματικού χρόνου που χρησιμοποιούνται σε συστήματα επικοινωνιών, μεταφορών, διαστημικής μηχανικής, και συστημάτων υγείας με αντίστοιχες επιδείξεις, π.χ. CAN bus σε έξυπνα οχήματα.

Ενότητα 3 – Linux Kernel Programming, Drivers & Modules

Η Ενότητα 3 περιλαμβάνει 4 μαθήματα (x08-x11). Τέλος, στα τέσσερα τελευταία μαθήματα (x08 έως x11) εξετάζεται η παραμετροποίηση (configuration, device trees και μετάφραση του Linux kernel (cross compiling toolchains, compiler generator). Επίσης μελετούνται θέματα αποσφαλμάτωσης και τεχνικές προγραμματισμού σε επίπεδο kernel, π.χ. signals, probes (non-intrusive monitoring), sysfs/debugs, procfs, interrupt routines, waiting queues/sleeping, syncing, queuing, scheduling, timers, kernel memory allocation, kthreads, και tasklets. Επίσης λεπτομερώς εξετάζεται ο  σχεδιασμός και η υλοποίηση character devices και network devices (netdev, netfilter hooks, network firewalls). Δίνεται έμφαση σε θέματα σχεδιασμού και υλοποίησης οδηγών πραγματικών συσκευών (μέσω ioremap, register region) καθώς και η επικοινωνία με interfaces υψηλού επιπέδου μέσω IOCTL ή GPIO για character devices. Τέλος γίνεται σύντομη αναφορά στην οργάνωση block drivers (DMA-based), ιδιαίτερα RAID, PCIe και USB drivers, στην ανάπτυξη οδηγών περιφερειακών καναλιών (UART-Serial, I2C, SPI, SWI), καθώς και σε σημαντικά θέματα που αφορούν σε Linux kernel security.

Εργαστηριακές Ασκήσεις

Το Εργαστήριο καλύπτει παρόμοια ύλη με τη Θεωρία αλλά ασχολείται με προγραμματιστικά θέματα. Τα παραδείγματα ασκήσεων που σας δίνονται καθώς και οι προγραμματιστικές εργασίες που σας ζητούνται υλοποιούνται σε  κώδικα C/C++ στο Linux. Συχνά χρησιμοποιούν χρήσιμα εργαλεία, βιβλιοθήκες ή διάφορα πακέτα λογισμικού ανοικτού κώδικα. Οι εργασίες σας δίνουν τη δυνατότητα πρακτικής εφαρμογής εννοιών της θεωρίας και σας βοηθούν να καταλάβεται σε βάθος την Θεωρία. Για το σκοπό αυτό θα χρειαστεί να εγκαταστήσετε Linux (π.χ. μέσω Virtualbox, όπως στα Λειτουργικά Συστήματα του 8ου Εξαμήνου).  Στο πλαίσιο αυτό οι φοιτητές έχουν τη δυνατότητα πρακτικής εφαρμογής των εννοιών της θεωρίας είτε στον υπολογιστή τους, είτε χρησιμοποιώντας ενσωματωμένες πλατφόρμες (Arduino, STM32, AVNET Zedboard, Hardkernel Odroid XU3/4, 96boards Hikey & Dragonboard 410c, Renesas Synergy S7G2) και υβριδικά συστήματα με mezzanine boards (π.χ. DSP audio, sensor boards) διασυνδεμένα με διάφορες τεχνολογίες επικοινωνιών, π.χ. Ethernet, wireless, peripheral buses, και real-time bus (π.χ. CAN bus).

Βαθμολογία, Εργασίες και Εξετάσεις

Α) Οι φοιτητές ΗΜΜΥ που δεν έχουν ξαναπαρακολουθήσει το μάθημα υποχρεούνται σε φυσική παρουσία στα εξής εργαστηριακά μαθήματα (οι ημερομηνίες θα προσαρμοστούν αν χρειαστεί):

Ενότητα 1 (x01-x05) – Software Development, POSIX/IPC, Performance Tuning
02/10 Linux software development & tools

09/10 Processes, Pipes, Signals, Sync (μάλλον θα γίνει μαζί με το επόμενο στις 23/10, λόγω διπλών εκλογών)

16/10 Threads, Synchronization

23/10 Network Programming (μάλλον θα γίνει μαζί με το επόμενο στις 30/10, λόγω διπλών εκλογών)

30/10 Performance Tuning & Εργασία 1 (ως 20%, προθεσμία: 13/11 στις 16:00)

 

Ενότητα 2 (x06-x07) – Small Systems & Real Time Systems
06/11 System Software for Small Systems

13/11 Real-Time Systems, RTOS & Εργασία 2 (ως 10%, προθεσμία: 11/12 στις 16:00)

 

Ενότητα 3 (x08-x11) - Linux Kernel Programming, Drivers & Modules
20/11 Linux Kernel Programming

27/11 Linux Kernel Programming

04/12 Linux Kernel Programming

11/12 Linux Kernel Programming & Εργασία Ε3 (ως 20%, προθεσμία: 19/01 15:00)

18/12 Επανάληψη Θ+Ε (ξεκινά την ώρα της Θεωρίας)

08/01 Ερωτήσεις φοιτητών στο Εργ. ΤΝΜΣ-Α (2ος όροφος πάνω από την αίθουσα ΠΚ3, δεύτερη πόρτα αριστερά)

15/01 Τελική Προφορική Εξέταση Θεωρίας/Εργαστηρίου (σε δύο Ομάδες) στο Εργ. ΤΝΜΣ-Α . Η Εξέταση θα ακολουθήσεις τις παρουσιάσεις & demo της τελευταίας εργασίας που έχει οριστεί για τις 15 Ιανουαρίου στις 16:00.

 

Παρατηρήσεις:

1) Για την τελική προφορική εξέταση η δήλωση της συμμετοχή θα γίνει αυτόματα και θα ανακοινωθεί παρακάτω

2) Οι Προγραμματιστικές Εργασίες (1, 2 και 3) μετρούν συνολικά ως 50% του βαθμού, μόνο αν η βαθμολογία της τελικής εξέτασης είναι τουλάχιστον 4.

3) Για σύντομες ερωτήσεις/απορίες (π.χ. τεχνικά θέματα) μπορείτε να με συναντήσετε μετά το μάθημα, ή Παρασκευή 18:00-20:00, ή στέλνετε μήνυμα στο skype name: Miltos.Grammatikakis 

4) Φοιτητές του ΗΜΜΥ που έχουν ξαναπαρακολουθήσει το μάθημα παλιότερα ΔΕΝ υποχρεούνται σε φυσική παρουσία. Οι φοιτητές αυτοί είναι υποχρεωμένοι να μελετήσουν ξανά τη θεωρία και τις προγραμματιστικές εργασίες. O βαθμός στο μάθημα θα προέλθει εξ’ ολοκλήρου (100%) από τελική προφορική εξέταση που θα γίνει τις προτεινόμενες ημερομηνίες και πρέπει να δηλώσετε έγκαιρα συμμετοχή. Η εξέταση αφορά Θεωρία και Εργαστήριο και απαιτείται συνολικός μέσος όρος 5 για να περάσετε το μάθημα. Για τη δήλωση συμμετοχής δείτε την επόμενη παρατήρηση (6).

5) Για τα διαδικαστικά της τελικής εξέτασης δείτε παρακάτω.

Από το ξεκίνημα της προφορικής εξέτασης ως το τέλος της υπάρχει συνεχής ροή ερωτήσεων, ενώ ο φοιτητής που ερωτάται σε κάθε ερώτηση οφείλει να απαντά άμεσα με προφορικό λόγο, χωρίς καμιά καθυστέρηση. Καθυστερημένες απαντήσεις δεν βαθμολογούνται. Οι ερωτήσεις αφορούν σε ορισμούς, ερωτήσεις κατανόησης ή κρίσης, και συγκεκριμένα παραδείγματα και ασκήσεις όπου θα πρέπει να παρουσιαστεί επακριβώς η μεθοδολογία και η περιγραφή της διαδικασίας ανάλυσης/σύνθεσης αλγοριθμικών λύσεων ή υλοποιήσεων. Δεν θα ζητηθούν πολλές λεπτομέρειες σε επίπεδο κώδικα, αν όμως χρειαστεί κάποια πρόσθετη λεπτομερής πληροφορία σε επίπεδο κώδικα, ψευδοκώδικα,manual κλπ, αυτή θα είναι διαθέσιμη από το διδάσκοντα.  Οι απαντήσεις σας θα καταγράφονται σε σχετικό έντυπο από τον διδάσκοντα ώστε να ανακοινωθεί η βαθμολογία σας αμέσως μετά, εκτός απροόπτου. Σε περίπτωση διακοπής της εξέτασης λόγω τεχνικών λόγων ή άλλου θέματος, η εξέταση επαναλαμβάνεται (ή συνεχίζεται από το σημείο που διακόπηκε) αμέσως μετά ή άλλη ημέρα μετά από συνεννόηση με τελείως διαφορετικά θέματα.

6) Παρακάτω θα ανακοινωθούν οι ημερομηνίες και ώρες της τελικής προφορικής εξέτασης για κάθε φοιτητή που έχει δηλώσει. Αν χρειάζεται αλλαγή ή προσθήκη στείλτε email ή επικοινωνήστε στο skype με το μάθημα, όνομα και ΑΜ.

15 Ιανουαρίου 16:00-19:00 (3 κενές θέσεις)

AΒραμ Μιχάϊ-Βλαντ ΤΗ20042

Κάβαλλος Βασίλης ΤΗ20084

15 Ιανουαρίου 19:00-22:00 (5 κενές θέσεις)

...

 

Καλό Εξάμηνο.

Ο Διδάσκων