Λειτουργικά Συστήματα ΙΙ

Κωδικός Μαθήματος: Ν2-4010
Εβδομαδιαίες ώρες διδασκαλίας: 4 (2Θ + 2Ε)
Πιστωτικές μονάδες: 5
Τυπικό εξάμηνο διδασκαλίας: 4ο
Κατηγορία μαθήματος: Μάθημα Ειδικής Υποδομής
Προαπαιτούμενα: Προγραμματισμός Υπολογιστών

Μαθησιακά αποτελέσματα

Το μάθημα αποσκοπεί στην παρουσίαση των βασικών στοιχείων και μηχανισμών των Λειτουργικών Συστημάτων Πολυεπεξεργαστών, Πολυυπολογιστών, Δικτύου και Πραγματικού Χρόνου, καθώς επίσης και στην κάλυψη προχωρημένων εννοιών και μηχανισμών επικοινωνίας και συγχρονισμού διεργασιών σε ένα υπολογιστικό σύστηνα, όπως π.χ. η θεωρία της πρόληψης και αποφυγής αδιεξόδων, τα εργαλεία και μηχανισμοί δια-διεργασιακής επικοινωνίας, η υποστήριξη και διαχείριση νημάτων. Ειδικότερο στόχο από πρακτικής άποψης αποτελεί η εξοικείωση των σπουδαστών με πρακτικά ζητήματα και εφαρμογές ταυτόχρονου προγραμματισμού, επικοινωνίας διεργασιών και προγραμματισμού νημάτων (threads).

Με την επιτυχή ολοκλήρωση του μαθήματος, ο φοιτητής θα μπορεί:

  • Να αναγνωρίσει τα βασικά χαρακτηριστικά των λειτουργικών συστημάτων σε περιβάλλοντα πολλαπλών επεξεργαστών κοινής/κατανεμημένης μνήμης (πολυεπεξεργαστικά και πολύ-υπολογιστικά συστήματα) και δικτύου, καθώς επίσης και τις κυριότερες διαφορές τους έναντι των συμβατικών λειτουργικών συστημάτων.
  • Να εξηγήσει πως εξειδικεύονται στα συστήματα πολλαπλών επεξεργαστών οι βασικές έννοιες και μηχανισμοί ενός λειτουργικού συστήματος (χρονοδρομολόγηση ΚΜΕ, διαχείριση μνήμης, συγχρονισμός διεργασιών κ.α.).
  • Να περιγράψει τα χαρακτηριστικά και τις διαφορές που εμφανίζουν τα λειτουργικά συστήματα πραγματικού χρόνου σε σχέση με τα παραδοσιακά λειτουργικά συστήματα αλληλεπίδρασης και ομαδικής επεξεργασίας.
  • Να εξηγήσει τις διαφορές μεταξύ νημάτων και διεργασιών και να αντιληφθεί τα πλεονεκτήματα του μοντέλου των νημάτων για προγραμματισμό σε περιβάλλοντα ενός ή περισσοτέρων επεξεργαστών/πυρήνων.
  • Να εμβαθύνει στην αναγκαιότητα προχωρημένων μηχανισμών συγχρονισμού και επικοινωνίας διεργασιών τόσο στη θεωρία (π.χ. αποφυγή αδιεξόδων) όσο και στην πράξη (π.χ. επικοινωνία μέσω υποδοχών/sockets).
  • Να χρησιμοποιήσει στην πράξη βασικούς μηχανισμούς και εργαλεία προγραμματισμού συστήματος, ταυτόχρονων διεργασιών και νημάτων (threads), σε ένα λειτουργικό σύστημα τύπου unix/linux.

Περιεχόμενο μαθήματος

ΘΕΩΡΙΑ:

  • Λειτουργικά Συστήματα Πολυεπεξεργαστών και Πολυυπολογιστών (υλικό καιλογισμικόπολύ-επεξεργαστικών και πολυυπολογιστικών συστημάτων, θέματα σχεδίασης λειτουργικών συστημάτων για περιβάλλοντα πολλαπλών επεξεργαστών, SMP αρχιτεκτονικές και διαχείριση, μέθοδοι επικοινωνίας και συγχρονισμού διεργασιών, αλγόριθμοι χρονοδρομολόγησης διεργασιών, σχήματα μνήμης και μέθοδοι διαχείρισης μνήμης, κατανομή φόρτου σε πολλαπλούς επεξεργαστές κ.α.).
  • Προχωρημένες Έννοιες και Μηχανισμοί επικοινωνίας-συγχρονισμού διεργασιών (θεωρία πρόληψης και αποφυγής αδιεξόδων, διαδιεργασιακή επικοινωνία μέσω σωληνώσεων και υποδοχών κ.α.).
  • Διαχείριση Νημάτων (threads) σε συμβατικά και πολυεπεξεργαστικά περιβάλλοντα (υποστήριξη-διαχείριση σε επίπεδο χρήστη και σε επίπεδο πυρήνα, ειδικοί αλγόριθμοι χρονοπρογραμματισμού, μηχανισμοί συγχρονισμού και επικοινωνίας, βιβλιοθήκες κ.α.)
  • Λειτουργικά Συστήματα Πραγματικού Χρόνου (βασικές έννοιες και σχεδιαστικά ζητήματα, ειδικοί αλγόριθμοι χρονοδρομολόγησης ΚΜΕ, οργάνωσης-διαχείρισης μνήμης και χρονοπρογραμματισμού δίσκων, εφαρμογή σε ενσωματωμένα συστήματα και συστήματα πολυμέσων κ.α.).
  • Λειτουργικά Συστήματα Δικτύου (ορισμός, κατηγοριοποίηση, θέματα σχεδίασης, υπηρεσίες).
  • Μελέτες περίπτωσης (η υποστήριξη των παραπάνω εννοιών και μηχανισμών σε σύγχρονα λειτουργικά συστήματα τύπου Windows και Unix/linux).
  • Θέματα Σχεδίασης και Ασφάλειας Σύγχρονων Λειτουργικών Συστημάτων.

ΕΡΓΑΣΤΗΡΙΟ:

Unix/Linux: Προγραμματισμός συστήματος και ταυτόχρονων διεργασιών (διεργασίες παιδιά, χρήση fork, wait, exec, signals κλπ). Ειδικοί μηχανισμοί υποστήριξης επικοινωνίας και συγχρονισμού διεργασιών (sharedmemorysegments, semaphores, messagequeues κ.α.). Προγραμματισμός και διαχείριση νημάτων/threads με χρήση της βιβλιοθήκης των Posix threads. Διαδιεργασιακή επικοινωνία και προγραμματισμός με χρήση σωληνώσεων (pipes) και υποδοχών (sockets).

Βιβλιογραφία
  1. Tanenbaum Α., Σύγχρονα Λειτουργικά Συστήματα, 3η έκδοση, Εκδόσεις Κλειδάριθμος ΕΠΕ, 2009.
  2. Silberschatz A., Galvin P., Gagne G., Λειτουργικά Συστήματα, 2η έκδοση, Εκδόσεις Στέλλα Παρίκου & Σία ΟΕ, 2009.
  3. Stallings W., Λειτουργικά Συστήματα, 6η έκδοση, Εκδόσεις Α. Τζιόλα & Υιοί ΑΕ, 2009.
  4. Κάβουρας I., Λειτουργικά Συστήματα, 5η έκδοση, Εκδόσεις Κλειδάριθμος, 2000.
  5. Παπακωνσταντίνου Γ., Μπιλάλης Ν., Τσανάκας Π., Λειτουργικά Συστήματα, Εκδόσεις Συμμετρία, 1997.
  6. Kernighan B., Pike R., The Unix Programming Environment, Prentice Hall, 1985.
  7. Glass G., Ables K., Unix for Programmers and Users, Prentice Hall, 1998.
  8. Stevens W.R., Unix Network Programming, Vol. 2: Interprocess Communications, 2nd ed., Prentice Hall, 2000.
  9. Butenhof D.R., Programming with POSIX Threads, Addison-Wesley, 2000.
  10. Robbins K., Robbins S., Unix Systems Programming: Communication, Concurrency and Threads, 2nd ed., Prentice Hall, 2003.

Internationalisation I18n