Λειτουργικά Συστήματα (8.009)
Γραμματικάκης Μιλτιάδης
Το λειτουργικό σύστημα είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων σε ένα υπολογιστικό σύστημα. Για παράδειγμα τα smartphones, tablets, υπολογιστές, laptops, single board computers (π.χ. Raspberry) κλπ διαθέτουν συνήθως ένα λειτουργικό σύστημα που βοηθάει στο να τις διαχειριστούμε με απλό τρόπο.
Το μάθημα αποσκοπεί στην εξοικείωση του φοιτητή με θεμελιώδεις έννοιες, παρέχοντας ορισμούς και εξετάζοντας παραδείγματα. Επίσης πειραματικά εξετάζονται κώδικα/βιβλιοθήκες που αφορούν κυρίως θέματα διαχείρισης, συγχρονισμού και επικοινωνίας διεργασιών και νημάτων σε επίπεδο χρήστη (POSIX).
Ενότητες Θεωρητικών Διαλέξεων
Εισαγωγή
- Τι είναι το λειτουργικό σύστημα
- Βασικοί τύποι λειτουργικών συστημάτων
- Βασικές έννοιες λειτουργικών συστημάτων
- Δομή των λειτουργικών συστημάτων
Διεργασίες
- Το μοντέλο των διεργασιών (processes, multi-programming)
- Διαδιεργασιακή επικοινωνία (busy waiting, sleep/wakeup, semaphores)
- Χρονοπρογραμματισμός (scheduling)
- Νήματα (threads)
Αδιέξοδα
- Υπολογιστικοί πόροι (resources)
- Ανταγωνισμός στην χρήση κοινών πόρων και αδιέξοδα (synchronization, deadlocks)
- Μοντελοποίηση αδιεξόδων (deadlock modelling)
- Αλγόριθμοι ανίχνευσης, ανάκαμψης και αποφυγής αδιεξόδων (deadlock detection/avoidance/prevention algorithms)
Διαχείριση Μνήμης
- Βασική διαχείριση μνήμης (memory allocation, dynamic address relocation)
- Eναλλαγή (swapping)
- Εικονική μνήμη (virtual memory, paging)
- Αλγόριθμοι αντικατάστασης σελίδων (page replacement algorithms)
Διαχείριση Αρχείων
- Αρχεία και κατάλογοι (files & directories)
- Υλοποίηση συστήματος αρχείων και καταλόγων (file system implementation)
- Διαχείριση και αξιοπιστία των συστημάτων αρχείων (file system management and optimisation/consistency/performance)
- Παραδείγματα συστημάτων αρχείων
Διαχείριση συσκευών Εισόδου/Εξόδου
- Αρχές του υλικού Εισόδου/Εξόδου (I/O hardware)
- Αρχές του λογισμικού Εισόδου/Εξόδου (I/O software, device drivers)
- Δίσκοι και ρολόγια (Disks & Clocks)
- Διασυνδέσεις με τον χρήστη
Εργαστηριακές Ασκήσεις
Στο εργαστηριακό μέρος του μαθήματος οι φοιτητές έχουν τη δυνατότητα πρακτικής εφαρμογής εννοιών της θεωρίας. Με την επιτυχή ολοκλήρωση του εργαστηρίου ο φοιτητής γνωρίζει την δομή και οργάνωση ενός UNIX-like λειτουργικού συστήματος. Μαθαίνει να αξιοποιεί και να συνδυάζει τις βασικές εντολές ώστε να είναι σε θέση να γράφει scripts στο κέλυφος.
Επίσης κερδίζει πρακτική εμπειρία σε Linux programming με τη χρήση system calls που αναφέρονται στη διαχείριση Linux processes και POSIX threads. Αντιμετωπίζει θέματα συν-διαχείρισης κοινής μνήμης και χρησιμοποιεί κατάλληλα τους πιο σημαντικούς τρόπους συγχρονισμού για inter-process και inter-thread communication IPC (atomic operations, barriers, locks, pipes, signals, semaphores, condition variables) μέσα από την επίλυση πρακτικών υπολογιστικών προβλημάτων
Τέλος μαθαίνει να χρησιμοποιεί μηχανισμούς processor affinity και εισάγεται σε διάφορες πολιτικές χρονο-δρομολόγησης (scheduling policies). Επίσης ο φοιτητής επεκτείνει τις γνώσεις του με πραγματικά παραδείγματα σε α) θέματα μετάφρασης από εικονικές σε φυσικές διευθύνσεις, β) συστήματα σελιδοποίησης (Linux page map), και γ) συστήματα αρχείων εξετάζοντας την υλοποίηση του VFS (virtual file system) και ενός σχετικά απλού file system (π.χ. simplefs). Τέλος, παρουσιάζεται στο φοιτητή η διαδικασία ανάπτυξης προγραμμάτων οδηγών μέσα από πραγματικά παραδείγματα, π.χ. οθόνης ΤΤΥ (bare metal/Linux/RTOS drivers).
Μέθοδοι αξιολόγησης:
- Προφορική τελική εξέταση σε θεωρητικά και εργαστηριακά προβλήματα (50%)
- Προγραμματιστικές εργασίες (50%)
Τα κριτήρια αξιολόγησης ανακοινώνονται στους φοιτητές κατά την έναρξη του εξαμήνου και βρίσκονται αναρτημένα στην ιστοσελίδα του μαθήματος στο eClass.
Προτεινόμενη Βιβλιογραφία
- Andrew S. Tanenbaum, and H. Bos, “Σύγχρονα Λειτουργικά Συστήματα (Modern Operating Systems)”, 3rd Edition, Prentice Hall, 2018.
- R. Stevens and S.A. Rago, "Advanced Programming in the UNIX Environment", 3rd edition, Addison-Wesley (2013), ISBN 978-0321637734.
- Silberschatz, P. B. Galvin, and G. Gagne, “Operating System Concepts”, 9th Edition, Wiley (2013), ISBN 978-1118093757, http://os-book.com
Άλλες Σημαντικές Πηγές
- Υποστήριξη Εργαστηρίου μέσω Eclass - http://eclass.hmu.gr με σημειώσεις, παραδείγματα με κώδικα open source και επεξηγήσεις (reviews)
Διάφορα Συναφή Επιστημονικά Περιοδικά & Συνέδρια
- ACM Symposium on Operating Systems Principles (SOSP)
- Operating Systems Design and Implementation (OSDI)
- Workshop on Hot Topics in Operating Systems (HotOS)
- Architectural Support for Programming Languages and Operating Systems (ASPLOS)
- Linaro, ARM, Linux Foundation conferences, especially Open Source Forum
Το λειτουργικό σύστημα είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων σε ένα υπολογιστικό σύστημα. Για παράδειγμα τα smartphones, tablets, υπολογιστές, laptops, single board computers (π.χ. Raspberry) κλπ διαθέτουν συνήθως ένα λειτουργικό σύστημα που βοηθάει στο να τις διαχειριστούμε με απλό τρόπο.
Το μάθημα αποσκοπεί στην εξοικείωση του φοιτητή με θεμελιώδεις έννοιες, παρέχοντας ορισμούς και εξετάζοντας παραδείγματα. Επίσης πειραματικά εξετάζονται κώδικα/βιβλιοθήκες που αφορούν κυρίως θέματα διαχείρισης, συγχρονισμού και επικοινωνίας διεργασιών και νημάτων σε επίπεδο χρήστη (POSIX).
Ενότητες Θεωρητικών Διαλέξεων
Εισαγωγή
- Τι είναι το λειτουργικό σύστημα
- Βασικοί τύποι λειτουργικών συστημάτων
- Βασικές έννοιες λειτουργικών συστημάτων
- Δομή των λειτουργικών συστημάτων
Διεργασίες
- Το μοντέλο των διεργασιών (processes, multi-programming)
- Διαδιεργασιακή επικοινωνία (busy waiting, sleep/wakeup, semaphores)
- Χρονοπρογραμματισμός (sc
Το λειτουργικό σύστημα είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων σε ένα υπολογιστικό σύστημα. Για παράδειγμα τα smartphones, tablets, υπολογιστές, laptops, single board computers (π.χ. Raspberry) κλπ διαθέτουν συνήθως ένα λειτουργικό σύστημα που βοηθάει στο να τις διαχειριστούμε με απλό τρόπο.
Το μάθημα αποσκοπεί στην εξοικείωση του φοιτητή με θεμελιώδεις έννοιες, παρέχοντας ορισμούς και εξετάζοντας παραδείγματα. Επίσης πειραματικά εξετάζονται κώδικα/βιβλιοθήκες που αφορούν κυρίως θέματα διαχείρισης, συγχρονισμού και επικοινωνίας διεργασιών και νημάτων σε επίπεδο χρήστη (POSIX).
Ενότητες Θεωρητικών Διαλέξεων
Εισαγωγή
- Τι είναι το λειτουργικό σύστημα
- Βασικοί τύποι λειτουργικών συστημάτων
- Βασικές έννοιες λειτουργικών συστημάτων
- Δομή των λειτουργικών συστημάτων
Διεργασίες
- Το μοντέλο των διεργασιών (processes, multi-programming)
- Διαδιεργασιακή επικοινωνία (busy waiting, sleep/wakeup, semaphores)
- Χρονοπρογραμματισμός (sc