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

ΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

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

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

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

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

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

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Αμοιβαίος αποκλεισμός

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Κεφάλαιο 3. Διδακτικοί Στόχοι

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

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

Λειτουργικά συστήματα πραγματικού χρόνου

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

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Ε-85: Ειδικά Θέµατα Λογισµικού

Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση

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

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

ροµολόγηση Επεξεργαστή

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

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

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

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

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

ENOTHTA 5 XPONO POMOΛOΓHΣH

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

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

Κεφάλαιο 3: Λειτουργικά Συστήµατα

Περιγραφή και Έλεγχος ιεργασιών

Διεργασίες (Processes)

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο

Λειτουργικά Συστήματα Πραγματικού Χρόνου

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΛΟΓΙΣΜΙΚΟ (software)

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Δρομολόγηση σε σύστημα ενός επεξεργαστή

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

Σκοπός Μαθήματος. Λειτουργικά Συστήματα Η/Υ. Γενικές Πληροφορίες. Στόχοι Μαθήματος ΚΕΦΑΛΑΙΟ 1 - ΕΙΣΑΓΩΓΗ. Θεωρία: Εργαστήριο: Κεφάλαιο 1 «Εισαγωγή»

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Χρονοπρογραµµατισµός ιεργασιών (Process Scheduling)

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

ΛΥΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ. Γράψτε τις επόμενες διαδικασίες σε όποια γλώσσα προγραμματισμού προτιμάτε:

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

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Λειτουργικά Συστήματα Πραγματικού Χρόνου

2.4 Κλασσικά Προβλήματα IPC

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

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

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Κεφάλαιο 3: Λειτουργικά Συστήματα

Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 2

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

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1

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

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Χρονοδρομολογητής Κυκλικής Επαναφοράς


Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Απαντήσεις. Απάντηση. Απάντηση

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

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Παράλληλη Επεξεργασία

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

Πανεπιστήµιο Θεσσαλίας

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

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

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

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Transcript:

2. ΙΕΡΓΑΣΙΕΣ Στέφανος Γκρίτζαλης Αναπληρωτής Καθηγητής Κωνσταντίνος Καραφασούλης ιδάσκων (Π 407) 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (1/11) 2.1.1 Το µοντέλο διεργασίας Για την επίτευξη ψευδοπαραλληλισµού (pseudoparallelism) το εκτελέσιµο λογισµικό στον υπολογιστή, οργανώνεται σε διεργασίες (processes). 2 1

2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (2/11) ιεργασία είναι εκτελέσιµο πρόγραµµα, το οποίο περιλαµβάνει και τις τρέχουσες τιµές του απαριθµητή εντολών, των καταχωρητών και των µεταβλητών του. Η διεργασία δεν ταυτίζεται µε ένα πρόγραµµα, αφού η διεργασία είναι η δραστηριότητα (activity) εκτέλεσης ενός προγράµµατος. 3 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (3/11) Ιεραρχίες διεργασιών Εκτέλεση κλήσεων συστήµατος προκαλεί τη δηµιουργία διεργασιών (π.χ. fork). Στο UNIX η γονική (parent) και η θυγατρική (child) διεργασία εκτελούνται παράλληλα, αντίθετα από το DOS. 4 2

2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (4/11) Καταστάσεις διεργασιών Η αλληλεπίδραση µεταξύ διεργασιών οδηγεί στην αναγκαιότητα ύπαρξης διαφόρων καταστάσεων στις οποίες µπορούν να βρεθούν οι διάφορες διεργασίες, π.χ. cat chapter1 chapter2 grep tree 5 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (5/11) Οι τρεις δυνατές καταστάσεις στις οποίες µπορεί να βρεθεί µια διεργασία είναι: εκτελούµενη (running) έτοιµη προς εκτέλεση ή εκτελέσιµη (ready or runnable) υπό αναστολή (blocked). 6 3

2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (6/11) Οι δυνατές µεταβάσεις µεταξύ καταστάσεων διεργασιών είναι: [1] εκτελούµενη υπό αναστολή [2] εκτελούµενη εκτελέσιµη [3] εκτελέσιµη εκτελούµενη [4] υπό αναστολή εκτελέσιµη Με τη χρήση του µοντέλου διεργασιών απλοποιείται η εσωτερική λειτουργία του Λ.Σ. 7 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (7/11) 2.1.2 Υλοποίηση διεργασιών Για την υλοποίηση του µοντέλου διεργασιών, το Λ.Σ. οικοδοµεί µία δοµή από όµοιες εγγραφές, τον πίνακα διεργασιών (process table). 8 4

2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (8/11) Για κάθε διεργασία τηρείται µία εγγραφή, η οποία περιλαµβάνει στοιχεία τα οποία αφορούν: στη διαχείριση διεργασιών (process management) στη διαχείριση µνήµης (memory management) στη διαχείριση αρχείων (file management). 9 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (9/11) Λεπτοµερέστερα, τα στοιχεία µπορεί να περιλαµβάνουν: την κατάσταση της διεργασίας (process status) τον απαριθµητή προγράµµατος (program counter) το δείκτη στοίβας (stack pointer) την κατανοµή µνήµης (memory allocation) την κατάσταση των ανοιχτών αρχείων πληροφορίες λογιστικού χαρακτήρα (accounting) πληροφορίες χρονοπρογραµµατισµού 10 5

2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (10/11) Εργασίες ενός Λ.Σ. κατά την εµφάνιση σήµατος διακοπής Σε κάθε οµάδα οµοειδών συσκευών αντιστοιχεί µια θέση µνήµης που καλείται διάνυσµα διακοπής (interrupt vector). 11 2.1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ (11/11) Ηθέση αυτή περιλαµβάνει τη διεύθυνση της διαδικασίας εξυπηρέτησης διακοπής (interrupt service procedure). Σε περίπτωση εµφάνισης σήµατος διακοπής ακολουθείται συγκεκριµένη διαδοχή ενεργειών από την πλευρά του συστήµατος. 12 6

ΕΠΙΚΟΙΝΩΝΙΑ (1/49) Είναι προφανής η αναγκαιότητα ύπαρξης µηχανισµού διαδιεργασιακής επικοινωνίας (InterProcess Communication). 13 ΕΠΙΚΟΙΝΩΝΙΑ (2/49) 2.2.1 Συνθήκες ανταγωνισµού Συνθήκες ανταγωνισµού (race conditions) µεταξύ διεργασιών εµφανίζονται όταν δύο ή περισσότερες διεργασίες διαµοιράζονται την ίδια περιοχή µνήµης και το τελικό αποτέλεσµα εξαρτάται από τη σειρά και το χρόνο εκτέλεσής τους. 14 7

ΕΠΙΚΟΙΝΩΝΙΑ (3/49) 2.2.2 Κρίσιµα τµήµατα Στις περιπτώσεις διαµοιρασµού πόρων, απαιτείται πρόβλεψη και αποτροπή χρήσής τους από περισσότερες της µιας διεργασίας την ίδια χρονική στιγµή. Ουσιαστικά απαιτείται αµοιβαίος αποκλεισµός (mutual exclusion) µεταξύ δύο διεργασιών. 15 ΕΠΙΚΟΙΝΩΝΙΑ (4/49) Υπό την οπτική περισσότερο αφαιρετικής προσέγγισης, είναι επιθυµητό να διασφαλίσουµε ότι δε θα συµβεί ταυτόχρονη χρήση τµηµάτων προγραµµάτων που περιέχουν προσπελάσεις σε µη διαµοιραζόµενους πόρους. Τα τµήµατα αυτά των προγραµµάτων καλούνται κρίσιµα τµήµατα (critical sections). 16 8

ΕΠΙΚΟΙΝΩΝΙΑ (5/49) Για την επίτευξη αποδοτικής συνεργασίας παραλλήλων διεργασιών, απαιτείται να πληρούνται οι κάτωθι προϋποθέσεις: ύο διεργασίες δε βρίσκονται ποτέ ταυτόχρονα στα κρίσιµα τµήµατά τους εν επιτρέπονται υποθέσεις σε ότι αφορά την ταχύτητα ή το πλήθος των επεξεργαστών ιεργασία που δε βρίσκεται σε κρίσιµο τµήµα δεν επιτρέπεται να αναστείλει άλλες διεργασίες εν επιτρέπεται η έπ' αόριστο αναµονή µιας διεργασίας, για να εισέλθει στο κρίσιµο τµήµα της. 17 ΕΠΙΚΟΙΝΩΝΙΑ (6/49) H A εισέρχεται στη κρίσιµη περιοχή H A εξέρχεται από κρίσιµη περιοχή ιεργασία Α H Β προσπαθεί να εισέλθει στη κρίσιµη περιοχή H Β εισέρχεται στη κρίσιµη περιοχή H Βεξέρχεται από τη κρίσιµη περιοχή ιεργασία Β H Β αναστέλλεται Χρόνος 18 9

ΕΠΙΚΟΙΝΩΝΙΑ (7/49) 2.2.3 Αµοιβαίος αποκλεισµός και ενεργός αναµονή Θα µελετήσουµε τρόπους για την επίτευξη αµοιβαίου αποκλεισµού, έτσι ώστε όταν µια διεργασία µεταβάλει τα περιεχόµενα διαµοιραζόµενης περιοχής µνήµης, καµία άλλη δεν εισέρχεται στο κρίσιµο τµήµα της. 19 ΕΠΙΚΟΙΝΩΝΙΑ (8/49) Απενεργοποιώντας διακοπές Η προφανέστερη λύση για την επίτευξη αµοιβαίου αποκλεισµού θα ήταν η διαδικασία, σύµφωνα µε την οποία: η απενεργοποίηση όλων των διακοπών από µια διεργασία που εισέρχεται στο κρίσιµο τµήµα της η άρση της απενεργοποίησης αµέσως µετά την έξοδο από αυτό. 20 10

ΕΠΙΚΟΙΝΩΝΙΑ (9/49) Ηλύση αυτή εκτιµάται ως µη ελκυστική, αφού: δεν είναι επιθυµητό να ανατίθεται σε διεργασίες του χρήστη το δικαίωµα απαγόρευσης διακοπών δεν είναι αποτελεσµατική επιλογή, σε περίπτωση που υπάρχουν περισσότερες από µία CPU. 21 ΕΠΙΚΟΙΝΩΝΙΑ (10/49) Μεταβλητές κλειδώµατος Η λύση µε χρήση απλών διαµοιραζόµενων µεταβλητών κλειδώµατος (lock variables) θα περιλάµβανε: όταν µια διεργασία επιθυµεί να εισέλθει στο κρίσιµο τµήµα της ελέγχει την τιµή της µεταβλητής κλειδώµατος αν αυτή έχει τιµή 0, τότε τη θέτει 1 και εισέρχεται αν αυτή έχει τιµή 1, τότε περιµένει µέχρι να γίνει 0 και τότε τη θέτει 1 και εισέρχεται. Η επιλογή, όµως, αυτή δεν είναι αποτελεσµατική αφού µπορεί να παρουσιαστεί παρεµβολή σε τέτοιο χρόνο, ώστε να υπάρξει αναποτελεσµατικός έλεγχος. 22 11

ΕΠΙΚΟΙΝΩΝΙΑ (11/49) Αυστηρή εναλλαγή Στη λύση της αυστηρής εναλλαγής, η µεταβλητή turn καταγράφει τη διεργασία που έχει δικαίωµα να εισέλθει στο κρίσιµο τµήµα της, ελέγχοντας ή ενηµερώνοντας τη µνήµη. 23 ΕΠΙΚΟΙΝΩΝΙΑ (12/49) Αρχικά, η turn έχει τιµή 0, οπότε η διεργασία 0 εισέρχεται στο κρίσιµο τµήµα, ενώ η διεργασία 1 περιµένει, εκτελώντας διαρκώς ένα βρόχο ελέγχου. Η διεργασία 1 βρίσκεται σε ενεργό αναµονή (busy waiting). Όταν η διεργασία 0 τελειώσει το κρίσιµο τµήµα, µεταβάλλει την turn σε 1, οπότε επιτρέπει στην αντίστοιχη διεργασία να εισέλθει στο δικό της κρίσιµο τµήµα. 24 12

ΕΠΙΚΟΙΝΩΝΙΑ (13/49) Τα µειονεκτήµατα της µεθόδου είναι: περιλαµβάνεται ενεργός αναµονή (busy waiting), οπότε δαπανάται χρόνος CPU δεν ενδείκνυται όταν η µία εκ των εµπλεκοµένων διεργασιών είναι πολύ βραδύτερη της άλλης απαιτεί αυστηρή εναλλαγή διεργασιών. 25 Λύση του Peterson ΕΠΙΚΟΙΝΩΝΙΑ (14/49) Σύµφωνα µε τη λύση του Peterson: πριν την είσοδο σε κρίσιµο τµήµα κάποια διεργασία, έστω process=0, καλεί την enter_region µε παράµετρο τον αριθµό της 0 ακολούθως δηλώνει το ενδιαφέρον της γι' αυτό το κρίσιµο τµήµα, θέτοντας interested[process=0]=true και θέτει τη µεταβλητή turn=0 περιµένει µέχρι να εξασφαλιστεί η είσοδος στο κρίσιµο τµήµα κατά την έξοδο από το κρίσιµο τµήµα η διεργασία καλεί την leave_region ώστε να απελευθερωθεί η κρίσιµη περιοχή, θέτοντας interested[process=0]=false. Το βασικό µειονέκτηµα και της µεθόδου του Peterson είναι ότι: περιλαµβάνεται ενεργός αναµονή (busy waiting) στην περίπτωση που προσπαθήσει µια διεργασία να εισέλθει ανεπιτυχώς στο κρίσιµο τµήµα. 26 13

ΕΠΙΚΟΙΝΩΝΙΑ (15/49) TSL εντολή Η εντολή TSL (Test and Set Lock) είναι εντολή που χρησιµοποιείται σε υπολογιστές πολλαπλών επεξεργαστών και εξασφαλίζει το αδιαίρετο (indivisible) των πράξεων ανάγνωσης και αποθήκευσης. Ο συντονισµός των προσπελάσεων στην κοινή µνήµη επιτυγχάνεται µέσω µιας διαµοιραζόµενης µεταβλητής flag. 27 ΕΠΙΚΟΙΝΩΝΙΑ (16/49) Όταν flag=0 οποιαδήποτε διεργασία: µπορεί να θέσει flag=1 µε εντολή TSL ακολούθως να αναγνώσει ή εγγράψει στη διαµοιραζόµενη µνήµη µετά το πέρας να επαναθέσει flag=0. 28 14

ΕΠΙΚΟΙΝΩΝΙΑ (17/49) Συνεπώς: µια διεργασία που επιθυµεί να εισέλθει στο κρίσιµο τµήµα καλεί την enter_region η enter_region διεκπεραιώνει την ενεργό αναµονή, θέτει το κλείδωµα και επιστρέφει µετά το πέρας του κρίσιµου τµήµατος, η διεργασία καλεί την leave_region η οποία αίρει το κλείδωµα. Το βασικό µειονέκτηµα και της µεθόδου του TSL είναι ότι: περιλαµβάνεται ενεργός αναµονή (busy waiting) στην περίπτωση που προσπαθήσει µια διεργασία να εισέλθει ανεπιτυχώς στο κρίσιµο τµήµα. 29 ΕΠΙΚΟΙΝΩΝΙΑ (18/49) 2.2.4 Απενεργοποίηση και αφύπνιση Το βασικότερο µειονέκτηµα των λύσεων Peterson και χρήσης TSL εντολής ήταν η ύπαρξη ενεργού αναµονής. Το πρόβληµα της ύπαρξης ενεργού αναµονής µπορεί να οδηγήσει και σε άλλες ανεπιθύµητες καταστάσεις, όπως την αντιστροφή προτεραιοτήτων (priority inversion problem) µεταξύ διεργασιών. 30 15

ΕΠΙΚΟΙΝΩΝΙΑ (19/49) Για την αποτροπή της ενεργού αναµονής αξιοποιείται ζεύγος κλήσεων συστήµατος: SLEEP (απενεργοποίηση): αναστέλλει την καλούσα διεργασία µέχρι να αφυπνισθεί εκ νέου από άλλη διεργασία WAKEUP (αφύπνιση): αφυπνίζει τη διεργασία που καθορίζεται από την παράµετρο της κλήσης. 31 ΕΠΙΚΟΙΝΩΝΙΑ (20/49) Το πρόβληµα παραγωγού-καταναλωτή Το πρόβληµα παραγωγού-καταναλωτή (producerconsumer) αποτελεί κλασικό πρόβληµα συγχρονισµού και εµφανίζεται όταν: η διεργασία-παραγωγός επιθυµεί να τοποθετήσει νέα δεδοµένα σε γεµάτη ενδιάµεση µνήµη η διεργασία-καταναλωτής επιθυµεί να αποσύρει δεδοµένα από άδεια ενδιάµεση µνήµη. 32 16

ΕΠΙΚΟΙΝΩΝΙΑ (21/49) Πρόβληµα αµοιβαίου αποκλεισµού Αιτία του προβλήµατος είναι η δυνατότητα ταυτόχρονης πρόσβασης στο κρίσιµο τµήµα, δηλαδή στη µεταβλητή που απαριθµεί το πλήθος των δεδοµένων στην ενδιάµεση µνήµη 33 ΕΠΙΚΟΙΝΩΝΙΑ (22/49) Αντιµετώπιση του προβλήµατος επιτυγχάνεται µε χρήση του ζεύγους κλήσεων SLEEP, WAKEUP. Τα στοιχεία που απαιτούνται είναι: count πλήθος δεδοµένων ενδιάµεσης µνήµης N SLEEP, WAKEUP enter_item remove_item µέγιστο πλήθος δεδοµένων ενδιάµεσης µνήµης κλήσεις συστήµατος τοποθέτηση δεδοµένων στην ενδιάµεση µνήµη απόσυρση δεδοµένων από την ενδιάµεση µνήµη 34 17

ΕΠΙΚΟΙΝΩΝΙΑ (23/49) Ηλειτουργία των διεργασιών παραγωγού και καταναλωτή περιλαµβάνει: Η διεργασία-παραγωγός απενεργοποιείται (SLEEP) όποτε η ενδιάµεση µνήµη είναι πλήρης. Η διεργασία-παραγωγός αφυπνίζεται (WAKEUP) από τη διεργασία-καταναλωτή, όταν αυτή καταναλώσει ένα ή περισσότερα δεδοµένα. Η διεργασία-καταναλωτής απενεργοποιείται (SLEEP) όποτε η ενδιάµεση µνήµη είναι άδεια. Η διεργασία-καταναλωτής αφυπνίζεται (WAKEUP) από τη διεργασία-παραγωγό, όταν αυτή τοποθετήσει ένα ή περισσότερα δεδοµένα. 35 ΕΠΙΚΟΙΝΩΝΙΑ (24/49) Σενάριο δηµιουργίας συνθήκης ανταγωνισµού, λόγω ανεξέλεγκτης πρόσβασης στη µεταβλητή count(1/2): Η διεργασία-καταναλωτής ελέγχει και βρίσκει τη µεταβλητή count=0. Πριν η διεργασία-καταναλωτής προλάβει να εκτελέσει SLEEP, ο χρονοδροµολογητής τη διακόπτει και εκτελεί τη διεργασία-παραγωγό. Η διεργασία-παραγωγός τοποθετεί ένα δεδοµένο στην ενδιάµεση µνήµη, εκτελεί count=count+1 και αφυπνίζει τη διεργασία-καταναλωτή. 36 18

ΕΠΙΚΟΙΝΩΝΙΑ (25/49) Σενάριο δηµιουργίας συνθήκης ανταγωνισµού, λόγω ανεξέλεγκτης πρόσβασης στη µεταβλητή count(2/2): Όµως η διεργασία-καταναλωτής δεν είναι απενεργοποιηµένη, συνεπώς το σήµα αφύπνισης χάνεται. Όταν επανεκτελεστεί η διεργασία-καταναλωτής, έχει ως τιµή count=0 και απενεργοποιείται. Η διεργασία-παραγωγός θα συνεχίσει να παράγει δεδοµένα µέχρι να γεµίσει η ενδιάµεση µνήµη, οπότε και θα απενεργοποιηθεί. Συνεπώς, τόσο η διεργασία-παραγωγός, όσο και η διεργασία-καταναλωτής θα παραµείνουν διαρκώς απενεργοποιηµένες. 37 ΕΠΙΚΟΙΝΩΝΙΑ (26/49) Αιτία της δηµιουργίας συνθήκης ανταγωνισµού, ήταν η αποστολή σήµατος αφύπνισης σε µη απενεργοποιηµένη διεργασία. Επίλυση του προβλήµατος θα µπορούσε να επιτευχθεί µε χρήση ψηφίου αναµένουσας αφύπνισης (wakeup waiting bit). Το ψηφίο αναµένουσας αφύπνισης γίνεται 1, όταν το αντίστοιχο σήµα αποστέλλεται, ενώ η διεργασία δεν είναι απενεργοποιηµένη. Όταν αργότερα η διεργασία επιχειρήσει να απενεργοποιηθεί, το ψηφίο θα λάβει τιµή 0 αλλά η διεργασία δε θα απενεργοποιηθεί. Το πρόβληµα παραµένει αν υπάρξουν περισσότερες από µία διεργασίες που αποστέλλουν σήµατα αφύπνισης. 38 19

ΕΠΙΚΟΙΝΩΝΙΑ (27/49) 2.2.5 Σηµαφόροι Οι σηµαφόροι επιλύουν το πρόβληµα της χαµένης αφύπνισης. Ο Dijkstra πρότεινε τη χρήση: µιας ακέραιας µεταβλητής, του σηµαφόρου ή σηµατοφορέα (semaphore), για την καταµέτρηση των σηµάτων αφύπνισης δύο θεµελιωδών αδιαίρετων λειτουργιών DOWN και UP που επιδρούν στο σηµαφόρο. 39 ΕΠΙΚΟΙΝΩΝΙΑ (28/49) Ητιµή του σηµαφόρου µπορεί να είναι: είτε µηδενική, αν δεν έχουν αποσταλεί σήµατα αφύπνισης είτε θετική, ίση µε το πλήθος των σηµάτων αφύπνισης. Όταν αρχίζει µία λειτουργία σε σηµαφόρο, αυτή διεξάγεται ως ατοµική ή αδιαίρετη ενέργεια (atomicity), δηλαδή καµία άλλη διεργασία δε µπορεί να έχει πρόσβαση σε αυτόν, µέχρι την ολοκλήρωση ή την αναστολή της λειτουργίας. 40 20

ΕΠΙΚΟΙΝΩΝΙΑ (29/49) Η DOWN ελέγχει: αν sem>0, τότε µειώνει την τιµή κατά ένα και συνεχίζει αν sem=0, τότε η καλούσα διεργασία απενεργοποιείται. Ατοµική ή αδιαίρετη ενέργεια θεωρούνται: ο έλεγχος, η µεταβολή της τιµής η πιθανή ενεργοποίηση. 41 ΕΠΙΚΟΙΝΩΝΙΑ (30/49) Η UP αυξάνει κατά 1 την τιµή του σηµαφόρου. Ατοµική ή αδιαίρετη ενέργεια θεωρούνται: η λειτουργία αύξησης του σηµαφόρου η απενεργοποίηση µιας διεργασίας. Μετά την UP, αν µία ή περισσότερες διεργασίες είχαν απενεργοποιηθεί µέσω του σηµαφόρου, τότε επιλέγεται κάποια από το σύστηµα ώστε να ολοκληρώσει τη DOWN λειτουργία της. 42 21

ΕΠΙΚΟΙΝΩΝΙΑ (31/49) Συνεπώς µετά την UP λειτουργία: ο σηµαφόρος θα συνεχίσει να έχει τιµή 0 οι εξαρτώµενες από αυτόν απενεργοποιηµένες διεργασίες θα είναι κατά µία λιγότερες. 43 ΕΠΙΚΟΙΝΩΝΙΑ (32/49) Υλοποίηση των DOWN και UP Οι DOWN και UP υλοποιούνται ως κλήσεις συστήµατος. Σε περίπτωση πολλαπλών CPUs απαιτείται η διασφάλιση ότι µία µόνο CPU τη φορά έχει πρόσβαση στο sem. Συνεπώς κάθε sem πρέπει να προστατεύεται από µεταβλητή κλειδώµατος, µε χρήση εντολής TSL 44 22

ΕΠΙΚΟΙΝΩΝΙΑ (33/49) Εφαρµογές Για την απαγόρευση των διακοπών σε σύστηµα µε σηµαφόρους, αξιοποιείται sem µε αρχική τιµή 0, για κάθε συσκευή εισόδου/εξόδου. Μετά την εκκίνηση µιας τέτοιας συσκευής, η διεργασία διαχείρισης της συσκευής εκτελεί DOWN στον αντίστοιχο sem και αναστέλλεται. Το σήµα διακοπής κάνει το χειριστή διακοπών να εκτελέσει UP στον αντίστοιχο sem, ο οποίος κάνει εκ νέου τη σχετική διεργασία έτοιµη να εκτελεστεί. 45 ΕΠΙΚΟΙΝΩΝΙΑ (34/49) Χρήση σηµαφόρων στη λύση του προβλήµατος παραγωγού-καταναλωτή Οι σηµαφόροι επιλύουν το πρόβληµα της χαµένης αφύπνισης. Το αδιαίρετο της υλοποίησης των σηµαφόρων επιτυγχάνεται µε την υλοποίηση των λειτουργιών UP και DOWN ως κλήσεων συστήµατος. 46 23

ΕΠΙΚΟΙΝΩΝΙΑ (35/49) Με τον τρόπο αυτόν απαγορεύονται οι διακοπές: για όσο χρόνο ο σηµαφόρος ελέγχεται και ενηµερώνεται για όσο χρόνο απαιτείται για απενεργοποίηση της διεργασίας. Στην περίπτωση που διαθέτουµε πολλές CPUs, κάθε σηµαφόρος πρέπει να προστατεύεται από µια µεταβλητή κλειδώµατος, ώστε η TSL εντολή να εξασφαλίζει ότι µία µόνο CPU τη φορά έχει πρόσβαση στο σηµαφόρο. 47 ΕΠΙΚΟΙΝΩΝΙΑ (36/49) 2.2.6 Μετρητές συµβάντων Ο µετρητής συµβάντων Ε (event counter), είναι ένας ειδικός τύπος µεταβλητής µε τιµή πάντοτε µεγαλύτερη από µηδέν και πάντοτε αυξανόµενη. 48 24

ΕΠΙΚΟΙΝΩΝΙΑ (37/49) Για τον Ε ορίζονται οι ακόλουθες λειτουργίες: Read(E): επιστρέφει την τρέχουσα τιµή του Ε Advance(E): αυξάνει την τιµή του Ε κατά 1 Await(E,v): αναµένει µέχρι ο Ε να αποκτήσει τιµή µεγαλύτερη ή ίση µε ν Οι µετρητές συµβάντων µπορούν να χρησιµοποιηθούν στο πρόβληµα παραγωγούκαταναλωτή. 49 ΕΠΙΚΟΙΝΩΝΙΑ (38/49) Χρησιµοποιούνται οι µετρητές συµβάντων in και out. Η τιµή του in εκφράζει το πλήθος των δεδοµένων που αποθήκευσε ο παραγωγός στην ενδιάµεση µνήµη από την έναρξη του προγράµµατος. Η τιµή του out εκφράζει το πλήθος των δεδοµένων που κατανάλωσε ο καταναλωτής από την ενδιάµεση µνήµη µέχρι τώρα. 50 25

ΕΠΙΚΟΙΝΩΝΙΑ (39/49) Ο παραγωγός βασίζει τη λειτουργία του στην ακόλουθη λογική: όταν ετοιµάσει ένα δεδοµένο ελέγχει το διαθέσιµο χώρο στην ενδιάµεση µνήµη µε την κλήση AWAIT αρχικά out=0, συνεπώς ο παραγωγός δεν αναστέλλει τη λειτουργία του αν παραχθούν Ν+1 δεδοµένα πριν την εκκίνηση του καταναλωτή, τότε η κλήση AWAIT θα οδηγήσει σε αναµονή µέχρις ότου out=1 O καταναλωτής βασίζει τη λειτουργία του στην ακόλουθη λογική: αποσύρει το κ-στό δεδοµένο µόνον όταν in=k, δηλαδή όταν ο παραγωγός έχει αποθέσει k δεδοµένα στην ενδιάµεση µνήµη. 51 ΕΠΙΚΟΙΝΩΝΙΑ (40/49) 2.2.7 Παρακολουθητές (ελεγκτές) Παρακολουθητής (monitor) είναι µία αρχή συγχρονισµού υψηλότερου επιπέδου. Αποτελεί µια συλλογή από διαδικασίες, µεταβλητές και δοµές δεδοµένων, που οµαδοποιούνται σε έναν ειδικό τύπο ενότητας ή πακέτου. Οι διεργασίες µπορούν να καλούν τις διαδικασίες ενός παρακολουθητή, αλλά δε µπορούν να προσπελάσουν άµεσα τις εσωτερικές δοµές δεδοµένων ενός παρακολουθητή, από διαδικασίες που ορίστηκαν εκτός αυτού. 52 26

ΕΠΙΚΟΙΝΩΝΙΑ (41/49) Ηχρησιµότητα των παρακολουθητών στην επίτευξη αµοιβαίου αποκλεισµού βασίζεται στο γεγονός ότι µία µόνο διεργασία κάθε στιγµή µπορεί να είναι ενεργή σε έναν παρακολουθητή. Αυτό υλοποιείται µε τη βοήθεια του µεταγλωττιστή, ο οποίος γνωρίζει το είδος τους και χειρίζεται µε διαφορετικό τρόπο διαδικασία παρακολουθητή από άλλες διαδικασίες. Συνεπώς είναι ευθύνη του µεταγλωττιστή η υλοποίηση αµοιβαίου αποκλεισµού κατά την είσοδο σε παρακολουθητή. 53 ΕΠΙΚΟΙΝΩΝΙΑ (42/49) Οπρογραµµατιστής: δε χρειάζεται να γνωρίζει τον τρόπο που ο µεταγλωττιστής επιτυγχάνει τον αµοιβαίο αποκλεισµό αρκεί να γνωρίζει ότι µετατρέποντας τα κρίσιµα τµήµατα σε διαδικασίες παρακολουθητή, δύο διεργασίες δεν πρόκειται να εκτελέσουν ταυτόχρονα τα κρίσιµα τµήµατά τους. 54 27

ΕΠΙΚΟΙΝΩΝΙΑ (43/49) Βασικό πλεονέκτηµα των παρακολουθητών: Οι παρακολουθητές αυτοµατοποιούν τη διαδικασία αµοιβαίου αποκλεισµού των κρισίµων τµηµάτων, συνεπώς επιτρέπουν παράλληλο προγραµµατισµό µε λιγότερα σφάλµατα. Βασικό µειονέκτηµα των παρακολουθητών: Οι παρακολουθητές είναι στοιχείο (concept) της ίδιας της γλώσσας προγραµµατισµού, αφού ο µεταγλωττιστής πρέπει να τους αναγνωρίζει και να προγραµµατίζει τον αµοιβαίο αποκλεισµό. Συνεπώς πρέπει να ενσωµατωθούν στοιχεία σε µεταγλωττιστές, ώστε αυτοί να γνωρίζουν ποιες διαδικασίες είναι του παρακολουθητή και ποιες όχι. 55 ΕΠΙΚΟΙΝΩΝΙΑ (44/49) 2.2.8 Μεταβίβαση µηνύµατος Η µέθοδος µεταβίβασης µηνύµατος (message passing) υλοποιεί διαδιεργασιακή επικοινωνία µε χρήση των αρχών SEND και RECEIVE. Οι κλήσεις αυτές συστήµατος µπορούν εύκολα να ενσωµατωθούν σε διαδικασίες βιβλιοθήκης, όπως: send (destination, &message) receive (source, &message) 56 28

ΕΠΙΚΟΙΝΩΝΙΑ (45/49) Ζητήµατα σχεδίασης σε συστήµατα µεταβίβασης µηνύµατος Ζήτηµα 1 Σε περίπτωση που ανταλλάσσονται µηνύµατα στο δίκτυο, πρέπει να επιλυθεί το πρόβληµα που µπορεί να ανακύψει:» είτε από την απώλεια ενός µηνύµατος» είτε από την απώλεια του µηνύµατος επιβεβαίωσης λήψης ενός µηνύµατος (acknowledgement message) 57 ΕΠΙΚΟΙΝΩΝΙΑ (46/49) Ζήτηµα 2 Πρέπει να επιλυθεί το πρόβληµα της ονοµατοδοσίας των διεργασιών. Τα συνήθη προτεινόµενα σχήµατα είναι:» process@machine» process@machine:domain. Ζήτηµα 3 Απαιτείται η αµοιβαία επιβεβαίωση της ταυτότητας των επικοινωνούντων σε ένα σύστηµα. 58 29

ΕΠΙΚΟΙΝΩΝΙΑ (47/49) Το πρόβληµα παραγωγού-καταναλωτή µε µεταβίβαση µηνύµατος Ο καταναλωτής αποστέλλει Ν άδεια µηνύµατα ίδιου µεγέθους προς τον παραγωγό. Όποτε ο παραγωγός έχει έτοιµο ένα δεδοµένο, παίρνει άδειο µήνυµα και το στέλνει πίσω γεµάτο. Υπάρχει περίπτωση να αναστείλει τη λειτουργία του είτε ο καταναλωτής, είτε ο παραγωγός. 59 ΕΠΙΚΟΙΝΩΝΙΑ (48/49) Η διευθυνσιοδότηση µηνυµάτων µπορεί να γίνει µε χρήση µιας νέας δοµής δεδοµένων, του γραµµατοκιβωτίου (mailbox). Η διεύθυνση αποστολής ενός µηνύµατος δεν αντιστοιχεί σε διεργασία αλλά σε γραµµατοκιβώτιο. Το γραµµατοκιβώτιο αποτελεί µέρος προσωρινής αποθήκευσης συγκεκριµένου αριθµού µηνυµάτων, που καθορίζεται µε τη δηµιουργία του γραµµατοκιβωτίου. Στο πρόβληµα παραγωγού-καταναλωτή και οι δύο διεργασίες δηµιουργούν γραµµατοκιβώτια Ν µηνυµάτων. 60 30

ΕΠΙΚΟΙΝΩΝΙΑ (49/49) 2.2.9 Ισοδυναµία αρχών Μπορεί να αποδειχθεί ότι οι διάφορες αρχές διαδιεργασιακής επικοινωνίας είναι µεταξύ τους ισοδύναµες, δηλαδή: σηµαφόροι παρακολουθητές µεταβίβαση µηνυµάτων 61 2.3 ΠΡΟΒΛΗΜΑΤΑ ΙΑ ΙΕΡΓΑΣΙΑΚΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ (1/3) 2.3.1 Το πρόβληµα των Συνδαιτηµόνων Φιλοσόφων Οι φιλόσοφοι είτε τρώνε είτε σκέφτονται Χρειάζονται 2 πιρούνια Σηκώνουν ένα πιρούνι τη φορά Πως θα αποφευχθεί το αδιέξοδο 62 31

2.3 ΠΡΟΒΛΗΜΑΤΑ ΙΑ ΙΕΡΓΑΣΙΑΚΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ (2/3) 2.3.2 Το πρόβληµα των Αναγνωστών και των Εγγραφέων Αναγνώστης Αναγνώστης Εγγραφέας Εγγραφέας Εγγραφέας Αναγνώστης Βάση Αναγνώστης Semaphore Down Counter 4 Mutex Up 63 2.3 ΠΡΟΒΛΗΜΑΤΑ ΙΑ ΙΕΡΓΑΣΙΑΚΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ (3/3) 2.3.3 Το πρόβληµα του Κοιµώµενου Κουρέα Σηµαφόροι (3) Customers Barbers Mutex Μεταβλητές Waiting Σηµαντική ιαφορά Barbers σε βρόγχο Customers δεν είναι σε βρόγχο 64 32

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (1/20) Χρονοδροµολογητής ή χρονοπρογραµµατιστής (scheduler) είναι το τµήµα του Λ.Σ. το οποίο είναι επιφορτισµένο µε την ευθύνη της απόφασης ποια εκτελέσιµη διεργασία θα εκτελεστεί πρώτη. Ο αλγόριθµος που χρησιµοποιείται από το χρονοδροµολογητή λέγεται αλγόριθµος χρονοδροµολόγησης (scheduling algorithm). Η συνήθης ακολουθητέα στρατηγική, είναι η στρατηγική αναστολής εκτέλεσης εκτελέσιµων διεργασιών και καλείται χρονοδροµολόγηση προεκχώρησης (preemptive scheduling). 65 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (2/20) Μεγάλο χρονικό διάστηµα ενεργοποίησης της CPU Σύντοµο διάστηµα ενεργοποίησης της CPU Αναµονή για I/O Χρόνος 66 33

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (3/20) Τα κριτήρια επιλογής αλγορίθµων χρονοδροµολόγησης είναι: δικαιοσύνη (fairness) µεταξύ των διεργασιών αποδοτικότητα (efficiency) στην αξιοποίηση της CPU χρόνος απόκρισης (response time) για διαλογικούς χρήστες κύκλος διεκπεραίωσης (turnaround) για χρήστες συστήµατος δέσµης ρυθµός απόδοσης (throughput) εργασιών που επεξεργάζεται ένα σύστηµα. Η επιλογή δεν είναι απλοϊκή, αφού ορισµένα από αυτά τα κριτήρια είναι αντικρουόµενα. 67 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (4/20) 2.4.1 Χρονοδροµολόγηση Εξυπηρέτησης εκ Περιτροπής Σύµφωνα µε τον αλγόριθµο εξυπηρέτησης εκ περιτροπής (round robin scheduling), σε κάθε διεργασία εκχωρείται χρονικό διάστηµα - κβάντο (quantum) στα όρια του οποίου επιτρέπεται η εκτέλεσή της. Αν η διεργασία δεν ολοκληρωθεί µέχρι το τέλος του χρονικού αυτού διαστήµατος, τότε η CPU προεκχωρείται σε άλλη διεργασία, δηλαδή λαµβάνει χώρα εναλλαγή διεργασιών (process switch) ή µεταγωγή περιβάλλοντος (context switch). Τρέχουσα διεργασία Επόµενη διεργασία Τρέχουσα διεργασία 68 34

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (5/20) Αν η διεργασία ολοκληρωθεί πριν το τέλος του χρονικού διαστήµατος που της είχε ανατεθεί η CPU, τότε ο αλγόριθµος χρονοδροµολόγησης αναθέτει την CPU στην επόµενη στην ουρά διεργασία. Σηµαντική παράµετρο αποτελεί η επιλογή του µεγέθους του κβάντου χρόνου (τυπική τιµή κβάντου 100msec). 69 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (6/20) 2.4.2 Χρονοδροµολόγηση Προτεραιοτήτων Η απαίτηση να ληφθεί υπόψη ότι όλες οι διεργασίες δεν είναι εξίσου σηµαντικές και η ανάγκη να ληφθούν υπόψη και εξωτερικοί παράγοντες, οδηγούν στη σχεδίαση χρονοδροµολόγηση προτεραιοτήτων (priority scheduling). Σε κάθε διεργασία ανατίθεται µία προτεραιότητα και εκτελείται η διεργασία µε την υψηλότερη προτεραιότητα. Για την αποτροπή επ άπειρο εκτέλεσης διεργασιών υψηλής προτεραιότητας, ο χρονοδροµολογητής µειώνει την προτεραιότητα της τρέχουσας διεργασίας σε κάθε διακοπή ρολογιού. 70 35

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (7/20) Οι προτεραιότητες µπορούν να ανατεθούν είτε στατικά είτε δυναµικά. Για παράδειγµα, οι διεργασίες που είναι ισχυρά εξαρτώµενες από είσοδο/έξοδο (I/O bound) πρέπει να έχουν υψηλή προτεραιότητα, ώστε να αποτρέπεται µακρά αναµονή ολοκλήρωσης εισόδου/εξόδου, η οποία θα οδηγούσε σε µακρά κατάληψη µνήµης. Ένας τυπικός αλγόριθµος καλής εξυπηρέτησης, αναθέτει προτεραιότητα: 1/f, όπου f είναι το µέρος του κβάντου χρόνου που χρησιµοποιήθηκε από τη διεργασία την τελευταία φορά. 71 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (8/20) Υβριδικό σχήµα περιλαµβάνει την οµαδοποίηση διεργασιών σε κλάσεις προτεραιοτήτων (priority classes). Χρησιµοποιείται ταυτόχρονα: χρονοδροµολόγηση προτεραιοτήτων µεταξύ των κλάσεων χρονοδροµολόγηση εξυπηρέτησης εκ περιτροπής µεταξύ των διεργασιών της ίδιας κλάσης. Με τον αλγόριθµο αυτό, µπορεί να εµφανισθεί το πρόβληµα της παρατεταµένης στέρησης πόρων (starvation) της CPU για κάποιες διεργασίες. 72 36

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (9/20) 2.4.3 Πολλαπλές Ουρές Σε όλους τους αλγορίθµους εναλλαγής διεργασιών, σηµαντική σχεδιαστική παράµετρο αποτελεί η επιλογή του µεγέθους του κβάντου χρόνου Επιλογή µεταξύ πλήθους εναλλαγών έναντι υψηλών χρόνων απόκρισης. 73 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (10/20) Μία αποτελεσµατική επιλογή είναι η λύση των πολλαπλών ουρών (multiple queues) - κλάσεων προτεραιοτήτων: οι διεργασίες της ουράς υψηλότερης κλάσης εκτελούνται για ένα κβάντο χρόνου οι διεργασίες της ουράς της επόµενης κλάσης εκτελούνται για δύο κβάντα χρόνου όταν µια διεργασία χρησιµοποιεί όλο το κβάντο χρόνου που της ανατίθεται, υποβιβάζεται κατά µία κλάση. 74 37

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (11/20) Τα πλεονεκτήµατα της µεθόδου αυτής είναι: απαιτείται µικρότερος αριθµός εναλλαγών, σε σχέση µε τον αλγόριθµο εξυπηρέτησης εκ περιτροπής όσο µια µεγάλη διεργασία βυθίζεται βαθύτερα στις ουρές προτεραιοτήτων, τόσο ευνοείται η ολοκλήρωση µικρών διαλογικών διεργασιών. 75 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (12/20) 2.4.4 Η Συντοµότερη Εργασία Πρώτη Για συστήµατα εργασιών δέσµης (batch jobs), ο συνηθέστερος αλγόριθµος είναι ο αλγόριθµος χρονοδροµολόγησης πρώτα-ησυντοµότερη-εργασία (shortest-job-first scheduling). 76 38

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (13/20) Στα συστήµατα αυτά, ελαχιστοποιείται ο µέσος χρόνος διεκπεραίωσης (turnaround time). Αν θεωρήσουµε την εκτέλεση κάθε εντολής ως ξεχωριστή εργασία, τότε ο αλγόριθµος αυτός θα µπορούσε να χρησιµοποιηθεί και για διαλογικές εργασίες. Το πρόβληµα, όµως, που παραµένει είναι ποια από τις εκτελέσιµες εργασίες είναι η συντοµότερη. 77 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (14/20) Ητεχνική που ακολουθείται είναι γνωστή ως ωρίµανση (aging). Σύµφωνα µε την τεχνική της ωρίµανσης, η εκτίµηση της διάρκειας ζωής µιας διεργασίας βασίζεται στην παρελθούσα συµπεριφορά των εργασιών. Έστω ότι ο εκτιµώµενος, για κάποιο τερµατικό, χρόνος ανά εντολή είναι T 0 και ο επόµενος χρόνος εκτέλεσης µετράται σε T 1. Μπορούµε να ανανεώσουµε την εκτίµησή µας, θεωρώντας ως νέα εκτίµηση το σταθµισµένο άθροισµα (weighted sum) των προηγούµενων τιµών, δηλαδή: at 0 + (1-a)T 1 Η τιµή του a µπορεί να καθορίσει την ταχύτητα προσαρµογής στα νέα δεδοµένα, ξεχνώντας παλαιές εκτιµήσεις και εκτελέσεις. 78 39

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (15/20) 2.4.5 Εγγυηµένος Χρονοπρογραµµατισµός Η τεθείσα απαίτηση είναι η συνολική υπολογιστική ισχύς να ισοκατανέµεται στους χρήστες (policy-driven scheduling). Συνεπώς απαιτείται γνώση: του χρόνου που η CPU διατέθηκε για τις διεργασίες κάθε χρήστη του χρόνου που ο κάθε χρήστης είναι συνδεδεµένος στο σύστηµα. Ο αλγόριθµος αυτός µπορεί να χρησιµοποιηθεί σε συστήµατα πραγµατικού χρόνου (real-time systems), όπου τίθενται περιορισµοί, οι οποίοι πρέπει να επιτευχθούν. 79 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (16/20) 2.4.6 Πολιτικές έναντι µηχανισµών Συχνά, είναι επιθυµητό να επηρεάζεται από το χρήστη η απόφαση χρονοδροµολόγησης. Για παράδειγµα, υπάρχουν περιπτώσεις που µια γονική διεργασία επιθυµεί να αποφασίσει ποια από τις θυγατρικές διεργασίες είναι χρονικά κρίσιµη. 80 40

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (17/20) Ηλύση στο πρόβληµα αυτό, περιλαµβάνει το διαχωρισµό: του µηχανισµού χρονοδροµολόγησης (scheduling mechanism) από την πολιτική χρονοδροµολόγησης (scheduling policy). Με την ύπαρξη σχετικής κλήσης συστήµατος, θα µπορούσε η διεργασία του χρήστη να χαράσσει την πολιτική, αλλά ο ακολουθούµενος µηχανισµός ορίζεται από τον πυρήνα. 81 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (18/20) 2.4.7 Χρονοπρογραµµατισµός δύο επιπέδων Επειδή ο διατιθέµενος χώρος µνήµης είναι πεπερασµένος, υπάρχει περίπτωση κάποιες από τις διεργασίες να φυλάσσονται στο δίσκο. Το γεγονός αυτό έχει ως αποτέλεσµα να εµφανίζονται προβλήµατα από τον απαιτούµενο υψηλό χρόνο εναλλαγής των διεργασιών που βρίσκονται στο δίσκο. 82 41

2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (19/20) Ηλύση στο πρόβληµα είναι η σχεδίαση και αξιοποίηση χρονοδροµολογητή δύο επιπέδων (two-level scheduler): ο χρονοδροµολογητής χαµηλού επιπέδου (low level scheduler) ασχολείται µε την επιλογή εκτελέσιµων διεργασιών που βρίσκονται εκείνη τη στιγµή στην κύρια µνήµη ο χρονοδροµολογητής υψηλού επιπέδου (high level scheduler) ασχολείται µε τη µετακίνηση εκτελέσιµων διεργασιών από το δίσκο στη µνήµη και αντιστρόφως. 83 2.4 ΧΡΟΝΟ ΡΟΜΟΛΟΓΗΣΗ ΙΕΡΓΑΣΙΏΝ (20/20) Τα κριτήρια που λαµβάνει υπόψη του ο χρονοδροµολογητής µπορεί να περιλαµβάνουν τα εξής: πόσος χρόνος πέρασε από την εκτόπιση ή την επαναφορά της διεργασίας πόσο χρόνο της CPU χρησιµοποίησε τελευταία η διεργασία πόσο µεγάλης διάρκειας είναι η διεργασία πόσο υψηλή προτεραιότητα έχει η διεργασία. 84 42