Προχωρημένος Προγραμματισμός
Πέτρος Λάμψας
Καθηγητής
Μαθησιακά Αποτελέσματα
Με την επιτυχή ολοκλήρωση του μαθήματος ο/η φοιτητής/τρια θα είναι σε θέση να:
- Περιγράφει το μηχανισμό που παρέχουν τα λειτουργικά συστήματα στους προγραμματιστές για την αξιοποίηση των υπηρεσιών του πυρήνα (system calls).
- Αναγνωρίζει τις διαφορές διεργασιών (process) και νημάτων (thread) ως μηχανισμών που παρέχουν τα λειτουργικά συστήματα για την εκτέλεση προγραμμάτων χρηστών.
- Απαριθμεί μηχανισμούς επικοινωνίας μεταξύ διεργασιών που εκτελούνται στο ίδιο σύστημα (Interprocess Communication – IPC).
- Ορίζει το πρόβλημα του ταυτοχρονισμού (concurrency).
- Αναφέρει κλασικά προβλήματα συγχρονισμού και τον τρόπο επίλυσής τους με κάποιον από τους μηχανισμούς που επιτυγχάνουν συγχρονισμό.
- Εξηγεί τους πιο διαδεδομένους μηχανισμούς ελέγχου του ταυτοχρονισμού: mutexes, σημαφόροι (semaphores), ελεγκτές (monitors), μεταβλητές συνθήκης (condition variables).
- Συνθέτει τις γνώσεις του/της για τη δημιουργία νημάτων και τον ταυτοχρονισμό στην ανάπτυξη πολυ-νηματικών εφαρμογών με απαιτήσεις απόδοσης και εξυπηρέτησης.
Ενδεικτικό Περιεχόμενο Μαθήματος
- Διεργασίες/Νήματα.
- Χρονοπρογραμματισμός διεργασιών/νημάτων στα λειτουργικά συστήματα.
- Επικοινωνία διεργασιών/νημάτων με/χωρίς κοινή μνήμη.
- Εισαγωγή στον ταυτοχρονισμό, το πρόβλημα του κρίσιμου τμήματος, αλγόριθμοι για το πρόβλημα του κρίσιμου τμήματος, επαλήθευση προγραμμάτων ταυτοχρονισμού.
- Τεχνικές ταυτοχρονισμού: αμοιβαίος αποκλεισμός, ενεργός αναμονή, λουκέτα, σημαφόροι, ελεγκτές.
- Παρουσίαση κλασικών προβλημάτων συγχρονισμού και τεχνικών επίλυσής τους.