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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

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

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

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

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

ΕΠΙΧΕΙΡΗΜΑΤΙΚΑ ΣΧΕΔΙΑ

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

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

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

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

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

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

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

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

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

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

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

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

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

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

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

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών

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

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

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

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

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

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

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

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

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

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Ηλεκτροτεχνία ΙΙ. Ενότητα 2: Ηλεκτρικά κυκλώματα συνεχούς ρεύματος. Δημήτρης Στημονιάρης, Δημήτρης Τσιαμήτρος Τμήμα Ηλεκτρολογίας

Transcript:

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

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

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

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

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

Νήματα (Threads) Διεργασία: ένα νήμα ελέγχου σε ένα χώρο διευθύνσεων. Σε πολλές περιπτώσεις υπάρχει η ανάγκη χρήσης περισσότερων νημάτων ελέγχου στον ίδιο χώρο διευθύνσεων Νήμα: ένα πρόγραμμα που εκτελείται, σε κοινό χώρο διευθύνσεων με άλλα νήματα. Επιτρέπει την (ψευδο)παράλληλη εκτέλεση εργασιών στον ίδιο χώρο διευθύνσεων. 6

Πλεονεκτήματα των νημάτων Απαραίτητη η κοινή χρήση χώρου διευθύνσεων σε ορισμένες εφαρμογές. Ελαφρύτερα από τις διεργασίες (10-100 φορές η δημιουργία/καταστροφή τους). Καλύτερη επικάλυψη εργασιών σε περίπτωση μεγάλου υπολογιστικού φόρτου και παράλληλα εκτεταμένης χρήσης Ε/Ε. 7

Χρήση των νημάτων (1/3) Εάν το πρόγραμμα ήταν υλοποιημένο με ένα νήμα, τότε την ώρα που γίνεται αυτόματη αποθήκευση, θα ήταν αδύνατη η λήψη εισόδου από πληκτρολόγιο. Η χρήση 3 ανεξάρτητων διεργασιών δεν θα έλυνε το πρόβλημα, εφόσον κάθε διεργασία θα είχε ανεξάρτητο χώρο διευθύνσεων. Εικόνα 1: Χρήση των νημάτων. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 8

Χρήση των νημάτων (2/3) Κάθε αίτημα πελάτη, αντιστοιχίζεται από το νήμα διεκπεραίωσης (dispatcher thread) σε ένα νήμα εργασίας (worker thread). Όλα τα νήματα εργασίας έχουν πρόσβαση στην ίδια cache μνήμη. Εξυπηρετητής ιστού με τη χρήση πολυνημάτωσης (multithreaded Web server). Εικόνα 2: Χρήση των νημάτων. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 9

Χρήση των νημάτων (3/3) Στην 3η περίπτωση, θεωρούμε ότι υπάρχει μία έκδοση της κλήσης συστήματος read η οποία δεν οδηγεί σε μπλοκάρισμα (non-blocking system call). Ο εξυπηρετητής γράφει την κατάσταση της τρέχουσας αίτησης σε έναν πίνακα και λαμβάνει την επόμενη αίτηση (ή την απάντηση από το δίσκο). Προσομοίωση της λειτουργίας των νημάτων (με δύσκολο τρόπο). Οδηγεί σε μία μηχανή πεπερασμένων καταστάσεων (finate state machine), δηλαδή κάθε υπολογισμός διαθέτει μία αποθηκευμένη κατάσταση και κάθε συμβάν μπορεί να αλλάξει αυτή την κατάσταση. Η ύπαρξη των νημάτων οδηγεί στη διατήρηση ων κλήσεων συστήματος που προκαλούν μπλοκάρισμα (άρα ευκολότερο προγραμματισμό) και ταυτόχρονα επιτυγχάνουν παραλληλία. Εικόνα 3: Χρήση των νημάτων. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 10

Το κλασικό μοντέλο των νημάτων (1/4) Κλασικό μοντέλο διεργασίας: ομαδοποίηση συναφών πόρων (π.χ. ανοικτά αρχεία, θυγατρικές διεργασίες, εκκρεμή σήματα, κτλ) Κάθε διεργασία με ένα νήμα εκτέλεσης διαθέτει: ένα μετρητή προγράμματος που δείχνει την επόμενη εντολή που θα εκτελεστεί, καταχωρητές για τις τρέχουσες μεταβλητές, μία στοίβα με το ιστορικό εκτέλεσης. Θα μπορούσαμε να έχουμε πολλές ροές εκτέλεσης στον ίδιο χώρο διευθύνσεων. Άρα πολλά νήματα σε μία διεργασία. 11

Το κλασικό μοντέλο των νημάτων Εικόνα 4: (2/4) (a) Τρεις διεργασίες με ένα νήμα η κάθε μία. (b) Μια διεργασία με τρία νήματα. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 12

Το κλασικό μοντέλο των νημάτων (3/4) Στην περίπτωση πολλών νημάτων μέσα σε μία διεργασία, κάθε νήμα μπορεί να διαβάσει, γράψει ή διαγράψει τη στοίβα κάθε άλλου νήματος! Τα νήματα μοιράζονται επίσης (εκτός από το χώρο διευθύνσεων) τα ανοικτά αρχεία, θυγατρικές διεργασίες, σήματα κτλ. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 13

Το κλασικό μοντέλο των νημάτων Η στοίβα κάθε νήματος περιέχει ένα πλαίσιο (frame) για κάθε διαδικασία που κλήθηκε από το νήμα και δεν έχει ολοκληρωθεί. Κάθε νήμα, καλεί συνήθως διαφορετικές διαδικασίες (εφόσον εκτελεί διαφορετική εργασία). Είναι προφανές ότι δημιουργεί διαφορετικό ιστορικό εκτέλεσης από τα άλλα νήματα Γι αυτό κάθε νήμα χρειάζεται τη δική του στοίβα. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. (4/4) 14

Υλοποίηση νημάτων στο χώρο του χρήστη (user space) (1/3) Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 15

Υλοποίηση νημάτων στο χώρο του χρήστη (user space) (2/3) Στο χώρο του χρήστη (user space) Ο πυρήνας θεωρεί ότι εκτελεί συνηθισμένες διεργασίες με ένα νήμα η κάθε μία. Δεν χρειάζεται το ΛΣ να υποστηρίζει νήματα! Ο πίνακας διεργασιών (process table) βρίσκεται στον πυρήνα (πάντοτε). Όμωςσε αυτή την περίπτωση ο πίνακας νημάτων (thread table) βρίσκεται στο χώρο χρήστη, εντός κάθε διεργασίας. Το πρόγραμμα χρήστη αποφασίζει πως θα μοιράσει το χρόνο εκτέλεσης που έχει όλη η διεργασία μεταξύ των νημάτων της. Γρηγορότερη η εναλλαγή μεταξύ των νημάτων (εφόσον δεν χρειάζεται παγίδευση στον πυρήνα). Όμως τα νήματα πρέπει να παραχωρούν αυτόβουλα τη CPU στα άλλα νήματα της διεργασίας. 16

Υλοποίηση νημάτων στο χώρο του πυρήνα (Kernel space) (3/3) Στο χώρο του πυρήνα (kernel space) Σε αυτή την περίπτωση, ο πίνακας νημάτων βρίσκεται στον πυρήνα. Μεγαλύτερο κόστος από την προηγούμενη λύση (εφόσον η δημιουργία / καταστροφή των νημάτων χρειάζεται μία κλήση συστήματος στον πυρήνα). Πολλές φορές γίνεται για λόγους βελτίωσης της απόδοσης «ανακύκλωση» νημάτων. Δηλαδή, εάν ένα νήμα δεν χρειάζεται δεν καταστρέφεται, αλλά σημειώνεται ως μη-χρήσιμο (ώστε να το χρησιμοποιήσει αργότερα μία άλλη λειτουργία). Το πλεονέκτημα είναι ότι η εναλλαγή μεταξύ των νημάτων γίνεται. 17

Υβριδικές υλοποιήσεις Συνδυαστική λύση: ένα νήμα επιπέδου πυρήνα, μπορεί να χειριστεί πολλά νήματα επιπέδου χρήστη. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 18

Διαδιεργασιακή Επικοινωνία (1/2) Είναι συχνά αναγκαίο μία διεργασία να επικοινωνεί με μία άλλη (interprocess communication). Για παράδειγμα, σε μία διοχέτευση κελύφους (shell pipeline), η έξοδος της πρώτης αποτελεί είσοδο της δεύτερης η έξοδος της οποίας μπορεί να αποτελεί είσοδο μίας τρίτης κ.ο.κ. Εικόνα 5: Διαδιεργασιακή επικοινωνία. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 19

Διαδιεργασιακή επικοινωνία (2/2) Με ποιο τρόπο επικοινωνούν μεταξύ τους δύο διεργασίες; Μία σωλήνωση (pipe) επιτρέπει για παράδειγμα την επικοινωνία μεταξύ δύο διεργασιών. Πολλά ΛΣ δημιουργούν «κοινόχρηστους» χώρους διευθύνσεων. Πώς μπορούμε να εξασφαλίσουμε ότι μία διεργασία δεν εμποδίζεται από μία άλλη, όταν η 1η εκτελεί μία κρίσιμη λειτουργία; Πως εξασφαλίζουμε το σωστό συγχρονισμό μεταξύ διεργασιών που πρέπει να επικοινωνήσουν; 20

Συνθήκη Ανταγωνισμού (1/6) Κατάσταση κατά την οποία περισσότερες από μία διεργασίες διαβάζουν ή γράφουν ένα κοινό πόρο του συστήματος Το τελικό αποτέλεσμα εξαρτάται από τον σχετικό χρόνο εκτέλεσης, δηλαδή από τη σειρά εκτέλεσής τους (race condition) Ένα τέτοιο ρίσκο μπορεί να παραβλεφθεί για μεγάλο διάστημα σε ένα σύστημα το οποίο φαίνεται πολύ αξιόπιστο, αλλά τελικά άλλο λογισμικό μπορεί να αποσταθεροποιήσει πολλά κομμάτια του συστήματος. Παράδειγμα Δύο processes κάνουν και οι δύο αναλήψεις από ένα τραπεζικό λογαριασμό (κοινό) - η μία π.χ. στον σύζυγο και η άλλη αντίστοιχα στη σύζυγο Η ρουτίνα ΑΝΑΛΗΨΗ καλείται και από τις δύο processes ΑΝΑΛΗΨΗ read (acc_bal); write (acc_bal -> acc_bal - amount); Το P1 εκτελεί το read() και μετά το CPU δίνεται στο P2 το οποίο εκτελεί read() και write() Μετά, το CPU δίνεται στο P1 που εκτελεί το write() μόνο η μία ανάληψη φαίνεται - η άλλη "χάθηκε Αυτό είναι ένα "τυπικό" race condition 21

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

Συνθήκη Ανταγωνισμού (3/6) Η τιμή του counter, μετά την εκτέλεση των δύο διεργασιών θα μπορούσε σε μία περίπτωση να είναι 2 και σε μία άλλη περίπτωση να είναι 1. Ο μετρητής είναι αρχικά 0. Αν εκτελεστούν οι διεργασίες με τη σειρά στο τέλος ο μετρητής θα είναι 2. Αν οι διεργασία 1 διακοπεί για κάποιο λόγο κατά την εκτέλεσή της μετά την εντολή «i = counter;». Kαι ξεκινήσει η διεργασία 2 η οποία τρέχει μέχρι να ολοκληρωθεί. Και μετά συνεχίσει την εκτέλεσή της η διεργασία 1 μέχρι να ολοκληρωθεί. Ο μετρητής στο τέλος θα έχει την τιμή 1. Lecture 4 23

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

Συνθήκη Ανταγωνισμού (5/6) Οι διεργασίες Α και Β αποφασίζουν ταυτόχρονα να τοποθετήσουν στην ουρά εκτύπωσης ένα αρχείο προς εκτύπωση η κάθε μία. Εκτελείται η Α: Η Α διαβάζει ποια είναι η επόμενη διαθέσιμη θέση (in = 7) και αποθηκεύει αυτή την τιμή σε μία τοπική μεταβλητή (next_free_slot = 7). Γίνεται μία διακοπή ρολογιού και εκτελείται η Β. Η Β διαβάζει επίσης ποια είναι η επόμενη διαθέσιμη θέση (in = 7) και αποθηκεύει αυτή την τιμή σε μία τοπική μεταβλητή (next_free_slot = 7). Αποθηκεύει το αρχείο της στη θέση 7. Αυξάνει την global μεταβλητή in κατά ένα και γίνεται (in = next_free_slot + 1 = 7+1 =8). (Η Α δεν είχε προλάβει πριν να αυξήσει την in). 25

Συνθήκη Ανταγωνισμού (6/6) Γίνεται μία διακοπή ρολογιού και συνεχίζει η Α. Διαβάζει την τοπική μεταβλητή της (next_free_slot = 7) και τοποθετεί το αρχείο της στη θέση 7 διαγράφοντας το αρχείο της Β! Αυξάνει την global μεταβλητή in κατά ένα και γίνεται (in = next_free_slot + 1 = 7+1 =8). Τίποτα ασυνήθιστο δεν έχει συμβεί για τον print daemon. Όλοι λένε ότι η επόμενη κενή θέση είναι η 8! Lecture 4 26

Συνθήκη Ανταγωνισμού (File Systems) Παράδειγμα: Σύστημα αρχείων Υπάρχει η πιθανότητα σε κάποιες περιπτώσεις να έχουμε ανταγωνισμό μεταξύ δύο ή περισσοτέρων προγραμμάτων που προσπαθούν να αλλάξουν ή να αποκτήσουν πρόσβαση σε ένα αρχείο. Προγράμματα που δεν σχετίζονται άμεσα μεταξύ τους μπορεί να επηρεάζουν ξαφνικά το ένα το άλλο. Μία ευρέως χρησιμοποιούμενη λύση είναι το κλείδωμα του αρχείου. Μία άλλη λύση είναι μία μόνο διεργασία (η οποία μπορεί να τρέχει στο παρασκήνιο) να μπορεί να έχει αποκλειστική πρόσβαση στο αρχείο και όλες οι άλλες διεργασίες να μπορούν να αποκτήσουν πρόσβαση σε εκείνο το αρχείο μόνο μέσα από διαδιεργασιακή επικοινωνία με αυτήν την διεργασία. 27

Κρίσιμες περιοχές Κρίσιμη περιοχή = τμήμα προγράμματος που γίνεται προσπέλαση κοινόχρηστης μνήμης. Συνθήκες για την αποφυγή την ανταγωνισμού: 1. Δύο διεργασίες δεν βρίσκονται ποτέ ταυτόχρονα στις κρίσιμες περιοχές τους (αμοιβαίος αποκλεισμός). 2. Δεν επιτρέπονται παραδοχές σχετικά με την ταχύτητα ή το πλήθος των CPU. 3. Αν μία διεργασία δεν βρίσκεται σε κρίσιμο τμήμα, δεν επιτρέπεται να μπλοκάρει άλλες διεργασίες. 4. Δεν επιτρέπεται η επ αόριστο αναμονή μίας διεργασίας, για την είσοδό της στην κρίσιμη περιοχή της. 28

Αμοιβαίος Αποκλεισμός (1/2) Όταν μία διεργασία βρίσκεται σε κρίσιμο τμήμα και χρησιμοποιεί ένα κοινό πόρο, τότε δεν επιτρέπεται καμιά άλλη διεργασία να είναι ταυτόχρονα σε κρίσιμο τμήμα που χρειάζεται να χρησιμοποιήσει τον ίδιο πόρο (mutual exclusion). Με αυτό τον τρόπο αποφεύγονται συνθήκες ανταγωνισμού. Ο σχεδιασμός μηχανισμών αμοιβαίου αποκλεισμού είναι από τα κύρια ζητήματα σε κάθε Λ.Σ. 29

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

Αδιέξοδο Ολικός Αποκλεισμός Αδιέξοδο: η κατάσταση κατά την οποία δύο διεργασίες είναι αδύνατο να συνεχίσουν την εκτέλεσή τους γιατί η μία περιμένει την άλλη για να τελειώσει κάτι (deadlock). Ολικός Αποκλεισμός: η κατάσταση κατά την οποία μία διεργασία παρότι είναι έτοιμη για να τρέξει δεν επιλέγεται ποτέ από τον scheduler (starvation). 31

Αμοιβαίος Αποκλεισμός Μέθοδοι για την επίτευξη αμοιβαίου αποκλεισμού: 1. Απενεργοποίηση διακοπών. 2. Μεταβλητές κλειδώματος. 3. Αυστηρή εναλλαγή. 4. Η λύση του Peterson. 5. Η εντολή TSL. 32

Απενεργοποίηση διακοπών Όταν μπαίνει μία διεργασία στην κρίσιμη περιοχή της απενεργοποιεί όλες τις διακοπές. Τις ενεργοποιεί ξανά μόλις βγει από την κρίσιμη περιοχή της. Επιτρέπεται στις διεργασίες να απενεργοποιούν τις διακοπές ρολογιού. Μία κακόβουλη διεργασία μπορεί να μην επαναφέρει ποτέ τις διακοπές (συνεπώς να μην μπορέσει ποτέ να δοθεί η CPU σε άλλη διεργασία!) 33

Μεταβλητές κλειδώματος Χρήση κοινόχρηστης μεταβλητής κλειδώματος (lock variable). Κάθε διεργασία ελέγχει τη μεταβλητή κλειδώματος: Αν είναι 0 μπαίνει στην κρίσιμη περιοχή και την αλλάζει σε 1. Αν είναι 1, περιμένει για λίγο και ξαναδοκιμάζει. Πρόβλημα: Η Α διαβάζει την μεταβλητή και τη βρίσκει 0. Συμβαίνει μία διακοπή ρολογιού. Η Β διαβάζει τη μεταβλητή και τη βρίσκει 0. Την αλλάζει σε 1 και μπαίνει στην κρίσιμη περιοχή της. Συμβαίνει διακοπή ρολογιού. Η Α συνεχίζει από εκεί που είχε μείνει. Αλλάζει την μεταβλητή σε 1 (παρόλο που είναι ήδη δεν το ξέρει) και μπαίνει και αυτή στην κρίσιμη περιοχή της! Το πρόβλημα οφείλεται στη διαφορά χρόνου μεταξύ της ανάγνωσης της μεταβλητής και την αλλαγής της τιμής της. Εάν στο μεσοδιάστημα συμβεί μία διακοπή, ενδέχεται να δημιουργηθεί η παραπάνω κατάσταση. 34

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

Αυστηρή εναλλαγή (2/3) Οι διεργασίες εναλλάσσονται αυστηρά στο CPU. Έστω ότι στο σύστημα έχουμε: Δύο διεργασίες. Μία κοινή μεταβλητή turn (αρχικά = 0) που καθορίζει ποιος έχει σειρά. Όταν έχει τιμή 0 τρέχει η διεργασία 0 και όταν έχει τιμή 1 τρέχει η διεργασία 1. Όταν η διεργασία βγαίνει από το κρίσιμο τμήμα παραχωρεί τη σειρά στην άλλη διεργασία. Busy Waiting (ενεργός αναμονή). 36

Πρόβλημα Αυστηρή εναλλαγή (3/3) Έστω ότι η διεργασία 0 εκτελεί το κρίσιμο τμήμα της και με την έξοδο από αυτό εκτελεί turn = 1. Σε αυτό το σημείο και οι 2 διεργασίες εκτελούν μη κρίσιμα τμήματα. Έστω ότι η διεργασία 0 θέλει πάλι να εκτελέσει το κρίσιμο τμήμα της. Επειδή όμως ακόμη turn = 1 αυτό δεν επιτρέπεται παρά το γεγονός ότι η διεργασία 1 τρέχει σε μη κρίσιμο τμήμα. Άρα η τεχνική δεν είναι αποδοτική όταν η μία διεργασία είναι πολύ πιο αργή από την άλλη. Παραβιάζεται η συνθήκη ν.3 σύμφωνα με την οποία μία διεργασία μπλοκάρεται από μία άλλη η οποία όμως δεν βρίσκεται σε κρίσιμο τμήμα. Στο σενάριο με τον εκτυπωτή δεν θα ήταν δυνατό για μία διεργασία να εκτυπώσει 2 αρχεία συνεχόμενα. 37

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

Αμοιβαίος Αποκλεισμός Λύση Peterson (2/2) Σύμφωνα με τον αλγόριθμο του Peterson Πριν μία διεργασία μπει στο κρίσιμο τμήμα της καλεί τη συνάρτηση enter_region() με όρισμα το όνομα της διεργασίας (0 ή 1). Αυτή η κλήση αναγκάζει την διεργασία να περιμένει για όσο χρόνο μία άλλη διεργασία εκτελεί το κρίσιμο τμήμα της. Η διεργασία που εκτελεί το κρίσιμο τμήμα της, μόλις τελειώσει με αυτό, καλεί την συνάρτηση leave_region(). Υπάρχει ένα flag, "turn", το οποίο χρησιμοποιείται για να δώσει την σειρά σε ένα μόνο ενδιαφερόμενο process. Και ένας πίνακας από flags, "interested[]" που δείχνει την επιθυμία ενός process να μπεί στο critical section του. 39

Αμοιβαίος Αποκλεισμός Λύση TSL Πρέπει να υποστηρίζεται από το υλικό (Εντολή της CPU) TSL (Test and Set Lock), δηλαδή έλεγξε και θέσε τη μεταβλητή lock=1. H ανάγνωση της λέξης lock και η αποθήκευση τιμής σε αυτή είναι αδιαίρετη πράξη! Η CPU η οποία εκτελεί αυτή την εντολή, κλειδώνει το δίαυλο της μνήμης από άλλες CPU μέχρι να τελειώσει την εργασία της. Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 40

Αναμονή με απασχόληση και το πρόβλημα της αντιστροφής προτεραιοτήτων (1/2) Οι διεργασίες Χ και Υ έχουν την ίδια κρίσιμη περιοχή (η Υ έχει υψηλή προτεραιότητα και η Χ χαμηλή προτεραιότητα). Η Χ έχει μπει στην κρίσιμη περιοχή της, αλλά δεν πρόλαβε να καλέσει την leave_region( ). Γίνεται μία διακοπή (interrupt) και εκτελείται μία Τρίτη διεργασία (η Ζ). Και οι δύο (Υ και Χ) είναι έτοιμες για εκτέλεση (ready). Γίνεται μία διακοπή (interrupt) και καλείται η Υ (έχει υψηλή προτεραιότητα). Η Υ κάνει αναμονή με απασχόληση μέχρι να μπορέσει να μπει στην κρίσιμη περιοχή της. Η Χ όμως δεν μπορεί να χρονοπρογραμματιστεί εφόσον εκτελείται η Υ! 41

Αναμονή με απασχόληση και το πρόβλημα της αντιστροφής προτεραιοτήτων (2/2) Οι προηγούμενες λύσεις είναι σωστές αλλά υλοποιούν αναμονή με απασχόληση (συνεπώς, σπατάλη της CPU). Επιπλέον, αυτό μπορεί να οδηγήσει στο να μην εκτελεστεί μία διεργασία με υψηλή προτεραιότητα (Υ), απλά επειδή μία άλλη με χαμηλή προτεραιότητα (Χ) δεν χρονοπρογραμματίζεται ώστε να μπορέσει να καλέσει την leave_region (πρόβλημα αντιστροφής προτεραιοτήτων). 42

Λήθαργος και αφύπνιση (sleep & wakeup) Για την αποφυγή της αναμονής με απασχόληση, γίνεται χρήση του ζεύγους κλήσεων συστήματος sleep( ) και wakeup( ). sleep( ) Μπλοκάρει («κοιμίζει») την καλούσα διεργασία,μέχρι κάποια άλλη να την ξυπνήσει. wakeup( process) Ξυπνάει μία διεργασία. 43

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

Προβλήματα: Πρόβλημα Παραγωγού Ο παραγωγός θέλει να τοποθετήσει ένα στοιχείο στον buffer όταν είναι γεμάτος. Ο καταναλωτής θέλει να χρησιμοποιήσει ένα στοιχείο από τον buffer όταν είναι άδειος. Καταναλωτή (2/4) Πηγή: Tanenbaum, A.: Σύγχρονα Λειτουργικά Συστήματα, Εκδόσεις Κλειδάριθμος. 45

Πρόβλημα Παραγωγού Καταναλωτή (3/4) Ο buffer χωράει Ν στοιχεία Η μεταβλητή count δίνει πόσες θέσεις είναι γεμάτες. Αν ο Παραγωγός θέλει να προσθέσει ένα στοιχείο αλλά count=n τότε εκτελεί sleep(). Αν ο Καταναλωτής θέλει να αφαιρέσει ένα στοιχείο αλλά count = 0 τότε εκτελεί sleep(). Και οι δύο ξυπνούν την άλλη διεργασία, όταν πρέπει, εκτελώντας awake(). Eτσι ο Π κοιμάται όταν ο Β είναι γεμάτος και ξυπνάει τον Κ μόλις ο Β παύει να είναι άδειος. Ενώ, ο Κ κοιμάται όταν ο Β είναι άδειος και ξυπνάει τον Π όταν ο Β παύει να είναι γεμάτος. Μπορεί να προκύψει πρόβλημα, όμως, λόγω του ότι Π & Κ προσπελαύνουν το count χωρίς περιορισμό. 46

Το πρόβλημα παραγωγούκαταναλωτή (4/4) Συνθήκη συναγωνισμού: (Εκτελείται ο καταναλωτής). O buffer είναι άδειος (count=0). O καταναλωτής διαβάζει το περιεχόμενο της count για να δει αν είναι 0. (Γίνεται interrupt -> εκτελείται ο παραγωγός). Ο παραγωγός τοποθετεί ένα στοιχείο στον buffer και αυξάνει την count (count= count+1 = 0+1 = 1). Εφόσον η count ήταν 0 καλεί την weakup( ) για να ξυπνήσει τον καταναλωτή. Όμως ο καταναλωτής δεν βρίσκεται ακόμα σε λήθαργο. (δεν πρόλαβε να μπει σε λήθαργο λόγω του interrupt). Το σήμα wakeup χάνεται! (Γίνεται interrupt -> εκτελείται ο καταναλωτής). Ο καταναλωτής είχε βρει την τιμή της count=0. Άρα καλεί την sleep(). Και οι δύο διεργασίες είναι σε λήθαργο, λόγω του σήματος weakup που χάθηκε! 47

Σηματοφόροι ή σημαφόροι Νέος τύπος μεταβλητής (Semaphores) (1/2) 0: δεν έχουν αποθηκευτεί σήματα αφύπνισης. x>0: εκκρεμούν x σήματα αφύπνισης. Λειτουργία down: Ελέγχει την τιμή του σημαφόρου. Εάν >0, τον μειώνει κατά 1 και συνεχίζει. Εάν =0 τότε η καλούσα διεργασία κοιμάται χωρίς να κάνει την μείωση κατά 1 (η μείωση εκκρεμεί). Ο έλεγχος, η αλλαγή τιμής και η πιθανή κλήση της sleep είναι μία αδιαίρετη ενέργεια (atomic action). Ο σημαφόρος λειτουργεί ως «κουμπαράς» των σημάτων που σε άλλη περίπτωση θα χάνονταν 48

Σηματοφόροι ή σημαφόροι Λειτουργία up: (Semaphores) (2/2) Αυξάνει την τιμή του σημαφόρου κατά 1. Εάν κάποια λειτουργία down δεν είχε ολοκληρωθεί (εκκρεμεί από πριν μία λειτουργία down) τότε ολοκληρώνεται αυτή η λειτουργία (μειώνει κατά 1). Μετά από μία λειτουργία up σε ένα σημαφόρο που έχει μπλοκάρει κάποιες διεργασίες, θα εξακολουθήσει να έχει την τιμή 0 αλλά οι διεργασίες που βρίσκονται σε λήθαργο θα έχουν μειωθεί κατά μία! Οι λειτουργίες αύξησης του σημαφόρου και αφύπνισης της διεργασίας είναι επίσης αδιαίρετες. Οι λειτουργίες up και down υλοποιούνται ως κλήσεις συστήματος και το ΛΣ απενεργοποιεί τις διακοπές μέχρι να εκτελεστούν. 49

Ελεγκτές (Monitors) Οι σηματοφόροι λειτουργούν σε χαμηλό επίπεδο Οι ελεγκτές (monitors) είναι μία λύση για συγχρονισμό μεταξύ διεργασιών και αποφυγή συνθηκών συναγωνισμού, σε υψηλότερο επίπεδο. Αφορά γλώσσες προγραμματισμού υψηλότερου επιπέδου, όπως η java. Μέσα σε ένα ελεγκτή (monitor) περιλαμβάνονται πολλές διεργασίες. Κάθε φορά όμως μπορεί να είναι ενεργή μόνο μία διαδικασία! Χρησιμοποιούν μεταβλητές συνθήκης και κλήσεις wait και signal για μπλοκάρισμα και αφύπνιση. 50

Φράγματα (Barriers) (1/2) Μέθοδος συγχρονισμού που αφορά ομάδες διεργασιών. Ένα φράγμα σταματά όσες διεργασίες της ομάδας έχουν ολοκληρώσει κάποια φάση. Κάθε διεργασία που φτάνει στο φράγμα, εκτελεί την εργασία της και καλεί την κλήση barrier για να μπλοκαριστεί. Όταν όλες οι διεργασίες της ομάδας έχουν καλέσει την barrier, τότε μπορούν να συνεχίσουν. 51

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

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

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

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

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

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

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