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

Σχετικά έγγραφα
2.4 Κλασσικά Προβλήματα IPC

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Λειτουργικά Συστήματα (Λ/Σ)

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

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

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στα Λειτουργικά

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

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

Εισαγωγή στους Αλγορίθμους

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Συστήματα Αναμονής. Ενότητα 6: Θεωρία Ουρών. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στα Λειτουργικά

Εισαγωγή στους Αλγορίθμους

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Διοικητική Λογιστική

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΑΝΑΛΥΣΗ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Δομές Δεδομένων Ενότητα 1

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Συστήματα Αναμονής. Ενότητα 4: Αλυσίδες Markov. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Συστήματα Αναμονής. Ενότητα 9: Ανέλιξη Γέννησης - Θανάτου. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Σκελετός Παρουσίασης

Ειδικά Θέματα Δικτύων Ι

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 1: Εκτιμητές και Ιδιότητες. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οργάνωση και Διοίκηση Πωλήσεων

Διοίκηση Έργου. Ενότητα 4: Μέθοδοι Χρονικού Προγραμματισμού Έργων. Σαμαρά Ελπίδα Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Συστήματα Αναμονής. Ενότητα 7: Ουρά Μ/Μ/1. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Πληροφορική

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

Εισαγωγή στη Διοίκηση Επιχειρήσεων Ενότητα 3: Λήψη Αποφάσεων Επίκ. Καθηγητής Θεμιστοκλής Λαζαρίδης Τμήμα Διοίκηση Επιχειρήσεων (Γρεβενά)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Συστήματα Αναμονής. Ενότητα 1: Εισαγωγή. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Λιβανός Γιώργος Εξάμηνο 2017Β

Εισαγωγικές έννοιες θεωρίας Συστημάτων Αυτομάτου Ελέγχου

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

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οργάνωση και Διοίκηση Πωλήσεων Ενότητα 1: Ο ΡΟΛΟΣ ΤΩΝ ΠΩΛΗΣΕΩΝ ΣΤΟ ΠΛΑΙΣΙΟ ΤΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΜΑΡΚΕΤΙΝΓΚ

Εισαγωγή στους Αλγορίθμους

Ιστορία της μετάφρασης

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Εισαγωγικές έννοιες θεωρίας Συστημάτων Αυτομάτου Ελέγχου Ενότητα 2 η : ΠΕΡΙΓΡΑΦΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΜΑΘΗΜΑΤΙΚΑ ΜΟΝΤΕΛΑ

Συστήματα Αναμονής. Ενότητα 5: Ανέλιξη Poisson. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Οργάνωση και Διοίκηση Πωλήσεων Ενότητα 8: ΟΡΓΑΝΩΣΗ ΤΗΣ ΔΥΝΑΜΗΣ ΠΩΛΗΤΩΝ

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Λογιστική Κόστους. Ενότητα 4: ΣΥΜΠΕΡΙΦΟΡΑ - ΦΥΣΗ ΚΟΣΤΟΥΣ. Μαυρίδης Δημήτριος Τμήμα Λογιστικής και Χρηματοοικονομικής

Οικονομετρία Ι. Ενότητα 3: Θεώρημα των Gauss Markov. Δρ. Χαϊδώ Δριτσάκη Τμήμα Λογιστικής & Χρηματοοικονομικής

Μηχανολογικό Σχέδιο Ι

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Βέλτιστος Έλεγχος Συστημάτων

Συστήματα Αναμονής. Ενότητα 3: Στοχαστικές Ανελίξεις. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Διδακτική της Πληροφορικής

Στατιστική Ι. Ενότητα 3: Στατιστική Ι (3/4) Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Ενότητα 6 (Κεφάλαιο 9) Χρονοδρομολόγηση

Τεχνολογία Πολυμέσων. Ενότητα 8: Pool Table. Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 2: Αιωρούμενα σωματίδια & Απόδοση συλλογής Αν. Καθ. Δρ Μαρία Α. Γούλα Τμήμα Μηχανικών

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στην Πληροφορική. Αντώνης Σταµατάκης

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Βάσεις Περιβαλλοντικών Δεδομένων

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 8

Διοικητική Λογιστική

Εισαγωγή στην Πληροφορική

Transcript:

Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 5: Διεργασίες ΙΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Νήματα (Threads). Χρήση των νημάτων. Το κλασικό μοντέλο των νημάτων. Υλοποίηση νημάτων στο χώρο του χρήστη (user space). Συνθήκη Ανταγωνισμού. Αμοιβαίος Αποκλεισμός. Αναμονή με απασχόληση και το πρόβλημα της αντιστροφής προτεραιοτήτων. Φράγματα (Barriers). 4

Περιεχόμενα ενότητας Νήματα (Threads). Χρήση των νημάτων. Το κλασικό μοντέλο των νημάτων. Υλοποίηση νημάτων στο χώρο του χρήστη (user space). Συνθήκη Ανταγωνισμού. Αμοιβαίος Αποκλεισμός. Αναμονή με απασχόληση και το πρόβλημα της αντιστροφής προτεραιοτήτων. Φράγματα (Barriers). 5

Χρονοπρογραμματισμός Διεργασιών (1/3) Όταν περισσότερες της μίας διεργασίας είναι εκτελέσιμες, το Λ.Σ. πρέπει να αποφασίσει ποια θα είναι η επόμενη που θα εκτελεστεί. Το τμήμα του Λ.Σ. που έχει την ευθύνη της επιλογής ονομάζεται χρονοπρογραμματιστής (scheduler). Ο αλγόριθμος που χρησιμοποιεί ονομάζεται αλγόριθμος χρονοπρογραμματισμού (scheduling algorithm). Ποιός χρονοπρογραμματίζει τον χρονοπρογραμματιστή? Ο scheduler καλείται: Από την ρουτίνα εξυπηρέτησης διακοπής ρολογιού (clock interrupt service routine). Από την ρουτίνα block() του kernel (που καλείται όταν το τρέχον process θα μπλοκάρει). 6

Χρονοπρογραμματισμός Διεργασιών (2/3) Τα διαστήματα χρήσης της CPU εναλλάσσονται με περιόδους αναμονής για Ε/Ε. (a) Μια διεργασία εξαρτημένη από τη CPU. (b) Μία διεργασία εξαρτημένη από την Ε/Ε. Εικόνα 1: Χρονοπρογραμματισμός Διεργασιών. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 7

Χρονοπρογραμματισμός Διεργασιών (3/3) Εικόνα 2: Χρονοπρογραμματισμός Διεργασιών. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 8

Χρονοπρογραμματισμός Διεργασιών (4/4) Συνήθως οι διεργασίες εναλλάσσονται μεταξύ μικρών περιόδων στο CPU και μεγάλων περιόδων περιμένοντας κάποιο I/O. Σε κάθε "τικ" το clock interrupt service routine καλεί τον scheduler ο οποίος εξετάζει αν το τρέχον process έχει χρησιμοποιήσει τη CPU αρκετά. Αν ναί, τότε κάποιο άλλο process (αυτό που θα διαλέξει ο αλγόριθμος δρομολόγησης) θα τρέξει. Αν όμως το τρέχον process είναι I/O-bound τότε συνήθως θα μπλοκάρει συχνά, και έτσι θα χρησιμοποιεί λιγότερο το CPU απ ότι ένα CPU-bound process. Στόχος πρέπει να είναι να υπάρχει ένα καλό μείγμα από τους 2 τύπους διεργασιών προς εκτέλεση κάθε στιγμή. 9

Πότε γίνεται χρονοπρογραμματισμός 1. Όταν μία διεργασία που εκτελείται τερματίσει. 2. Όταν περισσότερες από μία διεργασίες είναι έτοιμες 3. για εκτέλεση (ready). 4. Όταν μία διεργασία που εκτελείται μπλοκάρεται από 5. Ε/Ε, σημαφόρο κτλ. 6. Όταν συμβαίνει μία διακοπή Ε/Ε (interrupt). 7. Το ρολόι του συστήματος προκαλεί περιοδικές διακοπές (π.χ. στα 50Hz). Σε κάθε διακοπή λαμβάνεται μία απόφαση χρονοπρογραμματισμού. 10

Προεκτοπιστικοί και μηπροεκτοπιστικοί αλγόριθμοι χρονοπρογραμματισμού Μη προεκτοπιστικοί αλγόριθμοι (non-preemtive) Σε κάθε διακοπή ρολογιού επιλέγουν μία διεργασία η οποία θα εκτελεστεί μέχρι να επιστρέψει εθελοντικά τη CPU ή μέχρι να μπλοκαριστεί για Ε/Ε. Δεν λαμβάνονται αποφάσεις χρονοπρογραμματισμού στις διακοπές ρολογιού. Προεκτοπιστικοί αλγόριθμοι (preemtive) Σε κάθε διακοπή ρολογιού επιλέγουν μία διεργασία η οποία θα εκτελεστεί για ένα μέγιστο χρονικό διάστημα. Εάν δεν έχει ολοκληρωθεί σε αυτό το χρονικό διάστημα, αναστέλλεται και θα συνεχίσει κάποια άλλη στιγμή. 11

Στόχοι αλγόριθμων χρονοπρογραμματισμού (1/2) Για όλα τα συστήματα Δικαιοσύνη: Να εκχωρείται σε κάθε διεργασία ένα μερίδιο της CPU. Επιβολή της πολιτικής: Να παρακολουθείται εάν εφαρμόζεται η καθορισμένη πολιτική. Ισορροπία: Να διατηρούνται ενεργά όλα τα τμήματα του συστήματος. Για τα συστήματα δέσμης Διεκπεραιωτική ικανότητα: Μεγιστοποίηση των εργασιών που ολοκληρώνονται ανά ώρα. Χρόνος διεκπεραίωσης: Ελαχιστοποίηση του χρόνου μεταξύ υποβολής και ολοκλήρωσης μιας διεργασίας. Αξιοποίηση της CPU: Συνεχής απασχόληση της CPU. 12

Στόχοι αλγόριθμων χρονοπρογραμματισμού (2/2) Για τα αλληλεπιδραστικά συστήματα Χρόνος απόκρισης: Ταχύτατη απόκριση στις αιτήσεις. Τήρηση αναλογικότητας: Ικανοποίηση των λογικών προσδοκιών των χρηστών. Για τα συστήματα πραγματικού χρόνου Τήρηση προθεσμιών: Αποφυγή απώλειας δεδομένων. Προβλεψιμότητα: Αποφυγή υποβιβασμού ποιότητας πολυμέσων. 13

(Α) Χρονοπρογραμματισμός σε συστήματα δέσμης (1/3) Χρονοπρογραμματισμός 3 επιπέδων: Στην αρχή το σύστημα αποφασίζει πόσες διεργασίες θα δέχεται για επεξεργασία. Έτσι καθορίζει τον βαθμό πολυπρογραμματισμού. Περισσότερες διεργασίες λιγότερο CPU ανά διεργασία. Εάν ο χώρος στη μνήμη δεν επαρκεί για την αποθήκευση των εκτελέσιμων διεργασιών τότε κάποιες από αυτές φυλάσσονται στο δίσκο. Οι διεργασίες κατόπιν εναλλάσσονται στο CPU ανάλογα με γεγονότα, όπως: clock interrupts, I/O interrupts, OS system calls, κλπ. 14

(Α) Χρονοπρογραμματισμός σε συστήματα δέσμης (2/3) Εικόνα 3: Χρονοπρογραμματισμός σε συστήματα δέσμης. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 15

(Α) Χρονοπρογραμματισμός σε συστήματα δέσμης (3/3) Με βάση τη σειρά άφιξης (First-come firstserved). Με βάση τη μικρότερη διάρκεια (Shortest job first). Με βάση τη μικρότερη υπολειπόμενη διάρκεια (Shortest remaining Time next). 16

(Α) Χρονοπρογραμματισμός σε συστήματα δέσμης (1/2) Με βάση τη σειρά άφιξης. Η εξυπηρέτηση με βάση τη σειρά άφιξης δημιουργεί μία μοναδική ουρά FIFO (First-In-First-Out). Οι νέες διεργασίες τοποθετούνται στο τέλος της λίστας. Εάν η εκτελούμενη εργασία μπλοκαριστεί, πηγαίνει στο τέλος της ουράς και ο αλγόριθμος συνεχίζει. Πολύ απλός αλγόριθμος. Η υλοποίηση μπορεί να γίνει με μία συνδεδεμένη λίστα. Μειονέκτημα αλγορίθμου: Όταν υπάρχουν λίγες διεργασίες εξαρτημένες από τη CPU και πολλές εξαρτημένες από E/E γίνεται σπατάλη της CPU. 17

(Α) Χρονοπρογραμματισμός σε συστήματα δέσμης (2/2) Με βάση τη σειρά άφιξης. Στη γενική περίπτωση, έστω διεργασίες Α, Β, Γ και Δ με χρόνους εκτέλεσης α, β, γ, και δ αντίστοιχα. Η Α θα ολοκληρωθεί σε α sec, η Β σε (α+β) sec, η Γ σε (α+β+γ) sec, η Δ σε (α+β+γ+δ) sec. O μέσος χρόνος εκτέλεσης είναι (α+β+γ+δ)/4 Στην (a) περίπτωση έχουμε: Χρόνο διεκπεραίωσης για τις διεργασίες Α, Β, Γ, Δ, 8, 12, 16 και 20 sec αντίστοιχα. Ο μέσος χρόνος εκτέλεσης είναι 14 sec. Εικόνα 4: Χρονοπρογραμματισμός σε συστήματα δέσμης. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 18

Χρονοπρογραμματισμός με βάση τη διάρκεια (1/2) Με βάση τη μικρότερη διάρκεια. Shortest Job First (SJF). Επιλέγεται η διεργασία με χρόνο επεξεργασίας τον μικρότερο αναμενόμενο σε σχέση με τις υπόλοιπες διεργασίες που είναι επιλέξιμες. Είναι χρήσιμος όταν ο χρόνος CPU που χρειάζεται το κάθε process είναι γνωστός από πριν (π.χ. εφαρμογές όπως ασφαλιστικές, αεροπορικές εταιρείες, κλπ.). Σε αλληλεπιδραστικά συστήματα αυτό δεν είναι εύκολο Μη-προεκτοπιστική πολιτική. Οι μικρές διεργασίες προσπερνούν τις μεγαλύτερες. Ο αλγόριθμος ελαχιστοποιεί το μέσο χρόνο απόκρισης (βέλτιστος). 19

Χρονοπρογραμματισμός με βάση Στη (b) περίπτωση έχουμε: τη διάρκεια (2/2) Χρόνο διεκπεραίωσης για τις διεργασίες Α, Β, Γ, Δ, 4, 8, 12 και 20 sec αντίστοιχα. Ο μέσος χρόνος εκτέλεσης είναι 11 sec. Εικόνα 5: Χρονοπρογραμματισμός με βάση τη διάρκεια. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 20

(Β) Χρονοπρογραμματισμός σε αλληλεπιδραστικά συστήματα Χρονοπρογραμματισμός εκ περιτροπής (Round-robin scheduling). Χρονοπρογραμματισμός με βάση την προτεραιότητα (Priority scheduling). 21

Χρονοπρογραμματισμός εκ περιτροπής (1/3) Χρονοπρογραμματισμός εκ περιτροπής (Round Robin) Παλαιότερος, δικαιότερος και ο πλέον χρησιμοποιούμενος. Προεκτοπιστικός αλγόριθμος βασισμένος στο ρολόι. Σε κάθε διεργασία εκχωρείται ένα μέγιστο χρονικό διάστημα για το οποίο μπορεί να εκτελεστεί που ονομάζεται κβάντο χρόνου (quantum). Οι διακοπές ρολογιού (clock interrupts) κρατούν το CPU ενήμερο για τον χρόνο που έχει περάσει. Εάν η διεργασία τερματίσει ή γίνει block νωρίτερα ο scheduler παρεμβαίνει για να φορτώσει μία άλλη διεργασία. 22

Χρονοπρογραμματισμός εκ περιτροπής (2/3) Η αποδοτικότητα του Round-Robin αλγόριθμου εξαρτάται από την διάρκεια του quantum Μεγάλο quantum => μεγάλος χρόνος απόκρισης για interactive χρήστες Μικρό quantum => για μεγάλα ποσοστά του χρόνου το CPU χρησιμοποιείται για context switch 23

Χρονοπρογραμματισμός εκ περιτροπής (3/3) Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 24

(Β) Σε αλληλεπιδραστικά συστήματα (Με βάση την προτεραιότητα) (1/2) Σε κάθε διεργασία αντιστοιχίζεται μία προτεραιότητα. Κάθε στιγμή εκτελείται μία διαθέσιμη (runable) διεργασία με την υψηλότερη προτεραιότητα. Η προτεραιότητα των διεργασιών μπορεί να μειώνεται μετά από κάθε διακοπή ρολογιού, ώστε να μπορέσουν να εκτελεστούν και οι υπόλοιπες. Εναλλακτικά, κάθε διεργασία μπορεί να έχει ένα μέγιστο κβάντο χρόνου. Οι προτεραιότητες μπορεί να ανατεθούν στατικά η δυναμικά. Εντολή nice στο Unix. Απλός αλγόριθμος δυναμικής προτεραιότητας: Αναθέτει σε κάθε διεργασία προτεραιότητα = 1/f όπου f είναι το ποσοστό του τελευταίου κβάντου που χρησιμοποίησε η διεργασία. 25

(Β) Σε αλληλεπιδραστικά συστήματα (Με βάση την προτεραιότητα) (2/2) Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 26

Κριτήρια αξιολόγησης αλγορίθμων χρονοδρομολόγησης (1/6) Τα ιδιαίτερα χαρακτηριστικά των αλγορίθμων χρονοδρομολόγησης μπορεί να ευνοούν κάποια ομάδα διεργασιών έναντι άλλων. Για να αξιολογηθεί λοιπόν η επίδοσή τους, χρειάζονται κάποια «αντικειμενικά» κριτήρια, τα οποία μετρούν τις επιδόσεις του υπολογιστικού συστήματος. Υπάρχουν διάφορα τέτοια κριτήρια, αλλά συνήθως δεν είναι δυνατόν ένας αλγόριθμος να είναι αποδοτικός σε όλες τις περιπτώσεις. Έτσι, ανάλογα με το σκοπό για τον οποίο θα χρησιμοποιηθεί ένα υπολογιστικό σύστημα, επιλέγονται τα κριτήρια που ταιριάζουν στο σκοπό αυτό και ο αλγόριθμος χρονοδρομολόγησης που τα ικανοποιεί. 27

Κριτήρια αξιολόγησης αλγορίθμων χρονοδρομολόγησης (2/6) Ο βαθμός χρησιμοποίησης της ΚΜΕ (CPU utilization). Πρόκειται για το ποσοστό του χρόνου που η ΚΜΕ είναι απασχολημένη. Αν το υπολογιστικό σύστημα λειτουργεί για χρονικό διάστημα Τ ολ και η ΚΜΕ έχει απασχοληθεί για χρόνο Τ απ, ο βαθμός χρησιμοποίησής της είναι Τ απ / Τ ολ. Οι καλοί βαθμοί χρησιμοποίησης είναι κοντά στο 1 (όπου η ΚΜΕ είναι συνεχώς απασχολημένη). 28

Κριτήρια αξιολόγησης αλγορίθμων χρονοδρομολόγησης(3/6) Η ρυθμαπόδοση (throughput). Είναι το πλήθος των εργασιών που ολοκληρώνονται στη μονάδα του χρόνου. Αν π.χ. μέσα σε μια ώρα ολοκληρωθούν 1800 εργασίες, τότε η ρυθμαπόδοση του συστήματος είναι 0,5 εργασίες/sec. Όσο πιο μεγάλη είναι η ρυθμαπόδοση, τόσο καλύτερη γίνεται η απόδοση του συστήματος. 29

Κριτήρια αξιολόγησης αλγορίθμων χρονοδρομολόγησης(4/6) Ο χρόνος ανακύκλωσης (turnaround time - ΤΤ). Είναι ο συνολικός χρόνος που απαιτείται για την πλήρη εκτέλεση μιας εργασίας, από τη στιγμή που αυτή υποβάλλεται στο σύστημα μέχρι τη στιγμή που ολοκληρώνεται. Αυτός ο χρόνος περιλαμβάνει την αρχική αναμονή της εργασίας μέχρι να επιλεγεί για φόρτωση στην κύρια μνήμη, το χρόνο εκτέλεσης στην ΚΜΕ, το χρόνο Ε/Ε και το χρόνο αναμονής σε διάφορες ουρές του συστήματος. 30

Κριτήρια αξιολόγησης αλγορίθμων χρονοδρομολόγησης (5/6) Ο χρόνος αναμονής (waiting time - WT). Πρόκειται για το χρόνο που πέρασε η διεργασία στη λίστα έτοιμων διεργασιών αναμένοντας την εκτέλεσή της. Ο χρόνος αναμονής είναι ένας «καλύτερος» δείκτης της καθυστέρησης που επιβάλλει το σύστημα σε μια διεργασία από το χρόνο ανακύκλωσης, γιατί ο δεύτερος περιέχει και το χρόνο που εκτελείται η διεργασία στην ΚΜΕ ή εκτελεί λειτουργίες Ε/Ε, ο οποίος είναι σταθερός για κάθε διεργασία και δεν εξαρτάται από το ΛΣ. 31

Κριτήρια αξιολόγησης αλγορίθμων χρονοδρομολόγησης(6/6) Ο χρόνος απόκρισης (response time - RT). Μας ενδιαφέρει πολλές φορές ο χρόνος που απαιτείται μέχρι το σύστημα να δώσει την πρώτη έξοδο-απόκριση για μια διεργασία, που ονομάζεται χρόνος απόκρισης. Αυτός διαφέρει από το χρόνο ανακύκλωσης κατά το χρονικό διάστημα που απαιτείται για την ολοκλήρωση της εξόδου μιας διεργασίας, και συνεπώς δεν εξαρτάται από την ταχύτητα της συσκευής εξόδου. Αν π.χ. μια διεργασία μετά το τέλος των υπολογισμών της εκτυπώνει τα αποτελέσματα, ο χρόνος απόκρισης μετριέται μέχρι τη στιγμή που αρχίζει η εκτύπωση. Ο χρόνος της εκτύπωσης δεν συνυπολογίζεται. 32

Παραδείγματα Ας υποθέσουμε λοιπόν ότι οι τέσσερις διεργασίες προς εξυπηρέτηση είναι οι δ1, δ2, δ3 και δ4. Η δ1 φθάνει στη λίστα έτοιμων διεργασιών τη χρονική στιγμή 0 και έχει διάρκεια 12 χρονικές μονάδες, η δ2 φθάνει τη στιγμή 6 και έχει διάρκεια 31, η δ3 φθάνει τη στιγμή 8 και έχει διάρκεια 3 και η δ4 φθάνει τη στιγμή 14 και έχει διάρκεια 11. Επιπλέον γίνεται η παραδοχή ότι οι διεργασίες απασχολούν μόνο την ΚΜΕ και δεν εκτελούν λειτουργίες Ε/Ε. Εικόνα 6: Παραδείγματα. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 33

Παράδειγμα FCFS Οι χρόνοι αναμονής είναι 0 για την πρώτη διεργασία, 12-6=6 για τη δεύτερη, 12+31-8=35 για την τρίτη και 12+31+3-14=32 για την τέταρτη. Ο μέσος χρόνος αναμονής είναι λοιπόν (0+6+35+32)/4 = 18,25. Παρατηρούμε επίσης ότι η διεργασία δ3, η οποία είχε διάρκεια μόνο 3, εξαναγκάστηκε να περιμένει για 35 χρονικές μονάδες για να εκτελεστεί, είχε δηλαδή τεράστια αναμονή σε σχέση με τη διάρκειά της. Οι χρόνοι απόκρισης (χρόνος αναμονής + χρόνος εκτέλεσης) είναι: 12 για τη δ1, 37 για τη δ2, 38 για τη δ3 και 43 για τη δ4. Έτσι ο μέσος χρόνος απόκρισης είναι (12+37+38+43)/4 = 32,5. Εικόνα 7: Παράδειγμα FCFS. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 34

Παράδειγμα Shortest Job First - SJF Η εκτέλεση των διεργασιών του παραδείγματος με τον αλγόριθμο εξυπηρέτησης με βάση τη διάρκεια φαίνεται στο σχήμα. Η σειρά εκτέλεσης των διεργασιών είναι δ1, δ3, δ4, δ2. Η δ1 επειδή είναι μόνη της πρώτη δεν περιμένει καθόλου, η δ2 περιμένει για (12+3+11)-6 = 20, η δ3 για 12-8 = 4 και η δ4 για (12+3)-14 = 1. Ο μέσος χρόνος αναμονής είναι λοιπόν (0+20+4+1)/4 = 6,25 πολύ μικρότερος από τον αντίστοιχο για την εξυπηρέτηση με βάση τη σειρά άφιξης, και ο μικρότερος δυνατός. Οι χρόνοι απόκρισης είναι: 12 για τη δ1, 51 για τη δ2, 7 για τη δ3 και 12 για τη δ4. Ο μέσος χρόνος απόκρισης είναι (12+51+7+12)/4 = 20,5, πολύ καλύτερος επίσης από την εξυπηρέτηση με βάση τη σειρά άφιξης. Εικόνα 8: Παράδειγμα Shortest Job First - SJF. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 35

Παράδειγμα κυκλικής επαναφοράς (Round Robin - RR) (1/2) Κβάντο 5 μονάδων Χρόνου. H δ1 περνά συνολικά 8 χρονικές μονάδες σε αναμονή, η δ2 περνά 20 χρονικές μονάδες, η δ3 7 και η δ4 20. Ο μέσος χρόνος αναμονής είναι λοιπόν (3+20+7+20)/4 = 12,5 μονάδες χρόνου. Αυτός είναι ένας μεγάλος μέσος χρόνος αναμονής, αλλά αντισταθμίζεται από το γεγονός ότι στους χρήστες δίνεται η εντύπωση ότι οι διεργασίες τους εκτελούνται όντως παράλληλα. Από το σχήμα επίσης μπορούμε να υπολογίσουμε τους χρόνους απόκρισης για τις τέσσερις διεργασίες: 20 για τη δ1, 51 για τη δ2, 10 για τη δ3 και 31 για τη δ4. Ο μέσος χρόνος απόκρισης είναι λοιπόν (20+51+10+31)/4 = 28. Εικόνα 9: Παράδειγμα κυκλικής αναφοράς. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 36

Παράδειγμα κυκλικής επαναφοράς (Round Robin - RR) (2/2) Παρατηρήσεις : Οι διεργασίες που εισάγονται στη λίστα έτοιμων διεργασιών την ώρα που κάποια άλλη εκτελείται πρέπει να περιμένουν να έρθει η σειρά τους για εκτέλεση μετά από 1, 2 ή και 3 κβάντα χρόνου. Αυτό συμβαίνει γιατί κάθε νέα διεργασία τοποθετείται στο τέλος της λίστας έτοιμων διεργασιών, οπότε πρέπει πρώτα να εκτελεστούν όλες όσες προηγούνται (για ένα κβάντο χρόνου η κάθε μια) και μετά αυτή. Επίσης βλέπουμε ότι, αν μια διεργασία ολοκληρωθεί πριν τελειώσει το κβάντο χρόνου της (π.χ. η δ3 τελειώνει τη χρονική στιγμή 18 ενώ το κβάντο χρόνου τελείωνε στην 20), η ΚΜΕ παραχωρείται αμέσως για ένα ολόκληρο κβάντο χρόνου στην επόμενη διεργασία. Η επίδοση του αλγορίθμου κυκλικής επαναφοράς επηρεάζεται σημαντικά από την επιλογή της διάρκειας που θα έχει το κβάντο χρόνου. 37

Παράδειγμα εκτέλεσης 3 διεργασιών με διαφορετικούς αλγόριθμους Εικόνα 10: Παράδειγμα εκτέλεσης 3 διεργασιών με διαφορετικούς αλγόριθμους. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 38

Αλγόριθμος FCFS (First Come First Served) - 1 Εικόνα 11: Αλγόριθμος FCFS (First Come First Served) - 1. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 39

Αλγόριθμος FCFS (First Come First Served) - 2 Οι χρόνοι υπολογίζονται ως εξής: TT1=140-40=100 & WT1=TT1-RT1=100-100=0 TT2=150-60=90 & WT2=TT2-RT2=90-10=80 TT3=200-110=90 & WT3=TT3-RT3=90-50=40 Οι μέσοι χρόνοι επιστροφής και αναμονής είναι: ATT=(TT1+TT2+TT3)/3=(100+90+90)/3 = 93.33 και AWT=(WT1+WT2+WT3)/3=(0+80+40)/3 = 40 40

Αλγόριθμος SRTN (Shortest Remaining Time Next) 1 (1/2) Εικόνα 12: Αλγόριθμος FCFS (First Come First Served) - 1. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 41

Αλγόριθμος SRTN (Shortest Remaining Time Next) 1 (2/2) Οι χρόνοι υπολογίζονται ως εξής: TT1=150-40=110 & WT1=TT1-RT1=110-100=10 TT2=70-60=10 & WT2=TT2-RT2=10-10=0 TT3=200-110=90 & WT3=TT3-RT3=90-50=40 Οι μέσοι χρόνοι επιστροφής και αναμονής είναι: ATT=(TT1+TT2+TT3)/3=(110+10+90)/3=70 και AWT=(WT1+WT2+WT3)/3=(10+0+40)/3=16.67 42

Αλγόριθμος εκ περιτροπής (Round Robin) 1 (1/2) Εικόνα 13: Αλγόριθμος εκ περιτροπής. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 43

Αλγόριθμος εκ περιτροπής (Round Robin) 1 (2/2) Οι χρόνοι υπολογίζονται ως εξής: TT1=190-40=150 & WT1=TT1-RT1=150-100=50 TT2=80-60=20 & WT2=TT2-RT2=20-10=10 TT3=200-110=90 & WT3=TT3-RT3=90-50=40 Οι μέσοι χρόνοι επιστροφής και αναμονής είναι: ATT=(150+20+90)/3=86.67 και AWT=(50+10+40)/3=33.33 44

Κλασσικά Προβλήματα Οι φιλόσοφοι που γευματίζουν - Dining Philosophers N φιλόσοφοι κάθονται σ' ένα τραπέζι με N πιάτα φαγητό (σούσι). Για να φάει ένας φιλόσοφος χρειάζεται 2 ξυλάκια (chopsticks) -δεξιά και αριστερά κάθε πιάτου βρίσκεται από ένα ξυλάκι. Ο κάθε φιλόσοφος περνάει την ζωή του σκεπτόμενος και τρώγοντας, εναλλάξ. Το πρόβλημα είναι να βρεθεί ένας αλγόριθμος για την ζωή των φιλοσόφων που να επιτρέπει τα παραπάνω χωρίς «προβλήματα». 45

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (1/9) Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { think; take_fork(i); /* πάρε αριστερό ξυλάκι */ take_fork(i+1 mod Ν); /* πάρε δεξί ξυλάκι */ eat; put_fork(i); put_fork(i+1 mod Ν); } 46

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (2/9) Ο παραπάνω αλγόριθμος δεν ικανοποιεί! Αν όλοι οι φιλόσοφοι πεινάσουν την ίδια στιγμή και εκτελέσουν τον αλγόριθμο τότε όλοι θα πάρουν το πηρούνι στα αριστερά τους. Όμως κανείς δεν θα καταφέρει να πάρει το δεξί πηρούνι => όλοι θα... πεθάνουν της πείνας. Αυτό είναι ένα γενικότερο και πολύ σημαντικό πρόβλημα για την δημιουργία συστημάτων λογισμικού και λέγεται αδιέξοδο (deadlock). 47

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (3/9) Αδιέξοδο προκύπτει όταν >1 processes δημιουργούν μια κυκλική αλυσίδα: όπου το κάθε process για να συνεχίσει χρειάζεται έναν πόρο που τον κατέχει το επόμενο process... Κοκ Πρα Κιτρ Μπλε Πορτ Μωβ Κοκ 48

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (4/9) Μια 2 η λύση είναι ν' αναγκάσουμε τον κάθε φιλόσοφο, μόλις πάρει το αριστερό ξυλάκι να εξετάσει αν το δεξί είναι διαθέσιμο. Αν ναι, εντάξει. Αλλιώς, αφήνει το αριστερό ξυλάκι και δοκιμάζει πάλι μετά από κάποιο χρονικό διάστημα. Το πρόβλημα μ' αυτή τη λύση είναι λίγο διαφορετικό. Αν όλοι οι φιλόσοφοι αρχίσουν την ίδια στιγμή, ενδέχεται να πάρουν το αριστερό την ίδια στιγμή, να τ' αφήσουν την ίδια στιγμή κ.ο.κ. Αυτό το φαινόμενο ονομάζεται επ αόριστον αναβολή (indefinite postponement) ή λιμοκτονία (starvation): οι διεργασίες συνεχίζουν να τρέχουν αλλά δεν σημειώνουν καμία πρόοδο... 49

Οι φιλόσοφοι που γευματίζουν - Μια 3 η λύση: Dining Philosophers (5/9) να δημιουργήσουμε ένα critical section στον αλγόριθμο των φιλοσόφων (μετά το "think") ο οποίος να προστατεύεται από ένα semaphore (mutex = 1). Πριν μπεί στο critical section ο κάθε φιλόσοφος καλεί DOWN(mutex) και μόλις βγει καλεί UP(mutex). 50

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (6/9) mutex = 1; philosopher (i) while (1) {think; down(mutex); take_fork(i); /* πάρε αριστερό ξυλάκι */ take_fork(i+1 mod Ν); /* πάρε δεξί ξυλάκι */ eat; put_fork(i); put_fork(i+1 mod Ν); up(mutex); } Η λύση αυτή είναι σωστή; Είναι καλή λύση ; 51

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (7/9) Μια καλύτερη λύση: Χρησιμοποιείται ένα semaphore (mutex = 1) για προστασία critical section. Χρησιμοποιείται ένα semaphore για κάθε φιλόσοφο π.χ. s[1..ν], για Ν φιλόσοφους. Αρχικά s[i] = 0, i= 1,...,Ν. Τέλος υπάρχει και μία μεταβλητή που αντιπροσωπεύει την κατάσταση ενός φιλόσοφου state[i] (με τιμές: ΣΚΕΦΤΕΤΑΙ, ΠΕΙΝΑΕΙ, ΤΡΩΕΙ). Απαίτηση: Για να φάει ένας φιλόσοφος, κανείς από τους 2 γείτονές του δεν μπορεί να βρίσκεται στην κατάσταση ΤΡΩΕΙ. 52

Οι φιλόσοφοι που γευματίζουν - Dining Η βασική ιδέα: Philosophers (8/9) Για να μην μπλοκάρουν όλοι χωρίς λόγο, κάθε φιλόσοφος i θα μπλοκάρει στη δική του σημαφόρο s[i]. Επειδή παράλληλα κάποιοι φιλόσοφοι θα εξετάζουν την κατάσταση (state) των άλλων και θα αλλάζουν την κατάστασή τους, θα χρησιμοποιηθεί μια σημαφόρος για αυτό (mutex). 53

Οι φιλόσοφοι που γευματίζουν - Dining Philosophers (9/9) philosopher (i) while (1) { think; take_forks(i); eat; put_forks(i); } take_forks(i) { down (mutex); state[i]: = hungry; test (i); up (mutex); down (s[i]); } } test (i) if (state[i] == hungry && state[pred]!= eating && state[succ]!= eating) { state[i] = eating; up (s[i]); } put_forks(i) down (mutex); state[i]: = thinking; test (PRED); test (SUCC); up (mutex); test (i) if (state[i] == hungry && state[pred]!= eating && state[succ]!= eating state[i] = eating; { up (s[i]); } 54

Πρόβλημα Αναγνωστών/Συγγραφέων (Readers& Writers) (1/2) Χρησιμοποιείται κυρίως για την μοντελοποίηση προβλημάτων ταυτόχρονης πρόσβασης διαφορετικού τύπου. Πολλοί αναγνώστες (readers) μπορούν ταυτόχρονα να προσπελαύνουν ένα αντικείμενο. Αν όμως το αντικείμενο προσπελαύνεται από έναν συγγραφέα, τότε κανείς άλλος (reader ή writer) δεν μπορεί να προσπελάσει το αντικείμενο. π.χ. τραπεζικοί λογαριασμοί = data items. ερωτήσεις για ύψος υπολοίπου = readers. αναλήψεις, καταθέσεις = writers. 55

Πρόβλημα Αναγνωστών/Συγγραφέων (Readers& Writers) (2/2) 2 σηματοφόροι: ένας (mutex) να προστατεύει το read count και ένας (item) για τη read-write και write-write σύγκρουση. reader writer while (1) { while (1) { down (mutex); create_data(); read_count ++; down (item) ; if (read_count==1) write_item(); down (item); up (item) up (mutex) ; } read_item(); down (mutex); read_count --; if (read_count == 0) up (item); up (mutex); } Αρχικά, mutex = 1 και item = 1 και read_count = 0. Υπάρχει κάποιο πρόβλημα μ' αυτή την λύση; 56

Βιβλιογραφία 1. Tanenbaum κεφάλαιο 2 : 2.4 Πηγή των διαφανειών τα slides από τα βιβλία και τα online-tutorials των : 1. Α. Tanenbaum. 2. W. Stallings. Καθώς και οι online σημειώσεις των 1. Π. Κοτζανικολάου. 2. Κ. Λαμπρινουδάκη. 3. Κ. Μαργαρίτη. 4. Γ. Παπαδόπουλου. 5. Χ. Μανιφάβα. Αll material copyright 1996-2012 All Rights Reserved..57

Τέλος Ενότητας

Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Φραγκούλης Γεώργιος. «Εισαγωγή στα Λειτουργικά Συστήματα». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: URL.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 60

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 61

Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: Εικόνες/Σχήματα/Διαγράμματα/Φωτογραφί ες: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 62