Λειτουργικά Συστήματα (8.009)
Περίγραμμα
Μαθησιακοί στόχοι
Σκοπός του μαθήματος είναι η μελέτη του σχεδιασμού και της υλοποίησης των σύγχρονων λειτουργικών συστημάτων. Συγκεκριμένα, οι φοιτητές θα διδαχθούν τις έννοιες της διεργασίας, της επικοινωνίας μεταξύ διεργασιών, τον συγχρονισμό διεργασιών, αλγόριθμους χρονοπρογραμματισμού καθώς και μεθόδους διαμοιρασμού κοινών πόρων με παράλληλη αποφυγή data races και αδιεξόδων. Κατόπιν, θα γνωρίσουν τους διάφορους τύπους κύριας μνήμης, βασικούς αλγόριθμους πρόσβασης στα δεδομένα και μεθόδους διαχείρισης της μνήμης με έμφαση να δίνεται στην έννοια της εικονικής μνήμης. Αργότερα, θα παρουσιαστούν θέματα που αφορούν στη διαχείριση αρχείων και καταλόγων με έμφαση στις μεθόδους υλοποίησης ενός συστήματος αρχείων. Τέλος, θα εξεταστούν ζητήματα σχετικά με την διαχείριση συσκευών Εισόδου/Εξόδου. Με την επιτυχή ολοκλήρωση του μαθήματος οι φοιτητές θα είναι σε θέση:
|
Περιεχόμενο μαθήματος
Ενότητες Θεωρητικών Διαλέξεων
Εισαγωγή
- Τι είναι το λειτουργικό σύστημα
- Βασικοί τύποι λειτουργικών συστημάτων
- Βασικές έννοιες λειτουργικών συστημάτων
- Δομή των λειτουργικών συστημάτων
Διεργασίες
- Το μοντέλο των διεργασιών (processes, multi-programming)
- Διαδιεργασιακή επικοινωνία (busy waiting, sleep/wakeup, semaphores)
- Χρονοπρογραμματισμός (scheduling)
- Νήματα (threads)
Αδιέξοδα
- Υπολογιστικοί πόροι (resources)
- Ανταγωνισμός στην χρήση κοινών πόρων και αδιέξοδα (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), και γ) συστήματα αρχείων εξετάζοντας την υλοποίηση ενός σχετικά απλού 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.
- W.R. Stevens and S.A. Rago, "Advanced Programming in the UNIX Environment", 3rd edition, Addison-Wesley (2013), ISBN 978-0321637734.
- A. 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 και επεξηγήσεις
Συναφή Επιστημονικά Περιοδικά & Συνέδρια
- 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)
- Linux Foundation conferences, especially Open Source Forum