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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ"

Transcript

1 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 4 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση την παρακάτω βιβλιογραφία που αποτελεί και το βασικό εγχειρίδιο αναφοράς. Βιβλιογραφία: Σύγχρονα Λειτουργικά Συστήματα, A.S. Tanenbaum, 3 η έκδ., Κλειδάριθμος, Λειτουργικά Συστήματα, W. Stallings, 8 η έκδ., Τζιόλα, Λειτουργικά Συστήματα, A. Silberschatz, P. Galvin, G. Gagne, 7 η εκδ., ΙΩΝ, 2007.

2 Στόχοι Η διάλεξη αυτή έχει ως στόχο να εισάγει τον σπουδαστή στα προβλήματα συνεργασίας και επικοινωνίας μεταξύ των διεργασιών/νημάτων, και ειδικότερα: να γνωρίσει τα προβλήματα συγχρονισμού των διεργασιών/νημάτων και τις μεθόδους που χρησιμοποιούνται για την αντιμετώπισή τους να είναι σε θέση να εφαρμόσει τις παραπάνω μεθόδους για να επιλύσει προβλήματα να γνωρίσει κλασικά προβλήματα συγχρονισμού και τις προτεινόμενες λύσεις 2

3 Ενότητες Συγχρονισμός και συνεργασία διεργασιών Προβλήματα συγχρονισμού Λύσεις συγχρονισμού Απαιτήσεις της λύσης του κρίσιμου τμήματος Αμοιβαίος αποκλεισμός και υλοποιήσεις Σημαφόροι Δυαδικοί σημαφόροι ή mutexes Κλασικά προβλήματα συγχρονισμού Ελεγκτές ή παρακολουθητές και μεταβλητές συνθήκης Διαδιεργασιακή επικοινωνία Ερωτήσεις 3

4 Συγχρονισμός και συνεργασία διεργασιών (Process synchronization) Σε ένα ΛΣ ενός ή περισσοτέρων επεξεργαστών πολλαπλές διεργασίες ή νήματα που εκτελούνται ταυτόχρονα ή παράλληλα, μπορούν να έχουν πρόσβαση (ανάγνωση/εγγραφή) σε κοινούς πόρους στη μνήμη, κοινά δεδομένα (data sharing) π.χ. καθολικές μεταβλητές, αρχεία, συσκευές Ε/Ε. Αυτός ο διαμοιρασμός της κύριας μνήμης και πόρων (resource sharing) μεταξύ διεργασιών είναι χρήσιμος για την εξασφάλιση της αποδοτικής αλληλεπίδρασης (συνεργασίας) μεταξύ των διεργασιών. Πηγή εικόνας:

5 Αυτή η δυνατότητα πρόσβασης σε κοινά δεδομένα είναι ακόμα πιο εύκολη για τα νήματα (threads) που εκτελούνται ταυτόχρονα ή παράλληλα μέσα σε μια διεργασία (process), καθώς αυτά μοιράζονται τον κοινό χώρο διευθύνσεων και πόρων αυτής. Νήματα βέβαια διαφορετικών χώρων διευθύνσεων (δηλ. διαφορετικών διεργασιών) ακολουθούν παρομοίως τους κανόνες πρόσβασης και διαμοιρασμού των πόρων που ισχύουν για τις διεργασίες. 5

6 Προβλήματα συγχρονισμού της πρόσβασης σε κοινά δεδομένα Όμως προκύπτουν προβλήματα διαχείρισης της πρόσβασης σε διαμοιραζόμενους πόρους, με συνέπεια την αναγκαιότητα ελέγχου και συγχρονισμού αυτής της πρόσβασης για την προστασία των διαμοιραζόμενων πόρων και για την αξιόπιστη επεξεργασία αυτών. Σύνηθες πρόβλημα είναι της ανακολουθίας ή ασυνέπειας των δεδομένων και φυσικά και των αποτελεσμάτων (data inconsistency). Το πρόβλημα αυτό της μη συνεπής χρήσης των δεδομένων μπορεί να προκύψει στις διεργασίες και νήματα που έχουν (ταυτόχρονη) πρόσβαση σε όλες τις καθολικές μεταβλητές (shared data) και τα κοινά δυναμικά δεδομένα ενός προγράμματος στη μνήμη. Στη συνέχεια εξετάζονται δύο χαρακτηριστικές καταστάσεις οι οποίες οδηγούν σε τέτοιου είδους προβλήματα. 6

7 Δύο χαρακτηριστικές καταστάσεις από τις οποίες προκύπτουν προβλήματα είναι οι ακόλουθες: (α) Η διακοπή της εκτέλεσης του κώδικα μιας διεργασίας (interrupt), χωρίς να έχει προλάβει να ολοκληρώσει την επεξεργασία της όσον αφορά τα κοινά δεδομένα. Όσο περιμένει κάποια άλλη ενδέχεται να τα τροποποιήσει. program2 (β) Δύο ή περισσότερες διεργασίες προσπαθούν να προσπελάσουν ταυτόχρονα (την ίδια χρονική στιγμή) κοινόχρηστα δεδομένα (shared data). 7

8 (α) Κατάσταση όπου η εκτέλεση του κώδικα μιας διεργασίας διακοπεί (interrupt), ίσως και περισσότερες φορές, σε οποιοδήποτε σημείο, από τις ρουτίνες χειρισμού διακοπών (interrupt handler), για την εξυπηρέτηση κάποιας άλλης κλήσης ή για άλλους λόγους, χωρίς να έχει προλάβει να ολοκληρώσει την επεξεργασία της όσον αφορά τα κοινά δεδομένα. Σε αυτή την περίπτωση το πρόβλημα το οποίο είναι πιθανό να συμβεί είναι κάποια άλλη διεργασία να προχωρήσει στην επεξεργασία αυτών των κοινών δεδομένων, με αποτέλεσμα να έχουμε αποτυχία στη διασφάλιση της ακεραιότητας των δεδομένων (ασυνέπεια δεδομένων, data inconsistency). Π.χ. μια διεργασία (P1) ενώ πραγματοποιούσε ενημέρωση κάποιας καθολικής μεταβλητής (v) διακόπηκε χωρίς να έχει ολοκληρώσει. Στη συνέχεια κάποια άλλη διεργασία (P2) την τροποποιεί, με συνέπεια όταν η αρχική επανέλθει να συνεχίσει, αυτό το δεδομένο να έχει διαφορετικό περιεχόμενο, και έτσι να αποτελέσει πρόβλημα στην ορθότητα της εκτέλεσής της και των αποτελεσμάτων της. data shared v 8

9 (β) Κατάσταση όπου δύο ή περισσότερες διεργασίες προσπαθούν να προσπελάσουν ταυτόχρονα (την ίδια χρονική στιγμή) κοινόχρηστα δεδομένα (shared data). Αναφέρεται και ως κατάσταση συναγωνισμού (race condition). Σε αυτή την περίπτωση το πρόβλημα το οποίο είναι πιθανό να συμβεί είναι και πάλι η ενδεχόμενη ανακολουθία στην επεξεργασία των δεδομένων (ασυνέπεια των δεδομένων/αποτελεσμάτων). Π.χ. μια διεργασία (B) διαβάζει μια καθολική μεταβλητή (v) ενώ κάποια άλλη διεργασία (A) τη γράφει, ή περισσότερες από μια διεργασίες την τροποποιούν την ίδια στιγμή. v v Η τελική τιμή των κοινών δεδομένων εξαρτάται από το πως θα δρομολογηθεί από το ΛΣ η επιμέρους εκτέλεση του κώδικα των διεργασιών (process scheduling). 9

10 Παράδειγμα: πρόσβαση σε κοινή μεταβλητή (shared variable) Έστω πως δύο νήματα εκτελούν τον παρακάτω κώδικα: int i=0; /* κοινή μεταβλητή */ void body { i++; } Ερώτημα: ποια η τιμή της μεταβλητής i αφού εκτελεσθούν τα δυο νήματα; Απάντηση: μπορεί να είναι 1 ή 2, δεν το γνωρίζουμε, καθώς η κάθε εκτέλεση μπορεί να δίνει διαφορετικό αποτέλεσμα. Αυτό συμβαίνει διότι η εκτέλεση της εντολής i++ δεν είναι (εγγυημένα) ατομική (atomic), δηλαδή χωρίς να υπάρχει πιθανότητα διακοπής της, και έτσι να μεσολαβεί και να συνεχίζει η άλλη διεργασία και να μεταβάλλει το περιεχόμενό της. 10

11 Η εντολή i++ μεταφράζεται σε γλώσσα μηχανής. Συμβολικά (pseudo-assembly) θα μπορούσε να έχει ως εξής: regx = mem[i_adr]; - φόρτωση του περιεχομένου μνήμης της i regx = regx+1; - αύξηση του περιεχομένου της +1 mem[i_adr] = regx; - τοποθέτηση του αποτελέσματος στην i Σενάρια εκτέλεσης Αρχικά η μεταβλητή i έχει την τιμή 0. Η εκτέλεση εξαρτάται από την (τυχαία) χρονοδρομολόγηση του ΛΣ. Η σειριακή εκτέλεση του κώδικα των διεργασιών ενδέχεται να δίνει διαφορετικό αποτέλεσμα από μια διαπλεκόμενη εκτέλεσή του. Σενάριο Α (serial) thread 1: reg1 = mem[i_adr]; thread 1: reg1 = reg+1; thread 1: mem[i_adr] = reg1; thread 2: reg2 = mem[i_adr]; thread 2: reg2 = reg2+1; thread 2: mem[i_adr] = reg2; Η μεταβλητή i παίρνει την τιμή 2 Σενάριο Β (interleaved) thread 1: reg1 = mem[i_adr]; thread 1: reg1 = reg+1; thread 2: reg2 = mem[i_adr]; thread 2: reg2 = reg2+1; thread 2: mem[i_adr] = reg2; thread 1: mem[i_adr] = reg1; Η μεταβλητή i παίρνει την τιμή 1 The results of computations depends on the order in which these operations are performed.

12 Λύσεις συγχρονισμού της πρόσβασης σε κοινά δεδομένα Μηχανισμοί (μέθοδοι) που διαχειρίζονται και ελέγχουν την πρόσβαση των διεργασιών/νημάτων σε διαμοιραζόμενους πόρους, εξασφαλίζοντας την προστασία των διαμοιραζόμενων πόρων και την αξιοπιστία της επεξεργασίας τους. Κοινό χαρακτηριστικό των μηχανισμών αποτελεί η αποτροπή σε περισσότερες από μια διεργασίες να προσπελάζουν κοινά δεδομένα την ίδια χρονική στιγμή, το οποίο αναφέρεται ως αμοιβαίος αποκλεισμός (mutual exclusion). Αυτό εξασφαλίζει ότι αν ο κώδικας μιας διεργασίας προσπελάζει και επεξεργάζεται κάποια κοινά δεδομένα, π.χ. μια κοινή μεταβλητή ή αρχείο, όλες οι υπόλοιπες διεργασίες θα αποκλείονται από την εκτέλεση του δικού τους κώδικα που προσπελάζει και επεξεργάζεται αυτά τα κοινά δεδομένα. Το τμήμα του κώδικα σε μια διεργασία, από το οποίο γίνεται η προσπέλαση της κοινής μνήμης και της επεξεργασίας των κοινών δεδομένων εκεί, ονομάζεται κρίσιμο τμήμα (critical section).

13 Συμπερασματικά, όταν ένας αριθμός από Ν διεργασίες εκτελούνται ταυτόχρονα και επιθυμούν να χρησιμοποιήσουν κάποια κοινά δεδομένα, αυτό σημαίνει ότι κάθε μια από αυτές διαθέτει ένα κρίσιμο τμήμα στον κώδικά της από το οποίο προσπελάζει και επεξεργάζεται τα κοινά δεδομένα. Συνεπώς, για την αποτροπή των προβλημάτων από τις καταστάσεις συναγωνισμού κ.α. κατά την πρόσβαση στα κοινά δεδομένα, οι διεργασίες στα κρίσιμα τμήματά τους θα πρέπει να συγχρονίζονται (process synchronization). Κανονικός Κώδικας (δεν τίθεται θέμα συγχρονισμού) Κρίσιμο Τμήμα (critical section) Κανονικός Κώδικας (δεν τίθεται θέμα συγχρονισμού) Σημείωση: Ο προγραμματιστής θα πρέπει να επιδιώκει τη μείωση του χρόνου εκτέλεσης του κρίσιμου τμήματος, καθώς αυτό θα αυξήσει τον ταυτοχρονισμό, αφού θα μειωθεί ο χρόνος που περιμένουν οι υπόλοιπες διεργασίες/νήματα, και συνεπώς στη μονάδα του χρόνου περισσότερες θα εισέλθουν στο δικό τους κρίσιμο τμήμα και θα το εκτελέσουν.

14 Πηγή εικόνας:

15 Ορισμένοι από τους μηχανισμούς που εξασφαλίζουν τον συγχρονισμό των διεργασιών είναι γνωστοί ως: semaphores, mutexes, conditions. Η υλοποίηση αυτών των μεθόδων αποτελεί τμήμα κώδικα (συναρτήσεων) που ελέγχει την πρόσβαση στα κοινά δεδομένα, την δέσμευση (κώδικας εισόδου) και αποδέσμευση (κώδικας εξόδου) αυτών, και ο οποίος εμπερικλείει το κρίσιμο τμήμα της εκάστοτε διεργασίας που συγχρονίζεται. Κανονικός Κώδικας (δεν τίθεται θέμα συγχρονισμού) Κρίσιμο Τμήμα (critical section) Κανονικός Κώδικας (δεν τίθεται θέμα συγχρονισμού) Κώδικας Εισόδου (entry code) Κώδικας Εξόδου (exit code) Σημείωση: Ο προγραμματιστής θα πρέπει να επιδιώκει τη μείωση των περιπτώσεων συγχρονισμού, καθώς ο συγχρονισμός σε αρκετές περιπτώσεις απαιτεί περισσότερο χρόνο από τον υπολογισμό που επιδιώκεται (synchronization takes more time than computation, especially in distributed computing).

16 Απαιτήσεις της λύσης του κρίσιμου τμήματος Όλοι οι μηχανισμοί για να παρέχουν αξιόπιστη λύση στο πρόβλημα του συγχρονισμού της πρόσβασης σε κοινούς/διαμοιραζόμενους πόρους, θα πρέπει να ικανοποιούν (υλοποιούν) τις κάτωθι προϋποθέσεις: Αμοιβαίος αποκλεισμός (mutual exclusion): αν μια διεργασία εκτελεί κώδικα στο κρίσιμο τμήμα της, τότε καμία άλλη διεργασία δεν εκτελεί κώδικα στο κρίσιμο τμήμα της. Πρόοδος (progress): αν δεν υπάρχει διεργασία που να βρίσκεται μέσα στο κρίσιμο τμήμα της και υπάρχουν διεργασίες που επιθυμούν να εισέλθουν στο κρίσιμο τμήμα τους, τότε η επιλογή της επόμενης διεργασίας που θα εισέλθει στο κρίσιμο τμήμα της δεν μπορεί να αναβάλλεται επ αόριστο. Στην απόφαση αυτή μπλοκαρίσματος δεν μπορούν να συμμετέχουν διεργασίες που δεν βρίσκονται στο κρίσιμο τμήμα τους. Πεπερασμένη Αναμονή (bounded waiting): πρέπει να υπάρχει ένα όριο στο πλήθος των φορών που επιτρέπεται σε άλλες διεργασίες να εισέλθουν στο κρίσιμο τμήμα τους, αφότου μια διεργασία έχει εκδώσει αίτηση να εισέλθει στο κρίσιμο τμήμα της και μέχρι η αίτηση αυτή να ικανοποιηθεί.

17 Αμοιβαίος αποκλεισμός Αμοιβαίος αποκλεισμός (mutual exclusion) 17

18 Υλοποιήσεις του αμοιβαίου αποκλεισμού Μερικές από τις προσεγγίσεις υλοποίησης του αμοιβαίου αποκλεισμού είναι οι ακόλουθες: Με απενεργοποίηση των διακοπών (disabling interrupts) Με αυστηρή εναλλαγή περιμένοντας σε ένα βρόγχο (busy waiting) Με την εντολή TSL (Test and Set Lock) Η λύση του Peterson 18

19 Με απενεργοποίηση των διακοπών (disabling interrupts) Κάθε διεργασία που εισέρχεται στο κρίσιμο τμήμα της να απενεργοποιεί όλες τις διακοπές και να τις επανεργοποιεί με την έξοδό της. Έτσι θα μπορεί ανενόχλητη να εκτελέσει το κρίσιμο τμήμα της, χωρίς να μπορεί να διακοπεί από τις υπόλοιπες, οι οποίες αναγκαστικά θα περιμένουν. Καθόλου δόκιμη λύση, καθώς και μη αποτελεσματική σε ένα πολυεπεξεργαστικό/πολυπύρηνο σύστημα, όπου η απενεργοποίηση των διακοπών της μιας CPU δεν εμποδίζει τις άλλες να παρεμβαίνουν στις λειτουργίες που εκτελεί η πρώτη CPU. 19

20 Με αυστηρή εναλλαγή περιμένοντας σε ένα βρόγχο (busy waiting) Κάθε διεργασία ελέγχει συνεχώς (κλειδώνει σε) μια μεταβλητή (ενεργός αναμονή ή αναμονή με απασχόληση, busy waiting) έως ότου αυτή πάρει συγκεκριμένη τιμή που θα την επιτρέψει να εισέλθει στο κρίσιμο τμήμα της. Διεργασία 0 Διεργασία 1

21 Αυτός ο τρόπος (ενεργός αναμονή) σπαταλά κύκλους της CPU (τους οποίους θα μπορούσε να αξιοποιήσει κάποια άλλη διεργασία), οπότε και είναι δόκιμος όταν η αναμονή θα είναι σύντομη*. Ειδάλλως χρησιμοποιούνται άλλες μέθοδοι, όπως π.χ. σημαφόροι, οι οποίοι όπως θα δούμε στη συνέχεια, επιτυγχάνουν τον αμοιβαίο αποκλεισμό χωρίς ενεργό αναμονή (π.χ. ο πυρήνας του Linux χρησιμοποιεί συνδυασμό τους). Η τεχνική αυτή αναφέρεται και ως περιστροφικό κλείδωμα (spinlock) καθώς η διεργασία φέρεται ως να «περιστρέφεται» ( spins ) (δηλ. εκτελείται σε ένα βρόγχο) περιμένοντας την αποδέσμευση της μεταβλητής κλειδώματος (lock). (*) Κατά την ενεργό αναμονή μιας διεργασίας σε ένα κλείδωμα, παραμένει φορτωμένη, οπότε είναι πλεονέκτημα ότι δεν απαιτείται εναλλαγή περιβάλλοντος λειτουργίας (που απαιτεί κάποιο χρόνο), άρα είναι χρήσιμη όταν τα κλειδώματα αναμένεται να κρατηθούν για μικρό χρονικό διάστημα (π.χ. της τάξης λιγότερων των δυο εναλλαγών περιβάλλοντος).

22 Με την εντολή TSL (Test and Set Lock) Η CPU (διεργασία) που εκτελεί αυτή την εντολή κλειδώνει το δίαυλο μνήμης ώστε να αποτρέψει την προσπέλαση μιας κοινόχρηστης μεταβλητής lock στη μνήμη από άλλες CPU (διεργασίες), μέχρι να τελειώσει την εργασία της. Η κοινόχρηστη μεταβλητή lock συμβάλλει στον συντονισμό των προσβάσεων στην κοινόχρηστη μνήμη. Όταν έχει την τιμή 0, οποιαδήποτε διεργασία μπορεί να της δώσει την τιμή 1 χρησιμοποιώντας την εντολή TSL και μετά να διαβάσει ή να γράψει στην κοινόχρηστη μνήμη. Όταν τελειώσει η διεργασία της ξαναδίνει την τιμή 0. 22

23 Η λύση του Peterson 23

24 Σημαφόροι ή Σηματοφόροι (Semaphores) Η σημαφόρος είναι ένας μηχανισμός συγχρονισμού που επιτυγχάνει τον αμοιβαίο αποκλεισμό των διεργασιών που επιθυμούν να εισέλθουν στο κρίσιμο τμήμα τους, χωρίς να απαιτεί ενεργό αναμονή της διεργασίας εκτελώντας κάποιες εντολές σε βρόγχο. Στη μέθοδο αυτή, η διεργασία που είναι εξαναγκασμένη να περιμένει, αναστέλλεται η εκτέλεσή της (wait) (αναστέλλεται, μπλοκάρεται, μεταβαίνει σε κατάσταση αναμονής ή αλλιώς σε λήθαργο), και επανέρχεται (ειδοποιείται για να προσπαθήσει να εισέλθει στο κρίσιμο τμήμα της) όταν κάποια άλλη διεργασία ολοκληρώσει και στη συνέχεια εκτελέσει μια λειτουργία αφύπνισης (signal). Μια μεταβλητή τύπου s (σημαφόρος) προσδιορίζει το πλήθος των σημάτων (αιτημάτων) των διεργασιών/νημάτων που επιθυμούν να εισέλθουν στην κρίσιμη περιοχή τους. 24

25 Η λειτουργία της αναστολής (wait) τοποθετεί τη διεργασία σε μια ουρά αναμονής (waiting queue) (λίστα με δείκτες προς το PCB της κάθε διεργασίας) που συσχετίζεται με τη μεταβλητή της σημαφόρου (s), και η διεργασία μεταβαίνει σε κατάσταση αναμονής. Στη συνέχεια ο έλεγχος μεταφέρεται στον χρονοπρογραμματιστή της ΚΜΕ, ο οποίος επιλέγει μια άλλη διεργασία για εκτέλεση. Μια διεργασία που είναι μπλοκαρισμένη, περιμένοντας σε ένα σημαφόρο, θα επανεκκινηθεί (σε κατάσταση ετοιμότητας) (ready queue) όταν κάποια άλλη διεργασία ολοκληρώσει και στη συνέχεια εκτελέσει μια λειτουργία αφύπνισης (signal). Ο χρονοπρογραμματιστής της ΚΜΕ μπορεί να μεταβεί ή να μη μεταβεί από την εκτελούμενη διεργασία στη διεργασία που μόλις έγινε έτοιμη, ανάλογα με τον αλγόριθμο χρονοπρογραμματισμού. 25

26 Συνοψίζοντας, μια μεταβλητή σημαφόρος s μπορεί να προσπελαστεί μέσω δύο ατομικών (χωρίς διακοπή) ή αδιαίρετων* πράξεων: wait - αναστολής ή μπλοκαρίσματος της διεργασίας (ή down, αύξησης της σημαφόρου), και signal - αφύπνισης ή ξεμπλοκαρίσματος της διεργασίας (ή up, μείωσης της σημαφόρου). Πηγή εικόνας: CMSIS RTOS SemaphoreMgmt.html (*) Αδιαίρετων: δηλ. όταν μια διεργασία τροποποιεί (wait/signal) την τιμή της σημαφόρου, καμία άλλη διεργασία δεν μπορεί να τροποποιήσει την τιμή της ίδιας σημαφόρου ταυτόχρονα. 26

27 Μπορεί να θεωρηθεί πως οι παραπάνω λειτουργίες ορίζονται ως εξής: void wait(int *s) { void signal(int *s) { while (*s<=0) {} *s++; } *s--; } Παράδειγμα: υλοποίηση κρίσιμου τμήματος για n διεργασίες με σημαφόρο: shared vars: semaphore s=1; process body: while (1) { wait(s); do_critical_section(); signal(s); } 27

28 Παράδειγμα υλοποίησης σημαφόρου typedef struct { int sval; /* η τιμή της σημαφόρου */ struct procq pq; /* ουρά διεργασιών που αναμένουν στη σημαφόρο */ } semaphore; /* για να εισέλθουν στο κρίσιμο τμήμα τους */ void init(semaphore *s, int val) { s->sval=val; initq(s->pq); } void wait(semaphore *s) { s->sval--; if (s->sval<0) { addq(s->pq,thisprocess()); suspend(); } } void signal(semaphore *s) { s->sval++; if (s->sval<==0) { resume(rmvq(s->pq)); } } 28

29 Δυαδικοί σημαφόροι (binary semaphores) ή Mutexes Η τιμή μιας δυαδικής σημαφόρου μπορεί να παίρνει τις τιμές 0 και 1. Αυτές είναι γνωστοί και ως κλειδώματα αμοιβαίου αποκλεισμού (mutual exclusion locks ή mutex locks). Τα mutexes επιτρέπουν ή απαγορεύουν την πρόσβαση σε μια κρίσιμη περιοχή. Έτσι χρησιμοποιούνται αποκλειστικά στη διαχείριση του αμοιβαίου αποκλεισμού που εφαρμόζεται σε κάποιο κοινόχρηστο πόρο. Η διεργασία/νήμα που κάνει πρόσβαση στην κρίσιμη περιοχή καλεί τη mutex_lock και κλειδώνει το mutex (θέτει την τιμή 0), ενώ αποχωρώντας για να το ξεκλειδώσει καλεί τη mutex_unlock (θέτει την τιμή 1). 29

30 Παραδείγματα κλήσεων της POSIX Thread library Pthread με mutexes για το συγχρονισμό νημάτων pthread_mutex_lock() - acquire a lock on the specified mutex variable. If the mutex is already locked by another thread, this call will block the calling thread until the mutex is unlocked. pthread_mutex_unlock() - unlock a mutex variable. An error is returned if mutex is already unlocked or owned by another thread. pthread_mutex_trylock() - attempt to lock a mutex or will return error code if busy. Useful for preventing deadlock conditions. 30

31 Παράδειγμα χρήσης των mutexes (της Pthread) για το συγχρονισμό νημάτων Πηγή: 31

32 thread.c gcc thread.c lpthread./a.out

33 thread.cpp g++ thread.cpp lpthread./a.out

34 Κλασικά προβλήματα συγχρονισμού Το πρόβλημα της αποθήκης πεπερασμένης χωρητικότητας (bounded-buffer problem) Το πρόβλημα αναγνωστών και εγγραφέων (readers and writers problem) Το πρόβλημα των συνδαιτυμόνων φιλοσόφων (dining philosophers problem) 34

35 Αποθήκη πεπερασμένης χωρητικότητας semaphore mutex,full,empty; /* Κοινά δεδομένα */ init(&mutex,1); init(&empty,n); init(&full,0); /* Αρχικοποίηση */ /* διεργασία παραγωγός producer */ while (1) { παραγωγή αντικειμένου item wait(&empty); wait(&mutex); προσθήκη αντικειμένου item στην αποθήκευση signal(&mutex); signal(&full); } /* διεργασία καταναλωτής consumer */ while (1) { wait(&full); wait(&mutex); απομάκρυνση αντικειμένου item από την αποθήκευση signal(&mutex); signal(&empty); κατανάλωση αντικειμένου item } Ενημερωτική διαφάνεια

36 Αναγνώστες και εγγραφείς semaphore mutex,write; int readers; /* Κοινά δεδομένα */ init(&mutex,1); init(&write,1); readers=0; /* Αρχικοποίηση */ /* διεργασία εγγραφέας -writer */ while (1) { wait(&write); γράψιμο δεδομένων signal(&write); } /* διεργασία αναγνώστης -reader */ while (1) { wait(&mutex); readers++; if (readers==1) {wait(&write);} signal(&mutex); διάβασμα δεδομένων wait(&mutex); readers--; if (readers==0) {signal(write);} signal(&mutex); } Ενημερωτική διαφάνεια

37 Οι συνδαιτυμόνες φιλόσοφοι semaphore fork[n]; /*Κοινά δεδομένα */ init(&fork[0],1); /* Αρχικοποίηση */ init(&fork[1],1); init(&fork[n-1],1); /* Ο φιλόσοφος i */ while (1) { wait(&fork[i]); wait(&fork[(i+1)%n); επιτέλους τρώμε! signal(&fork[i]); signal(&fork[(i+1)%n]); ας σκεφτούμε λιγάκι } Οι φιλόσοφοι τρώνε/σκέφτονται Για να φάνε χρειάζονται 2 πηρούνια Παίρνουν ένα πηρούνι τη φορά Πώς να αποφύγουμε το αδιέξοδο (deadlock); Ενημερωτική διαφάνεια

38 Ελεγκτές ή Παρακολουθητές (Monitors) Δομή που επιτρέπει την ασφαλή πρόσβαση σε δεδομένα μεταξύ ταυτόχρονων διεργασιών. Σε ένα ελεγκτή την κάθε χρονική στιγμή μια μόνο διεργασία μπορεί να είναι ενεργή. monitor monitor-name { δηλώσεις κοινών μεταβλητών procedure P1 ( ) { } procedure P2 ( ) { } procedure Pn ( ) { } { κώδικας αρχικοποίησης } } Οι ρουτίνες πρόσβασης Pi εκτελούνται συγχρονισμένα, με εγγυημένο τον αμοιβαίο αποκλεισμό ανάμεσα σε διεργασίες. Ο ελεγκτής υποστηρίζει τον συγχρονισμό με τη χρήση μεταβλητών συνθήκης (condition variables). 38

39 Για να επιτραπεί σε μια διεργασία να περιμένει μέσα σε έναν ελεγκτή, πρέπει να δηλωθεί αντίστοιχη μεταβλητή συνθήκης (condition variable): condition x; Μπορεί να χρησιμοποιηθεί με τις λειτουργίες wait και signal. Η λειτουργία x.wait() σημαίνει ότι η διεργασία αναστέλλεται. Η λειτουργία x.signal() εκκινεί (μόνο) μια από τις διεργασίες που έχουν ανασταλεί, αν υπάρχει (διαφορετικά δεν κάνει τίποτα). Η λειτουργία x.signalall() εκκινεί όλες τις διεργασίες (αν υπάρχουν) που έχουν ανασταλεί μέσω της μεταβλητής x. Αναμονή υπό συνθήκη (conditional wait): x.wait(c); c ακέραιος που ελέγχεται όταν εκτελείται η λειτουργία wait. Η τιμή του c (αριθμός προτεραιότητας) αποθηκεύεται με το όνομα της διεργασίας που ανεστάλη. Η εκτέλεση της x.signal, ενεργοποιεί τη διεργασία με τη μικρότερη προτεραιότητα. 39

40 Δομή του ελεγκτή 40

41 Σχηματική θεώρηση ελεγκτή Ελεγκτής Ελεγκτής με μεταβλητές συνθήκης 41

42 Παραδείγματα κλήσεων της POSIX Thread library Pthread με conditions για το συγχρονισμό νημάτων 42

43 Πηγή: Ενημερωτική διαφάνεια

44 Υλοποίηση ελεγκτών με σημαφόρους Για κάθε ελεγκτή, καθολικές μεταβλητές: semaphore mutex,next; int next-count; Επιπλέον, για κάθε μεταβλητή συνθήκης, μεταβλητές: semaphore x-sem; int x-count; Αρχικοποίηση του ελεγκτή: init(&mutex,1); init(&next,0); next-count=0; Και αρχικοποίηση για κάθε μεταβλητή συνθήκης: init(&x-sem); x-count=0; Για κάθε ρουτίνα πρόσβασης Pi, το σώμα της αντικαθίσταται με : procedure Pi ( ) { wait(&mutex); κυρίως σώμα της Pi if (next-count > 0) {signal(&next);} else {signal(&mutex);} } Ενημερωτική διαφάνεια

45 Η λειτουργία x.wait() μπορεί να υλοποιηθεί ως εξής: x-count++; if (next-count > 0) { signal(&next); } else { signal(&mutex); } wait(&x-sem); x-count--; Η λειτουργία x.signal() μπορεί να υλοποιηθεί ως εξής: if (x-count > 0) { next-count++; signal(&x-sem); wait(&next); next-count--; } Η λειτουργία x.signalall() μπορεί να υλοποιηθεί ως εξής: if (x-count > 0) { next-count++; for (c=x-count; c > 0; c--) { signal(&x-sem); } wait(&next); next-count--; } Ενημερωτική διαφάνεια

46 POSIX Thread (related) functions Πηγή: Ενημερωτική διαφάνεια

47

48 Διαδιεργασιακή επικοινωνία (Inter-Process Communication, IPC) Όταν οι διεργασίες αλληλεπιδρούν μεταξύ τους πρέπει να συγχρονίζονται και να μπορούν να επικοινωνούν (για να ανταλλάσσουν πληροφορίες/δεδομένα). (α) Shared memory (διαμέσω κοινής ή διαμοιραζόμενης μνήμης) (β) Message passing (μηχανισμός μεταβίβασης ή περάσματος μηνυμάτων). Μεταβίβασης μηνυμάτων Μέσω κοινής μνήμης 48

49 (α) Διαμέσω κοινής (ή διαμοιραζόμενης) μνήμης (shared memory) Σε ένα πολυπεξεργαστικό/πολυπύρηνο σύστημα σε ένα υπολογιστή δύο ή περισσότεροι επεξεργαστές/πυρήνες μοιράζονται την πρόσβαση (ανάγνωση/εγγραφή) σε μια κοινή μνήμη. Οι διεργασίες επικοινωνούν προσδιορίζοντας ένα κοινό τμήμα/άρθρωμα μνήμης (shared buffer) (στο οποίο συγχρονίζονται με απλά locks, π.χ. mutexes) και αποκτώντας πρόσβαση σε αυτό (shared memory create και attach) στη συνέχεια να μπορούν να ανταλλάσσουν πληροφορίες διαβάζοντας και γράφοντας (load/store) δεδομένα σε αυτό. Έτσι σε αυτή την περίπτωση η μνήμη διασπάται σε πολλαπλά τμήματα ώστε να εξυπηρετούνται οι ταυτόχρονες προσπελάσεις σε αυτά από διαφορετικούς πυρήνες/διεργασίες (η κρυφή μνήμη συμβάλλει στη μείωση των προσπελάσεων της κύριας μνήμης). On shared memory platforms, the native compilers translate user program variables into actual memory addresses, which are global. Το δίκτυο διασύνδεσης είναι στην απλούστερη περίπτωση ο δίαυλος συστήματος (system bus), τον οποίο κάθε δεδομένη στιγμή μόνο ένας πυρήνας μπορεί να χρησιμοποιεί για επικοινωνία με κάποιο τμήμα μνήμης.

50 (β) Μοντέλο μεταβίβασης μηνυμάτων (message-passing model) Το μοντέλο μεταβίβασης μηνυμάτων παρέχει ένα μηχανισμό που επιτρέπει στις διεργασίες να επικοινωνούν και να συγχρονίζουν τις ενέργειές τους, ακόμα και όταν βρίσκονται σε διαφορετικά υπολογιστικά συστήματα συνδεδεμένα μέσω δικτύου. Οι διεργασίες που θέλουν να επικοινωνήσουν (συνήθως bi-directional) θα πρέπει να έχουν ένα τρόπο να αναφέρονται η μια στην άλλη: (1) Άμεσα (direct communication), ή (2) Έμμεσα (indirect communication) Χρησιμοποιούνται δύο θεμελιώδεις εντολές/λειτουργίες: send και receive. P1 Message Passing P2 Message Passing Interface (MPI) is the industry standard for message passing.

51 (1) Στην άμεση επικοινωνία έχουμε: send (διεργασία-παραλήπτης, μήνυμα), και receive (διεργασία-αποστολέας, μήνυμα) Η μία διεργασία στέλνει ένα μήνυμα με την εντολή send, σε μια άλλη διεργασία, το οποίο και παραλαμβάνει με την εντολή receive στον δικό της ιδιωτικό χώρο (local memory) (link μεταξύ δυο διεργασιών μόνο). (2) Στην έμμεση επικοινωνία έχουμε: send (γραμματοθυρίδα, μήνυμα), και receive (γραμματοθυρίδα, μήνυμα) Η μία διεργασία στέλνει ένα μήνυμα με την εντολή send, σε ένα ενταμιευτή ή γραμματοθυρίδα μηνυμάτων (message buffer/queue, mailbox, port), το οποίο λαμβάνει η άλλη με την εντολή receive. Η χρήση του ενταμιευτή είναι διαμοιραζόμενη (shared) οπότε αποτελεί κρίσιμη περιοχή και για αυτό πρέπει να ισχύουν κάποιοι κανόνες συγχρονισμού των διεργασιών. Μια θυρίδα μπορεί να είναι προσβάσιμη από πολλές διεργασίες, όμως συνήθως το μήνυμα το παραλαμβάνει η διεργασία που «πρώτη» το επιχειρεί. Ουσιαστικά επιτρέπεται στο σύστημα να διαλέξει αυθαίρετα τον παραλήπτη. Όμως ο αποστολέας ειδοποιείται για τον παραλήπτη.

52 Η μεταβίβαση μηνυμάτων έχει το πλεονέκτημα ότι μπορεί να υλοποιηθεί τόσο σε (α) κατανεμημένα συστήματα, όσο και σε (β) συστήματα πολλαπλών επεξεργαστών/πυρήνων ή (γ) μονού επεξεργαστή κοινής/διαμοιραζόμενης μνήμης (shared memory). Έτσι ο μηχανισμός είναι ιδιαίτερα χρήσιμος και στα κατανεμημένα περιβάλλοντα (distributed memory systems), όπου οι διεργασίες που επικοινωνούν μπορεί να βρίσκονται σε διαφορετικούς υπολογιστές συνδεδεμένοι μέσω δικτύου. Προβλήματα: communication overhead, difficulty of programming.

53 Inter-process communication approaches Πηγή: Ενημερωτική διαφάνεια

54 Ερωτήσεις Περιγράψτε τα προβλήματα συγχρονισμού της πρόσβασης σε κοινά δεδομένα. Περιγράψτε τι είναι το κρίσιμο τμήμα και τις απαιτήσεις της λύσης του κρίσιμου τμήματος (προϋποθέσεις συγχρονισμού της πρόσβασης σε κοινούς/διαμοιραζόμενους πόρους). Περιγράψτε τι είναι ο αμοιβαίος αποκλεισμός καθώς και τη μέθοδο υλοποίησής του «με αυστηρή εναλλαγή περιμένοντας σε ένα βρόγχο (busy waiting)». Τι γνωρίζετε για τις σημαφόρους; Τι γνωρίζετε για τους ελεγκτές ή παρακολουθητές; Τι γνωρίζετε για τη διαδιεργασιακή επικοινωνία διαμέσω κοινής (ή διαμοιραζόμενης) μνήμης (shared memory); Τι γνωρίζετε για τη διαδιεργασιακή επικοινωνία μεταβίβασης μηνυμάτων (message-passing); 54

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 4α: Σημαφόροι, Πρόβλημα Συνδαιτυμόνων Φιλοσόφων, Αδιέξοδα Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει

Διαβάστε περισσότερα

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1 Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών

Διαβάστε περισσότερα

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

Διεργασίες (Processes) Διεργασία (process) ή καθήκον (task) Διεργασίες (Processes) στοιχειώδης οντότητα/δραστηριότητα υπολογισμού (processing entity/activity) εκτέλεση ενός προγράμματος ένα (κύριο) νήμα (thread)/ρεύμα ελέγχου/εκτέλεσης

Διαβάστε περισσότερα

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

2.4 Κλασσικά Προβλήματα IPC 2.4 Κλασσικά Προβλήματα IPC 1 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { think; take_fork(i);/* πάρε αριστερό ξυλάκι */ take_fork(i+1

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός Αμοιβαίος αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του αμοιβαίου αποκλεισμού I. Προσεγγίσεις λογισμικού II. Υποστήριξη εκ μέρους του υλικού III. Σηματοφορείς 4. Κλασσικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΕΡΓΑΣΙΕΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΔΙΕΡΓΑΣΙΕΣ Διεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράμματος

Διαβάστε περισσότερα

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

Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού

Διαβάστε περισσότερα

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1 Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό

Διαβάστε περισσότερα

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

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Μάθημα 4 ο Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Εισαγωγή Σκοπός του μαθήματος αυτού είναι να εξηγήσει την έννοια του κρίσιμου τμήματος σε μία διεργασία και να δείξει τη λύση για ένα απλό πρόβλημα

Διαβάστε περισσότερα

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1 Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός

Διαβάστε περισσότερα

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Για το μάθημα «Διαχείριση Λειτουργικών Συστημάτων» του ακαδημαϊκού έτους 2015 2016, το προτεινόμενο σύγγραμμα είναι το: Operating Systems: Internals

Διαβάστε περισσότερα

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1 Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής εναλλαγή if/while () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Interprocess Communication and Concurrent Processes Περίληψη Σύνδροµος Προγραµµατισµός Συνθήκη συναγωνισµού Συγχρονισµός διεργασιών Κρίσιµες περιοχές

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

Διαβάστε περισσότερα

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα 9 ο Εξάμηνο Η ανάγκη για συγχρονισμό

Διαβάστε περισσότερα

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που

Διαβάστε περισσότερα

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)

Διαβάστε περισσότερα

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες Μ.Στεφανιδάκης Το μάθημα ΛΣ Πραγματικού Χρόνου Θεωρητικό υπόβαθρο Αρχές Προγραμματισμού Παραδείγματα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΙΕΡΓΑΣΙΕΣ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθηµα: Λειτουργικά Συστήµατα Ι ΙΕΡΓΑΣΙΕΣ ιδάσκων: Αναπλ. Καθ. Κ. Λαµπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ιεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράµµατος

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Ταυτοχρονισμός, Συγχρονισμός Πολλαπλές Διεργασίες/Νήματα σε 1 Κοινωνία: Προβλήματα; «Κοινωνικές Γιάννης διεργασίες/νήματα»: Διαβάζουν/γράφουν στον ίδιο χώρο. Αποτέλεσμα; Πιθανότατα

Διαβάστε περισσότερα

Μηχανισμοί και προγραμματιστικές δομές συγχρονισμού. Προβλήματα συγχρονισμού (και λύσεις)

Μηχανισμοί και προγραμματιστικές δομές συγχρονισμού. Προβλήματα συγχρονισμού (και λύσεις) Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Περιεχόμενα

Διαβάστε περισσότερα

Υλοποίηση Σηματοφόρων

Υλοποίηση Σηματοφόρων Υλοποίηση Σηματοφόρων 1 lalis@inf.uth.gr Υλοποίηση σε επίπεδο συστήματος Εσωτερική κατάσταση: Ένας ακέραιος για την αποθήκευση της τιμής του σηματοφόρου Μια ουρά αναμονής που τοποθετείται ένα νήμα όταν

Διαβάστε περισσότερα

Νήµατα Εκτέλεσης Συγχρονισµός ιεργασιών σε Κοινή Μνήµη

Νήµατα Εκτέλεσης Συγχρονισµός ιεργασιών σε Κοινή Μνήµη Νήµατα Εκτέλεσης Συγχρονισµός ιεργασιών σε Κοινή Μνήµη Για τη δηµιουργία των διαφανειών έχει χρησιµοποιηθεί υλικό από τις διαφάνειες παραδόσεων που βασίζονται στο βιβλίο, Silberschatz, Galvin and Gagne,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Το Λ.Σ. είναι υπεύθυνο για την κατανομή των πόρων του συστήματος (επεξεργαστές, μνήμη, αποθηκευτικά μέσα και συσκευές εισόδου/εξόδου) στα διάφορα ανταγωνιζόμενα προγράμματα

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

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

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Επιτεύγµατα των Λ.Σ.

Επιτεύγµατα των Λ.Σ. Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος

Διαβάστε περισσότερα

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

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες» 1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 9 Ταυτόχρονος προγραμματισμός και νήματα Σύνοψη Σε αυτό το κεφάλαιο πραγματευόμαστε τον ταυτόχρονο προγραμματισμό με τη χρήση νημάτων. Η έμφαση είναι στην κατανόηση βασικών λειτουργιών των νημάτων

Διαβάστε περισσότερα

ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων

ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων ΕΜΠ Κορνήλιος Κούρτης kkourt@cslab.ece.ntua.gr p. 1 Περιβάλλον Πολλαπλών Νηµάτων Threads T0

Διαβάστε περισσότερα

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

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 1 ΕΙΣΑΓΩΓΗ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση την παρακάτω βιβλιογραφία που

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 5: Αδιέξοδα Συγχρονισμός στον Πραγματικό Κόσμο Χρειάζεται οποτεδήποτε > 1 χρήστης πόρου Λίγο πολύ οι ίδιες λύσεις με τον πραγματικό κόσμο: κλείδωμα (στo WC), χρονοπρογραμματισμός

Διαβάστε περισσότερα

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1 Κρίσιμη Περιοχή Υπό Συνθήκη (onditional ritical Regions) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Πέρα από ελεγκτές Ο ελεγκτής είναι χρήσιμο εργαλείο συγχρονισμού παρέχει στον προγραμματιστή εγγυημένο

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Συγχρονισμός (συνέχεια) Μεταβλητές υπό συνθήκη Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

Διαβάστε περισσότερα

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

Διαβάστε περισσότερα

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

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

Διαβάστε περισσότερα

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Το Πρόβλημα του Αδιεξόδου Ένα σύνολο από διεργασίες σε αναμονή, όπου η κάθε μια κατέχει έναν αριθμό από πόρους και περιμένει να αποκτήσει και έναν

Διαβάστε περισσότερα

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Υλοποίηση σηματοφόρων Οι σηματοφόροι είναι ένας ΑΤΔ με συγκεκριμένες λειτουργίες πρόσβασης Μπορεί να υλοποιηθούν με «φυσικό»

Διαβάστε περισσότερα

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

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7 ο Αλγόριθμοι Χρονοδρομολόγησης Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και την αξιολόγηση των αλγορίθμων χρονοδρομολόγησης, και θα παρουσιάσουμε τους κυριότερους. Θα μάθουμε:

Διαβάστε περισσότερα

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Αλγόριθμος Χρήση Συντονιστή Αλγόριθμος του Lamport Αλγόριθμος LeLann:

Διαβάστε περισσότερα

Ενότητα 4 (Κεφάλαιο 5) Συντρέχων Προγραμματισμός

Ενότητα 4 (Κεφάλαιο 5) Συντρέχων Προγραμματισμός ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 4 (Κεφάλαιο 5) Συντρέχων Προγραμματισμός

Διαβάστε περισσότερα

2.3 Επικοινωνία Διεργασιών

2.3 Επικοινωνία Διεργασιών 2.3 Επικοινωνία Διεργασιών 2.3.3 Η λύση του Peterson. (για 2 διεργασίες) Το σενάριο περιλαμβάνει 2 διεργασίες. Υπάρχουν 2 ρουτίνες που καλούνται για να μπούν και να βγούν οι διεργασίες σε/από critical

Διαβάστε περισσότερα

Συγχρονισμός. Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος CSLab. Κορνήλιος Κούρτης

Συγχρονισμός. Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος CSLab. Κορνήλιος Κούρτης Συγχρονισμός Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος 2009-2010 CSLab National Technical University of Athens Κορνήλιος Κούρτης kkourt@cslab.ece.ntua.gr Εργαστήριο Υπολογιστικών Συστημάτων

Διαβάστε περισσότερα

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

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 3: Δρομολόγηση Κεντρικής Μονάδας Επεξεργασίας Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 1 : Εισαγωγή Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

Προγραμματισμός Ταυτόχρονος Προγραμματισμός Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

Διαβάστε περισσότερα

Διάλεξη Εισαγωγή στη Java, Μέρος Γ

Διάλεξη Εισαγωγή στη Java, Μέρος Γ Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος Γ Νήματα (Threads) στην Java Συγχρονισμός Producer-Consumer

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Παρουσίαση 5 ης Άσκησης:

Παρουσίαση 5 ης Άσκησης: Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος Εισαγωγή στα Λειτουργικά συστήματα Ι Καθηγητής Κώστας Αναγνωστόπουλος Τι είναι Λειτουργικό Σύστημα Ένα πρόγραμμα ή συλλογή προγραμμάτων που ελέγχει και διαχειρίζεται το υλικό μιας υπολογιστικής μηχανής

Διαβάστε περισσότερα

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Μοντέλο Κοινόχρηστης Μνήμης Αλγόριθμοι Αμοιβαίου Αποκλεισμού με Ισχυρούς Καταχωρητές ΕΠΛ432: Κατανεµηµένοι

Διαβάστε περισσότερα

Αδιέξοδα (Deadlocks)

Αδιέξοδα (Deadlocks) Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection

Διαβάστε περισσότερα

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Αρχιτεκτονική Πλατφόρμας Μπορεί να μοντελοποιηθεί σαν ένα σύνολο από διασυνδεδεμένα κομμάτια: 1. Στοιχεία επεξεργασίας (processing

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα 3.1 Η εξέλιξη των λειτουργικών συστηµάτων 3.2 Αρχιτεκτονική λειτουργικών συστηµάτων 3.3 Συντονισµός των δραστηριοτήτων του υπολογιστή 3.4 Χειρισµός ανταγωνισµού µεταξύ

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 6 : Αδιέξοδο 1/2 Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ 2. Σκοποί και Λειτουργίες των ΛΣ Λειτουργικά Συστήματα Η/Υ I. Προστασία του υλικού II. Επικοινωνία με τον χρήστη III. Διαχείριση, αξιοποίηση και έλεγχος πόρων IV. Ικανότητα και ευκολία εξέλιξης Κεφάλαιο

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1 Συγχρονισμός & σηματοφόροι Προγραμματισμός II 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Οι διεργασίες εκτελούνται ταυτόχρονα μεταξύ τους Ο προγραμματιστής δεν ελέγχει την εναλλαγή Τι γίνεται αν δύο ή περισσότερες

Διαβάστε περισσότερα

Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4

Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4 Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4 Με το κεφάλαιο αυτό, αλλάζουμε θεματολογία και μπαίνουμε στον χώρο του προγραμματισμού των παράλληλων συστημάτων. Σε αντίθεση με τους κλασικούς σειριακούς

Διαβάστε περισσότερα

Η πολυνηματική γλώσσα προγραμματισμού Cilk

Η πολυνηματική γλώσσα προγραμματισμού Cilk Η πολυνηματική γλώσσα προγραμματισμού Cilk Β Καρακάσης Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού Μεταπτυχιακό Μάθημα (688), ΣΗΜΜΥ Νοέμβριος 2009 Β Καρακάσης (CSLab, NTUA) ΣΗΜΜΥ, Μετ/κό 688 9/2009

Διαβάστε περισσότερα

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1 Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Μονονηματική / πολυνηματική εκτέλεση Μονονηματικό μοντέλο εκτέλεσης (συμβατικό) Οι εντολές του κώδικα εκτελούνται σειριακά Ένα μοναδικό νήμα εκτέλεσης (execution

Διαβάστε περισσότερα

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Εισαγωγή Μοντέλο συστήματος Χαρακτηρισμός και ορισμός κατάστασης αδιεξόδου Μέθοδοι χειρισμού αδιεξόδων Αποτροπή αδιεξόδου (Deadlock Prevention) Αποφυγή

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

Παρουσίαση 5 ης Άσκησης:

Παρουσίαση 5 ης Άσκησης: Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος

Διαβάστε περισσότερα

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

Εισαγωγή στην Πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Λειτουργικά συστήµατα, διεργασίες και δροµολόγηση Σύνδεση

Διαβάστε περισσότερα

HY-486 Αρχές Κατανεμημένου Υπολογισμού

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

Διαβάστε περισσότερα

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

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1 ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος

Διαβάστε περισσότερα

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

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση

Διαβάστε περισσότερα

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

Διαβάστε περισσότερα

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

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

Διαβάστε περισσότερα

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

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ Καθ. Παπαδάκη Αν. Λειτουργικά Συστήματα 1 Περιγραφή Διεργασίας Στους υπολογιστές που έχουν μια μόνο ΚΜΕ, σε κάθε χρονική στιγμή μπορεί να εκτελείται μια μόνο εντολή γλώσσας

Διαβάστε περισσότερα

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

Περιγραφή και Έλεγχος ιεργασιών Περιγραφή και Έλεγχος ιεργασιών Περίληψη ιεργασίες Πολυπρογραµµατισµός Καταστάσεις ιεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux 1 ιεργασία (process) ιεργασία είναι κάθε πρόγραµµα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU

Διαβάστε περισσότερα

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

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 12 Σχεδιασμός Ανάπτυξη Λειτουργία Π.Σ. 1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1.1 Δυνατότητες Λειτουργικών Συστημάτων 1.1.1 Εισαγωγή Ο όρος Λειτουργικό Σύστημα (Operating System), εκφράζει το σύνολο των προγραμμάτων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις Υλικό από: Κ Διαμαντάρας, Λειτουργικά Συστήματα, Τμήμα Πληροφορικής ΤΕΙΘ Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

Διαβάστε περισσότερα

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Μemory) ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

Διαβάστε περισσότερα

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων Δεν γνωρίζει πότε θα αρχίσει

Διαβάστε περισσότερα

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU

Διαβάστε περισσότερα