Συγχρονισμός. Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος CSLab. Κορνήλιος Κούρτης
|
|
- Ῥαάβ Ανδρεάδης
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Συγχρονισμός Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος CSLab National Technical University of Athens Κορνήλιος Κούρτης Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Δεκέμβριος 2009
2 Περιεχόμενα Το πρόβλημα του συγχρονισμού Μηχανισμοί συγχρονισμού Προβλήματα συγχρονισμού (και λύσεις) Ζητήματα
3 1 επεξεργαστής. Δ0 p0-ins0 p0-ins1. p0-ins2.... Δ1 p1-ins0 p1-ins1 p1-ins2.... Δ2 p2-ins0 p2-ins1 p2-ins2....χρονοδρομολογητής. KME p2-ins0 p2-ins1 p0-ins0 p1-ins0...
4 >1 επεξεργαστές. Δ0 p0-ins0 p0-ins1. p0-ins2.... Δ1 p1-ins0 p1-ins1 p1-ins2.... Δ2 p2-ins0 p2-ins1 p2-ins2....χρονοδρομολογητής. ΚΜΕ0. $. ΚΜΕ1. $.Μνήμη
5 Πρόσβαση σε μοιραζόμενες δομές δεδομένων Πιθανή δημιουργία ασυνεπειών - Διακοπτή χρονοδρομολόγηση (preemptive scheduling) Ο χρονοδρομολογητής μπορεί να διακόψει την τρέχουσα διεργασία σε οποιοδήποτε σημείο. - Πολυεπεξεργασία (συστήματα μοιραζόμενης μνήμης) Ταυτόχρονη πρόσβαση σε κοινές δομές δεδομένων (μοντέλο συνέπειας μνήμης). Ανάγκη για συγχρονισμό διεργασιών
6 Παράδειγμα: Διπλά συνδεδεμένη λίστα struct list_head { struct list_head *next; struct list_head *prev; }; list_del(prev, next) { prev->next = next; next->prev = prev; }..A.B.C.D
7 Παράδειγμα: Διπλά συνδεδεμένη λίστα struct list_head { struct list_head *next; struct list_head *prev; }; list_del(prev, next) { prev->next = next; next->prev = prev; } Διαγραφή C (1 διεργασία) 1. t0: prev->next = next; 2. t0: next->prev = prev; 3. OK!..A.B.C.D..A.B.C.D..A.B.C.D
8 Παράδειγμα: Διπλά συνδεδεμένη λίστα struct list_head { struct list_head *next; struct list_head *prev; }; list_del(prev, next) { prev->next = next; next->prev = prev; } Διαγραφή C,D (2 διεργασίες) 1. t0: prev->next = next; 2. t1: prev->next = next;..a.b.c.d..a.b.c.d..a.b.c.d
9 Παράδειγμα: Διπλά συνδεδεμένη λίστα struct list_head { struct list_head *next; struct list_head *prev; }; list_del(prev, next) { prev->next = next; next->prev = prev; } Διαγραφή C,D (2 διεργασίες) 1. t0: prev->next = next; 2. t1: prev->next = next; 3. ΑΣΥΝΕΠΕΙΑ..A.B.C.D..A.B.C.D..A.B.C.D
10 Παράδειγμα: Παραγωγός-Καταναλωτής δομή: Κυκλικός πίνακας (μεγέθους N) Καταναλωτής: προσθέτει δεδομένα Παραγωγός: αφαιρεί δεδομένα #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0;
11 Παράδειγμα: Παραγωγός-Καταναλωτής δομή: Κυκλικός πίνακας (μεγέθους N) Καταναλωτής: προσθέτει δεδομένα Παραγωγός: αφαιρεί δεδομένα #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; void enqueue(item_t item){ while (count == N) ; // wait buffer[in] = item; in = NEXT(in); count++; } item_t dequeue(void){ item_t item; while (count == 0) ; // wait item = buffer[out]; out = NEXT(out); count--; return item }
12 Παράδειγμα: Παραγωγός-Καταναλωτής δομή: Κυκλικός πίνακας (μεγέθους N) Καταναλωτής: προσθέτει δεδομένα Παραγωγός: αφαιρεί δεδομένα #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; void enqueue(item_t item){ while (count == N) ; // wait buffer[in] = item; in = NEXT(in); count++; } item_t dequeue(void){ item_t item; while (count == 0) ; // wait item = buffer[out]; out = NEXT(out); count--; return item }
13 Κατάσταση συναγωνισμού race condition t count++ count-- 1 LOAD r, count 2 ADD 1, r 3 LOAD r, count 4 SUB 1, r 5 STORE r, count 6 STORE r, count
14 Κατάσταση συναγωνισμού race condition t count++ count-- 1 LOAD r, count 2 ADD 1, r 3 LOAD r, count 4 SUB 1, r 5 STORE r, count 6 STORE r, count Αν για t = 0, count = c, τότε για t = 7, count = c 1 Ασυνέπεια στη δομή του κυκλικού πίνακα Κατάσταση συναγωνισμού: κατάσταση κατά την οποία το αποτέλεσμα ενός υπολογισμού εξαρτάται από τη σειρά που πραγματοποιούνται οι προσπελάσεις.
15 Κρίσιμο τμήμα (ΚΤ) critical section Λύση για την προστασία από προβλήματα που δημιουργούν οι πολλαπλές προσπελάσεις σε κοινούς πόρους. Διαισθητικά: ορίζονται τμήματα κώδικα στα οποία μπορεί να βρίσκεται το πολύ μια διεργασία τη φορά Απαιτήσεις: Αμοιβαίος αποκλεισμός (mutual exclusion) Πρόοδος / Πεπερασμένη αναμονή Παραδοχές μη-μηδενικές ταχύτητες εκτέλεσης διεργασιών καμία παραδοχή για την σχετική ταχύτητα των διεργασιών
16 Τακτικές αμοιβαίου αποκλεισμού Ενεργός Αναμονή (busy-wait) Καταναλώνει υπολογιστικούς πόρους, όσο μια άλλη διεργασία βρίσκεται στο κρίσιμο τμήμα. Η ΚΜΕ μπορεί να χρησιμοποιηθεί για άλλες εργασίες Κατανάλωση ενέργειας Αμοιβαίος αποκλεισμός με αναστολή εκτέλεσης Αν το ΚΤ είναι κατειλημμένο η διεργασία αναστέλλει την λειτουργία της και τίθεται υπό αναμονή Ο επεξεργαστής ελευθερώνεται και ο Χρονοδρομολογητής επιλέγει άλλη διεργασία. Κατά την έξοδο από το ΚΤ, ενεργοποιείται μια υπό αναμονή διεργασία
17 Κλειδώματα Locks Ορισμός κρίσιμων τμημάτων: Είσοδος στο ΚΤ: κλείδωμα (lock) Έξοδος από το ΚΤ: ξεκλείδωμα (unlock) do { lock(mylock); critical section unlock(mylock); remainder section } while (TRUE);
18 Κλειδώματα Locks Ορισμός κρίσιμων τμημάτων: Είσοδος στο ΚΤ: κλείδωμα (lock) Έξοδος από το ΚΤ: ξεκλείδωμα (unlock) do { lock(mylock); critical section unlock(mylock); remainder section } while (TRUE); do { lock(mylock); other critical section unlock(mylock); other remainder section } while (TRUE);
19 Μια πρώτη λύση στο πρόβλημα του συγχρονισμού για 2 διεργασίες flag = { FALSE, FALSE }; do { flag[me] = TRUE; while (flag[other]) ; critical section flag[me] = FALSE; remainder section } while (TRUE);
20 Μια πρώτη λύση στο πρόβλημα του συγχρονισμού για 2 διεργασίες flag = { FALSE, FALSE }; do { flag[me] = TRUE; while (flag[other]) ; critical section flag[me] = FALSE; remainder section } while (TRUE); t me=0 me=1 1 flag[0] = TRUE 2 flag[1] = TRUE
21 Μια πρώτη λύση στο πρόβλημα του συγχρονισμού για 2 διεργασίες flag = { FALSE, FALSE }; do { flag[me] = TRUE; while (flag[other]) ; critical section flag[me] = FALSE; remainder section } while (TRUE); t me=0 me=1 1 flag[0] = TRUE 2 flag[1] = TRUE Αδιέξοδο!
22 Ζητήματα Υλοποίησης Ο μεταγλωττιστής μπορεί να αναδιατάξει τις εντολές Ο Επεξεργαστής μπορεί να εκτελέσει εντολές εκτός σειράς (Out of Order Execution) Σε πολυεπεξεργαστικά συστήματα μοιραζόμενης μνήμης, δεν είναι προφανές πότε θα φανούν οι αλλαγές που έκανε ένας επεξεργαστής σε μια θέση μνήμης στους υπόλοιπους (συνέπεια μνήμης).
23 Μηχανισμοί Συγχρονισμού Ατομικές εντολές (Atomic Operations) Φράγματα μνήμης (Memory Barriers) Περιστροφικά Κλειδώματα (Spinlocks) Κλειδώματα αμοιβαίου αποκλεισμού (Mutexes) Σημαφόροι (Semaphores) Ελεγκτές/Παρακολουθητές (Monitors)
24 Ατομικές Εντολές Atomic Operations Εγγυημένες να λειτουργούν ατομικά Υλοποιούνται στο υλικό Χρησιμοποιούνται για τη δημιουργία μηχανισμών συγχρονισμού Παραδείγματα: TestAndSet: Θέτει την τιμή μιας μεταβλητής σε TRUE και επιστρέφει την προηγούμενη τιμή. Swap: Ανταλλάσσει την τιμή δύο μεταβλητών. FetchAndOp: Πραγματοποιεί μια πράξη στην τιμή μιας μεταβλητής και επιστρέφει την προηγούμενη τιμή.
25 Συνέπεια μνήμης memory consistency Μοντέλο συνέπειας μνήμης: Κανόνες που σέβεται το σύστημα και επιτρέπουν στον προγραμματιστή να προβλέψει τη συμπεριφορά του, όταν τους ακολουθεί. Σε αντίθεση με τη συνάφεια, αφορά > 1 θέσεις μνήμης Αφορά το πότε είναι ορατή μια αλλαγή Εξαρτάται από την υποκείμενη αρχιτεκτονική (υλικού ή λογισμικού) Παραδείγματα: strict consistency sequential consistency processor consistency
26 Sequential consistency Υπάρχει ολική διάταξη στις εντολές πρόσβασης μνήμης των επεξεργαστών Τα αποτελέσματα των εντολών σέβονται την διάταξη Η διάταξη των εντολών ενός επεξεργαστή διατηρείται στην ολική διάταξη Η ύπαρξη της ολικής διάταξης δεν συνπέγεται ότι αυτή είναι γνωστή στον χρόνο εκτέλεσης
27 Φράγματα μνήμης memory barriers Στην πράξη τα συστήματα πολλαπλών επεξεργαστών δεν υλοποιούν το μοντέλο Sequential Consistency Βελτιστοποίηση εντολών πρόσβασης στη μνήμη οδηγεί χαλαρά μοντέλα συνέπειας. Φράγματα μνήμης: Μηχανισμοί που επιβάλουν συγκεκριμένη σειρά στις προσβάσεις στη μνήμη πχ lfence, sfence, mfence εντολές σε x86 αρχιτεκτονικές Περισσότερες πληροφορίες: wikipedia: Memory barrier Memory Barriers: a Hardware View for Software Hackers (P. McKenney)
28 Spinlocks Υλοποίηση αμοιβαίου αποκλεισμού με: Ατομικές εντολές Βρόχους ενεργού αναμονής (busy-wait loops)
29 Spinlocks Υλοποίηση αμοιβαίου αποκλεισμού με: Ατομικές εντολές Βρόχους ενεργού αναμονής (busy-wait loops) Παραδείγματα: do { while (TestAndSet(lock)) ; critical section UnSet(lock); remainder section } while (TRUE);
30 Spinlocks Υλοποίηση αμοιβαίου αποκλεισμού με: Ατομικές εντολές Βρόχους ενεργού αναμονής (busy-wait loops) Παραδείγματα: do { while (TestAndSet(lock)) ; critical section UnSet(lock); remainder section } while (TRUE); do { key = TRUE; while (key) Swap(lock,key); critical section UnSet(lock); remainder section } while (TRUE);
31 Επίδοση spinlock Lock Contetion (συναγωνισμός) Ιδανικά η επίδοση ενός κλειδώματος είναι ανεξάρτητη από τον αριθμό των νημάτων που το διακδικούν Στη πράξη, όταν πολλά νήματα διεκδικούν το κλείδωμα δημιουργείται συναγωνισμός Παράδειγμα: H πράξη TestAndSet δημιουργεί κίνηση στον διάδρομο όταν πολλαπλά νήματα ανταγωνίζονται για το κλείδωμα. H κίνηση οδηγεί σε χρονικές καθυστερήσεις. - Χρονική υποχώρηση (backoff) - Test and TestAndSet - Ticket lock (μόνο ανάγνωση για απόκτηση lock) - Array-Based Lock (αναμονή σε διαφορετικές θέσεις μνήμης) do { while (TestAndSet(lock)) ; critical section UnSet(lock); remainder section } while (TRUE);
32 Test and TestAndSet (x86) spin_lock: 1: lock; decl [lock] # Atomically decreament lock jns 2f # If not negative jump to 2 (forward) 3: rep; nop # relax the processor cmpl $0, [lock] # compare lock with zero jle 3b # lock still less than zero jmp 1b # try again to get the lock 2: # got the lock spin_unlock: movl $1, [lock]
33 Ticket lock atomic_t now-serving = 0; atomic_t next-ticket = 0; lock: myticket = FetchAndInc(next-ticket); while (myticket!= now-serving) ; unlock: Inc(now-serving);
34 Array-based lock atomic_t spin-locations[p] = {LOCKED, LOCKED,...}; atomic_t next-location = 0; lock: myloc = FetchAndInc(next-location) % P; while (spin-locations[myloc] == LOCKED) ; unlock: Set(spin-locations[myloc], LOCKED); Set(spin-locations[myloc + 1 % P], UNLOCKED); Το πολύ P νήματα για το κλείδωμα Ζητήματα cache
35 Array-based lock atomic_t spin-locations[p] = {LOCKED, LOCKED,...}; atomic_t next-location = 0; lock: myloc = FetchAndInc(next-location) % P; while (spin-locations[myloc] == LOCKED) ; unlock: Set(spin-locations[myloc], LOCKED); Set(spin-locations[myloc + 1 % P], UNLOCKED); Το πολύ P νήματα για το κλείδωμα Ζητήματα cache false sharing
36 Σημαφόροι Semaphores Επινοήθηκαν από τον Dijkstra Λειτουργίες: Αρχικοποιείται σε μία ακέραιη τιμή. Μετά την αρχικοποίηση μόνο δύο λειτουργίες επιτρέπονται η wait() και η signal() wait(): Ο ακέραιος αριθμός μειώνεται. Αν γίνει αρνητικός τότε το νήμα σταματάει την λειτουργία του και περιμένει signal(): Ο ακέραιος αριθμός αυξάνεται. Αν υπάρχουν νήματα που περιμένουν, ένα από αυτά συνεχίζει την λειτουργία του
37 Σημαφόροι Σημειώσεις Μια διεργασία δεν μπορεί να ξέρει την τιμή του σημαφόρου και συγκεκριμένα δεν ξέρει αν θα χρειαστεί να περιμένει ή όχι σε περίπτωση που καλέσει την wait() Δεν υπάρχει κάποιος κανόνας για το ποιο νήμα, από αυτά που περιμένουν, θα συνεχίσει την λειτουργία του μετά από κλήση της signal() Ένα Mutex μπορεί να υλοποιηθεί με έναν σημαφόρο αρχικοποιημένο στο 1 (unlocked) Οι λειτουργίες στους σημαφόρους παραδοσιακά αναφέρονται και ως P() (wait()) και V() (signal()).
38 Πρόβλημα Παραγωγού-Καταναλωτή #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; void enqueue(item_t item){ item_t dequeue(void){ } while (count == N) ; // wait buffer[in] = item; in = NEXT(in); count++; } item_t item; while (count == 0) ; // wait item = buffer[out]; out = NEXT(out); count--; return item
39 Πρόβλημα Παραγωγού-Καταναλωτή #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; sema_t mutex = semaphore(1); void enqueue(item_t item){ wait(mutex); while (count == N) ; // wait buffer[in] = item; in = NEXT(in); count++; signal(mutex); } item_t dequeue(void){ wait(mutex); item_t item; while (count == 0) ; // wait item = buffer[out]; out = NEXT(out); count--; signal(mutex); return item }
40 Πρόβλημα Παραγωγού-Καταναλωτή #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; sema_t mutex = semaphore(1); void enqueue(item_t item){ wait(mutex); while (count == N) ; // wait buffer[in] = item; in = NEXT(in); count++; signal(mutex); } ΑΔΙΕΞΟΔΟ! (deadlock) item_t dequeue(void){ wait(mutex); item_t item; while (count == 0) ; // wait item = buffer[out]; out = NEXT(out); count--; signal(mutex); return item }
41 Πρόβλημα Παραγωγού-Καταναλωτή (Σωστή λύση) #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; sema_t mutex = semaphore(1); sema_t full = semaphore(0); sema_t empty = semaphore(n); void enqueue(item_t item){ buffer[in] = item; in = NEXT(in); count++; item_t dequeue(void){ item_t item; item = buffer[out]; out = NEXT(out); count--; } } return item
42 Πρόβλημα Παραγωγού-Καταναλωτή (Σωστή λύση) #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; sema_t mutex = semaphore(1); sema_t full = semaphore(0); sema_t empty = semaphore(n); void enqueue(item_t item){ wait(empty); wait(mutex); buffer[in] = item; in = NEXT(in); count++; signal(mutex); signal(full); } item_t dequeue(void){ item_t item; wait(full); wait(mutex); item = buffer[out]; out = NEXT(out); count--; signal(mutex); signal(empty); return item }
43 Πρόβλημα Αναγνωστών - Εγγραφέων readers-writers problem Δύο κλάσεις προσβάσεων: Αναγνώστες: Δεν αλλάζουν τα δεδομένα Εγγραφείς: Αλλάζουν τα δεδομένα Κανόνες: Επιτρέπονται πολλαπλοί Αναγνώστες ταυτόχρονα Οι Εγγραφείς πρέπει να έχουν αποκλειστική πρόσβαση Χρησιμοποιείται για δομές που δεν αλλάζουν συχνά Προτεραιότητες: Οι εγγραφείς περιμένουν έως ότου δεν υπάρχουν αναγνώστες Οι αναγνώστες περιμένουν όταν κάποιος εγγραφέας είναι έτοιμος Πιθανή Λιμοκτονία (starvation) και στις δύο περιπτώσεις
44 Πρόβλημα Αναγνωστών - Εγγραφέων προτεραιότητα στους αναγνώστες sema_t mutex = semaphore(1); sema_t write = semaphore(1); int readcount = 0; read_lock: wait(mutex); if (++readcount == 1) wait(write); signal(mutex); write_lock: wait(write); write_unlock: signal(write); read_unlock: wait(mutex); if (--readcount == 0) signal(write); signal(mutex);
45 Το πρόβλημα των συνδαιτυμόνων φιλοσόφων Dining philosophers problem - 5 φιλόσοφοι - 5 ξυλάκια φαγητού P1 - Όταν ένας φιλόσοφος πεινάει, χρειάζεται 2 ξυλάκια για να φάει P5 P2 - Δεν μπορούν 2 φιλόσοφοι να χρησιμοποιούν το ίδιο ξυλάκι - Aποφυγή αδιεξόδου - Αποφυγή λιμοκτονίας P4 P3
46 Λύση στο πρόβλημα των συνδαιτυμόνων φιλοσόφων #define NEXT(x) ((x+1) % N) sema_t F[N]; //forks do { wait(f[i]); wait(f[next(i)]); eat(); signal(f[next(i)]); signal(f[i]); think(); } while (TRUE); P5 P1 P2 P4 P3
47 Λύση στο πρόβλημα των συνδαιτυμόνων φιλοσόφων #define NEXT(x) ((x+1) % N) sema_t F[N]; //forks do { wait(f[i]); wait(f[next(i)]); eat(); signal(f[next(i)]); signal(f[i]); think(); } while (TRUE); P5 P1 P2 1. P1 παίρνει F1 2. P2 παίρνει F2 3. P3 παίρνει F3 4. P4 παίρνει F4 5. P5 παίρνει F5 P4 P3
48 Λύση στο πρόβλημα των συνδαιτυμόνων φιλοσόφων #define NEXT(x) ((x+1) % N) sema_t F[N]; //forks do { wait(f[i]); wait(f[next(i)]); eat(); signal(f[next(i)]); signal(f[i]); think(); } while (TRUE); P5 L W L P1 W L W P2 1. P1 παίρνει F1 2. P2 παίρνει F2 3. P3 παίρνει F3 4. P4 παίρνει F4 5. P5 παίρνει F5 Αδιέξοδο! W P4 L W P3 L
49 Λύσεις στο πρόβλημα των συνδαιτυμόνων φιλοσόφων (σωστές) Λύσεις P1 P5 P2 P4 P3
50 Λύσεις στο πρόβλημα των συνδαιτυμόνων φιλοσόφων (σωστές) Λύσεις 1. Χρήση σημαφόρου, αρχικοποιημένου στην τιμή 4, ώστε σε κάθε περίπτωση να μην διεκδικούν και οι 5 φιλόσοφοι τα ξυλάκια. P5 P1 P2 P4 P3
51 Λύσεις στο πρόβλημα των συνδαιτυμόνων φιλοσόφων (σωστές) Λύσεις 1. Χρήση σημαφόρου, αρχικοποιημένου στην τιμή 4, ώστε σε κάθε περίπτωση να μην διεκδικούν και οι 5 φιλόσοφοι τα ξυλάκια. P5 P1 P2 2. Σε περίπτωση που ένας από τους φιλόσοφους ξεκινάει να πάρει ένα ξυλάκι με διαφορετική σειρά από ότι οι υπόλοιποι, τότε δεν μπορεί να δημιουργηθεί αδιέξοδο. P4 P3
52 Ελεγκτές/Παρακολουθητές (Monitors) Οι σημαφόροι παρέχουν βολικό και αποτελεσματικό μηχανισμό συγχρονισμού Ωστόσο: βάρος χρήσης στον προγραμματιστή (που δεν είναι ποτέ καλή ιδέα )
53 Ελεγκτές/Παρακολουθητές (Monitors) Οι σημαφόροι παρέχουν βολικό και αποτελεσματικό μηχανισμό συγχρονισμού Ωστόσο: βάρος χρήσης στον προγραμματιστή (που δεν είναι ποτέ καλή ιδέα ) Ελεγκτές/Παρακολουθητές: Υψηλού επιπέδου σχήματα συγχρονισμού που παρέχονται από τις γλώσσες προγραμματισμού Αφηρημένος τύπος δεδομένων (abstract data type -- ADT) Κρύβει λεπτομέρειες υλοποίησης Δεν επιτρέπει απευθείας πρόσβαση στα δεδομένα (ιδιωτικά δεδομένα) Ο προγραμματιστής ορίζει λειτουργίες (μεθόδους)
54 Ελεγκτές/Παρακολουθητές (παράδειγμα δομής) monitor MyMonitor { // shared variables int a; // methods procedure P_1(...) {... } procedure P_2(...) {... } } // initialization initialize() { a = }
55 Ελεγκτές/Παρακολουθητές Μηχανισμοί που παρέχονται Αμοιβαίος Αποκλεισμός (mutual exclusion) Μεταβλητές συνθήκης (condition variables)
56 Ελεγκτές/Παρακολουθητές Μηχανισμοί που παρέχονται Αμοιβαίος Αποκλεισμός (mutual exclusion) Όταν μια διεργασία εκτελεί μια λειτουργία, τότε η διεργασία βρίσκεται μέσα στον παρακολουθητή Είναι εγγυημένο ότι μόνο μια διεργασία μπορεί να είναι ενεργή μέσα στον παρακολουθητή Μεταβλητές συνθήκης (condition variables)
57 Ελεγκτές/Παρακολουθητές Μηχανισμοί που παρέχονται Αμοιβαίος Αποκλεισμός (mutual exclusion) Όταν μια διεργασία εκτελεί μια λειτουργία, τότε η διεργασία βρίσκεται μέσα στον παρακολουθητή Είναι εγγυημένο ότι μόνο μια διεργασία μπορεί να είναι ενεργή μέσα στον παρακολουθητή Μεταβλητές συνθήκης (condition variables) Μηχανισμός, ώστε μια διεργασία να αναστέλλει την λειτουργία της έως ότου ικανοποιηθεί μια συνθήκη (πχ Παραγωγός-Καταναλωτής) Λειτουργίες: wait(): Η διεργασία αδρανοποιείται μέχρι να κληθεί η signal(). signal(): Ενεργοποιεί (ακριβώς) μια αδρανοποιημένη διεργασία. (Πότε ;)
58 Παράδειγμα Παρακολουθητή Παραγωγός-Καταναλωτής #define NEXT(x) ((x + 1) % N) monitor ProducerConsumer { } // end ProducerConsumer
59 Παράδειγμα Παρακολουθητή Παραγωγός-Καταναλωτής #define NEXT(x) ((x + 1) % N) monitor ProducerConsumer { item_t buffer[n]; int in=0, out=0, count=0; condition full, empty; void enqueue(item_t item){ item_t dequeue(void){ } } // end ProducerConsumer }
60 Παράδειγμα Παρακολουθητή Παραγωγός-Καταναλωτής #define NEXT(x) ((x + 1) % N) monitor ProducerConsumer { item_t buffer[n]; int in=0, out=0, count=0; condition full, empty; void enqueue(item_t item){ while (count == N) wait(full); buffer[in] = item; in = NEXT(in); if (++count == 1) signal(empty); } } // end ProducerConsumer item_t dequeue(void){ }
61 Παράδειγμα Παρακολουθητή Παραγωγός-Καταναλωτής #define NEXT(x) ((x + 1) % N) monitor ProducerConsumer { item_t buffer[n]; int in=0, out=0, count=0; condition full, empty; void enqueue(item_t item){ while (count == N) wait(full); buffer[in] = item; in = NEXT(in); if (++count == 1) signal(empty); } } // end ProducerConsumer item_t dequeue(void){ item_t item; while (count == 0) wait(empty); item = buffer[out]; out = NEXT(out); if (count-- == N) signal(full); return item; }
62 Διεπαφή pthreads Υλοποιήσεις GNU libc, NPTL (2.6 linux) -- "1-1" Pth, νήματα χώρου χρήστη Διεπαφή Δημιουργία και έλεγχος νημάτων: pthread_{create,exit,join,cancel} Κλειδώματα (Mutexes): pthread_mutex_{init,destroy,lock,unlock,trylock} Μεταβλητές συνθήκης (condition variables): pthread_cond_{init,destroy,signal,broadcast,wait}
63 pthreads Hello World #include <stdio.h> #include <pthread.h> #define NUM_THREADS 8 #define pcreate pthread_create #define pjoin pthread_join void *hello(void *arg) { int *i = (int *)arg; printf("[%d] Hello!\n",*i); return NULL; } int main(int argc, char *argv[]) { pthread_t t[num_threads]; int i, ids[num_threads]; for (i=0; i<num_threads; i++){ ids[i] = i; pcreate(t+i,null,hello,ids+i); } for (i=0; i<num_threads; i++) pjoin(t[i], NULL); return 0; }
64 pthreads Hello World #include <stdio.h> #include <pthread.h> #define NUM_THREADS 8 #define pcreate pthread_create #define pjoin pthread_join void *hello(void *arg) { int *i = (int *)arg; printf("[%d] Hello!\n",*i); return NULL; } int main(int argc, char *argv[]) { pthread_t t[num_threads]; int i, ids[num_threads]; } for (i=0; i<num_threads; i++){ ids[i] = i; pcreate(t+i,null,hello,ids+i); } for (i=0; i<num_threads; i++) pjoin(t[i], NULL); return 0; $ gcc -Wall -O2 -lpthread -o hello hello.c $./hello [0] Hello! [2] Hello!...
65 pthreads: Mεταβλητές συνθήκης int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); Η συνάρτηση αναμονής έχει ως παράμετρο ένα lock (mutex) Μετά από ξύπνημα του νήματος θα πρέπει πάντα να ελέγχεται η συνθήκη (spurious wakeup)
66 Κεντρικό και πολλαπλά κλειδώματα για κοινούς πόρους Big lock vs fine-grain locking - Θεωρούμε: Διεργασίες ( x) Πόρους (Πx).Δ0.Δ2.Δ1.Π0.Π3.Π2..Π1
67 Κεντρικό και πολλαπλά κλειδώματα για κοινούς πόρους Big lock vs fine-grain locking - Θεωρούμε: Διεργασίες ( x) Πόρους (Πx) - Κεντρικό κλείδωμα (ΚΚ): Όποια διεργασία πάρει το ΚΚ μπορεί να χρησιμοποιήσει όλους τους πόρους.δ0.δ2.δ1.kk..π0..π1.π3.π2
68 Κεντρικό και πολλαπλά κλειδώματα για κοινούς πόρους Big lock vs fine-grain locking - Θεωρούμε: Διεργασίες ( x) Πόρους (Πx) - Κεντρικό κλείδωμα (ΚΚ): Όποια διεργασία πάρει το ΚΚ μπορεί να χρησιμοποιήσει όλους τους πόρους.δ0.δ2.δ1 - Πολλαπλά κλειδώματα (fine-grain locking) 1 κλείδωμα ανά διαθέσιμο πόρο + Δυνατότητα παραλληλίας..π0...π1..π3..π2
69 Κεντρικό και πολλαπλά κλειδώματα για κοινούς πόρους Big lock vs fine-grain locking - Θεωρούμε: Διεργασίες ( x) Πόρους (Πx) - Κεντρικό κλείδωμα (ΚΚ): Όποια διεργασία πάρει το ΚΚ μπορεί να χρησιμοποιήσει όλους τους πόρους.δ0.δ2.δ1 - Πολλαπλά κλειδώματα (fine-grain locking) 1 κλείδωμα ανά διαθέσιμο πόρο + Δυνατότητα παραλληλίας - Κίνδυνος αδιεξόδου (Δ0 έχει Π0 και περιμένει Π3, Δ2 έχει Π3 και περιμένει Π0)..Π0...Π1..Π3..Π2
70 Αναγκαίες συνθήκες για δημιουργία αδιεξόδου Αμοιβαίος αποκλεισμός Ένας τουλάχιστον πόρος να μην υποστηρίζει διαμοιραζόμενο τρόπο λειτουργίας Κράτημα και αναμονή Κατά την απόκτηση πρόσβασης στους πόρους που χρειάζεται οι διεργασίες θα πρέπει να μην απελευθερώνουν πόρους που έχουν δεσμεύσει και να περιμένουν να απελευθερωθούν οι υπόλοιποι Χωρίς Διακοπή Οι πόροι μπορούν να απελευθερωθούν μόνο εθελοντικά από τις διεργασίες που τους έχουν δεσμεύσει Κυκλική Αναμονή P 1 αναμένει πόρο της P 2... P n 1 αναμένει πόρο της P n P n αναμένει πόρο της P 1
71 Αποτροπή αδιεξόδων αφετηρία: αναγκαίες συνθήκες Αμοιβαίος αποκλεισμός Χρήση πόρων που μπορούν να διαμοιραστούν (πχ αρχεία για ανάγνωση) Κράτημα και αναμονή & Χωρίς Διακοπή Εναλλακτικά πρωτόκολλα Κυκλική Αναμονή Διάταξη πόρων και πραγματοποίηση αιτήσεων με συγκεκριμένη σειρά
72 Τέλος
Μηχανισμοί και προγραμματιστικές δομές συγχρονισμού. Προβλήματα συγχρονισμού (και λύσεις)
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Περιεχόμενα
Διαβάστε περισσότεραCSLab National Technical University of Athens
http://www.cslab.ece.ntua.gr/courses/os CSLab National Technical University of Athens #define NEXT(x) ((x + 1) % N) item_t buffer[n]; int in=0, out=0, count=0; #define NEXT(x) ((x + 1) % N) item_t buffer[n];
Διαβάστε περισσότεραΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων
ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων ΕΜΠ Κορνήλιος Κούρτης kkourt@cslab.ece.ntua.gr p. 1 Περιβάλλον Πολλαπλών Νηµάτων Threads T0
Διαβάστε περισσότεραΛειτουργικά Συστήματα
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 4α: Σημαφόροι, Πρόβλημα Συνδαιτυμόνων Φιλοσόφων, Αδιέξοδα Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΣυγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα 9 ο Εξάμηνο Η ανάγκη για συγχρονισμό
Διαβάστε περισσότεραΛειτουργικά Συστήματα Η/Υ
Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του
Διαβάστε περισσότεραDr. Garmpis Aristogiannis - EPDO TEI Messolonghi
Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει
Διαβάστε περισσότεραΛειτουργικά Συστήματα
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 4 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση
Διαβάστε περισσότερα2.4 Κλασσικά Προβλήματα IPC
2.4 Κλασσικά Προβλήματα IPC 1 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { think; take_fork(i);/* πάρε αριστερό ξυλάκι */ take_fork(i+1
Διαβάστε περισσότεραΛειτουργικά Συστήματα (ΗΥ222)
Λειτουργικά Συστήματα (ΗΥ222) Ταυτοχρονισμός, Συγχρονισμός Πολλαπλές Διεργασίες/Νήματα σε 1 Κοινωνία: Προβλήματα; «Κοινωνικές Γιάννης διεργασίες/νήματα»: Διαβάζουν/γράφουν στον ίδιο χώρο. Αποτέλεσμα; Πιθανότατα
Διαβάστε περισσότεραΕθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 3 η Εργαστηριακή Άσκηση: Συγχρονισμός Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017
Διαβάστε περισσότεραΕθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 3 η Εργαστηριακή Άσκηση: Συγχρονισμός Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2017-2018
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός
Αμοιβαίος αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του αμοιβαίου αποκλεισμού I. Προσεγγίσεις λογισμικού II. Υποστήριξη εκ μέρους του υλικού III. Σηματοφορείς 4. Κλασσικά
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1
Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση
Διαβάστε περισσότεραΕργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)
Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που
Διαβάστε περισσότεραΔιεργασίες (Processes)
Διεργασία (process) ή καθήκον (task) Διεργασίες (Processes) στοιχειώδης οντότητα/δραστηριότητα υπολογισμού (processing entity/activity) εκτέλεση ενός προγράμματος ένα (κύριο) νήμα (thread)/ρεύμα ελέγχου/εκτέλεσης
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΕπικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες
Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Interprocess Communication and Concurrent Processes Περίληψη Σύνδροµος Προγραµµατισµός Συνθήκη συναγωνισµού Συγχρονισµός διεργασιών Κρίσιµες περιοχές
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΕλεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1
Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων
Διαβάστε περισσότεραΠροσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα
Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα ΙΙΙ 1 lalis@inf.uth.gr Προβλήματα με κλείδωμα Υπερβολική σειριοποίηση / άσκοπη αναμονή Κόστος συγχρονισμού Αδιέξοδα Απότομος τερματισμός νημάτων
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1
Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση
Διαβάστε περισσότεραΕλεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1
Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός
Διαβάστε περισσότεραΠροσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα
Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα ΙΙΙ 1 lalis@inf.uth.gr Προβλήματα με κλείδωμα Υπερβολική σειριοποίηση / άσκοπη αναμονή Κόστος συγχρονισμού Αδιέξοδα Απότομος τερματισμός νημάτων
Διαβάστε περισσότεραΛειτουργικά Συστήματα
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 3: Δρομολόγηση Κεντρικής Μονάδας Επεξεργασίας Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή
ΚΕΦΑΛΑΙΟ 9 Ταυτόχρονος προγραμματισμός και νήματα Σύνοψη Σε αυτό το κεφάλαιο πραγματευόμαστε τον ταυτόχρονο προγραμματισμό με τη χρήση νημάτων. Η έμφαση είναι στην κατανόηση βασικών λειτουργιών των νημάτων
Διαβάστε περισσότεραΠρογραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4
Προγραμματισμός με Κοινόχρηστο Χώρο Διευθύνσεων 4 Με το κεφάλαιο αυτό, αλλάζουμε θεματολογία και μπαίνουμε στον χώρο του προγραμματισμού των παράλληλων συστημάτων. Σε αντίθεση με τους κλασικούς σειριακούς
Διαβάστε περισσότεραNIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1 Ένα thread έχει: ID, program counter, register set, stack Μοιράζεται με τα άλλα threads της ίδιας διεργασίας τον κώδικα, τα δεδομένα και τους άλλους πόρους
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων Δεν γνωρίζει πότε θα αρχίσει
Διαβάστε περισσότεραΚρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1
Κρίσιμη Περιοχή Υπό Συνθήκη (onditional ritical Regions) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Πέρα από ελεγκτές Ο ελεγκτής είναι χρήσιμο εργαλείο συγχρονισμού παρέχει στον προγραμματιστή εγγυημένο
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΗ πολυνηματική γλώσσα προγραμματισμού Cilk
Η πολυνηματική γλώσσα προγραμματισμού Cilk Β Καρακάσης Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού Μεταπτυχιακό Μάθημα (688), ΣΗΜΜΥ Νοέμβριος 2009 Β Καρακάσης (CSLab, NTUA) ΣΗΜΜΥ, Μετ/κό 688 9/2009
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1
Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση
Διαβάστε περισσότεραΔιεργασίες και Νήματα (2/2)
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής,
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Συγχρονισμός (συνέχεια) Μεταβλητές υπό συνθήκη Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο
Διαβάστε περισσότεραΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΑΔΙΕΞΟΔΩΝ (DEADLOCKS) Γενικά, για τη διαχείριση των αδιεξόδων
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran
Διαβάστε περισσότεραΝΗΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Νήματα (Threads) ΝΗΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία Κεφάλαιο 5 Μοίρασμα Δεδομένων
Παράλληλη Επεξεργασία Κεφάλαιο 5 Μοίρασμα Δεδομένων Κωνσταντίνος Μαργαρίτης Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας kmarg@uom.gr http://eos.uom.gr/~kmarg Αρετή Καπτάν Υποψήφια
Διαβάστε περισσότεραΣυγχρονισμός & σηματοφόροι. Προγραμματισμός II 1
Συγχρονισμός & σηματοφόροι Προγραμματισμός II 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Οι διεργασίες εκτελούνται ταυτόχρονα μεταξύ τους Ο προγραμματιστής δεν ελέγχει την εναλλαγή Τι γίνεται αν δύο ή περισσότερες
Διαβάστε περισσότεραΕκφωνήσεις ασκήσεων εργαστηρίου 2 (pthreads)
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Γιώργος Δημητρίου Ενότητα 11 η : Εισαγωγή σε Παράλληλες Αρχιτεκτονικές Παράλληλη Επεξεργασία Επίπεδο Παραλληλισμού Από εντολές έως ανεξάρτητες διεργασίες Οργανώσεις Παράλληλων Αρχιτεκτονικών Συμμετρικοί,
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΥ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης
Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΜάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός
Μάθημα 4 ο Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Εισαγωγή Σκοπός του μαθήματος αυτού είναι να εξηγήσει την έννοια του κρίσιμου τμήματος σε μία διεργασία και να δείξει τη λύση για ένα απλό πρόβλημα
Διαβάστε περισσότεραΕισαγωγή στα Λειτουργικά Συστήματα
Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 4: Διεργασίες ΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για
Διαβάστε περισσότερα3 η ΑΣΚΗΣΗ. Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 3 η ΑΣΚΗΣΗ Προηγμένα
Διαβάστε περισσότεραΥ- 07 Παράλληλα Συστήματα Συνχρονισμός, κρυφές μνήμες πολλαπλών επιπέδων
Υ- 07 Παράλληλα Συστήματα Συνχρονισμός, κρυφές μνήμες πολλαπλών επιπέδων Αρης Ευθυμίου Synchroniza6on The need for synchronization arises whenever there are concurrent processes in a system (even in a
Διαβάστε περισσότεραΠροβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1
Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Υλοποίηση σηματοφόρων Οι σηματοφόροι είναι ένας ΑΤΔ με συγκεκριμένες λειτουργίες πρόσβασης Μπορεί να υλοποιηθούν με «φυσικό»
Διαβάστε περισσότεραΑνάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου
ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές
Διαβάστε περισσότεραΛειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι
Διαβάστε περισσότεραΣυγχρονισμός. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Συγχρονισμός 9 ο Εξάμηνο Σύνοψη Το πρόβλημα του συγχρονισμού Βασικοί μηχανισμοί Κλειδώματα
Διαβάστε περισσότεραΤι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι
Διαβάστε περισσότεραΕργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ
Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΕΡΓΑΣΙΕΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΔΙΕΡΓΑΣΙΕΣ Διεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράμματος
Διαβάστε περισσότεραΔιεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1
Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΟρισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα
ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΑδιέξοδα (Deadlocks)
Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΑδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)
Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Εισαγωγή Μοντέλο συστήματος Χαρακτηρισμός και ορισμός κατάστασης αδιεξόδου Μέθοδοι χειρισμού αδιεξόδων Αποτροπή αδιεξόδου (Deadlock Prevention) Αποφυγή
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 4: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Πίνακες Δεικτών, Παραδείγματα, Πολυδιάστατοι πίνακες Πέρασμα παραμέτρων σε προγράμματα C Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες:
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότεραΥ- 07 Παράλληλα Συστήματα Transac9onal memory
Υ- 07 Παράλληλα Συστήματα Transac9onal memory Αρης Ευθυμίου Παρ. προγρ/μός με κλειδιά Χαμηλού επιπέδου πολύ κοντά στα μέσα και τις δομές του υλικού πολλές λεπτομέρειες, εύκολα γίνεται λάθος χαμηλή παραγωγικότητα
Διαβάστε περισσότεραΚεφάλαιο 3. Διδακτικοί Στόχοι
Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με pthreads Γκόγκος Χρήστος Παράδειγμα
Διαβάστε περισσότεραΛειτουργικά Συστήματα (ΗΥ222)
Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 5: Αδιέξοδα Συγχρονισμός στον Πραγματικό Κόσμο Χρειάζεται οποτεδήποτε > 1 χρήστης πόρου Λίγο πολύ οι ίδιες λύσεις με τον πραγματικό κόσμο: κλείδωμα (στo WC), χρονοπρογραμματισμός
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΙδιοκτησία Αντικειµένου
Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΘοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο
Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Για το μάθημα «Διαχείριση Λειτουργικών Συστημάτων» του ακαδημαϊκού έτους 2015 2016, το προτεινόμενο σύγγραμμα είναι το: Operating Systems: Internals
Διαβάστε περισσότεραΕργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() Επικοινωνία διεργασιών signals, sockets και client/server, shared memory Συγχρονισμός
Διαβάστε περισσότεραΣυγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση
Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση Κεφάλαιο 6 Αδιέξοδο Μόνιµη αναµονή ενός συνόλου διεργασιών οι οποίες ανταγωνίζονται για πόρους του συστήµατος ή για να επικοινωνήσουν µεταξύ τους εν υπάρχει
Διαβάστε περισσότεραΑδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)
Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Το Πρόβλημα του Αδιεξόδου Ένα σύνολο από διεργασίες σε αναμονή, όπου η κάθε μια κατέχει έναν αριθμό από πόρους και περιμένει να αποκτήσει και έναν
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΛειτουργικά συστήματα πραγματικού χρόνου
Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Διαμοίραση έργου και συγχρονισμός στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Παράλληλες Περιοχές Καθορίζονται
Διαβάστε περισσότεραΚλείδωμα αρχείων (file locking) Προγραμματισμός II 1
Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος 2010-2011
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Θέμα
Διαβάστε περισσότεραΑ. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),
Διαβάστε περισσότεραΣηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1
Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό
Διαβάστε περισσότεραΚατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp Γκόγκος Χρήστος Παράδειγμα
Διαβάστε περισσότερα