ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία
|
|
- Ἥβη Βλαβιανός
- 7 χρόνια πριν
- Προβολές:
Transcript
1 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin and Gange, Operating Systems Concepts. Deitel, Deitel and Choffnes, Operating Systems Λειτουργικά Συστήματα, Γ.Α. Παπαδόπουλος, Πανεπιστήμιο Κύπρου Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ Systems Programming in C, A.D. Marshal, University of Cardiff Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
2 Διαδιεργασιακή επικοινωνία (IPC) (1) Οι διεργασίες (και τα νήματα) κατ' αρχήν εκτελούνται ανεξάρτητα και δεν μπορούν να συνεργαστούν παρά μόνο μέσω υπηρεσιών του λ.σ. Η συνεργασία είναι απαραίτητη για το συντονισμό των δραστηριοτήτων του συστήματος ή της εφαρμογής. Η συνεργασία διεργασιών λέγεται Διαδιεργασιακή Επικοινωνία (Inter Process Communication, IPC) Η IPC είναι απαραίτητη σε λ.σ. πολυ- προγραμματισμού καθώς και σε παράλληλα κατανεμηνένα λ.σ. Η διαδιεργασιακή επικοινωνία θέτει δύο ειδών ζητήματα: (α) Ποιοί μηχανισμοί πρέπει να είναι διαθέσιμοι στο λ.σ.; (β) Ποιές κλήσεις συστήματος πρέπει να είναι διαθέσιμες στο API; Τα API's για τη δημιουργία διεργασιών και για τη διεργασιακή επικοινωνία αποτελούν τη βάση του συντρέχοντος (concurrent) προγραμματισμού.
3 Διαδιεργασιακή επικοινωνία (IPC) (2) Η διαδιεργασιακή επικοινωνία παρέχει ένα σύνολο μηχανισμών που επιτρέπει στις διεργασίες να συγχρονίζουν την εκτέλεσή τους να μεταβιβάζουν δεδομένα να διαμοιράζονται δεδομένα να διαμοιράζονται πόρους Η διαδιεργασιακή επικοινωνία προσφέρει πλεονεκτήματα όπως αρθρωτή ανάπτυξη κώδικα ταχύτερη εκτέλεση εφαρμογών πλαίσιο επίλυσης προβλημάτων πολυπρογραμματισμού και παράλληλλων ή κατανεμημένων λ.σ.
4 Σήματα (signals) (1) Τα σήματα (signals) είναι διακοπές λογισμικού (software interrupts). Τα σήματα μπορεί να είνα σύγχρονα, δηλαδή να προκαλούν συγχρονισμό διεργασιών, αλλά συνήθως είναι ασύγχρονα, δηλαδή οι διεργασίες που τα παραλαμβάνουν τα χειρίζονται στο δικό τους χρόνο. Τα σήματα έχουν διάφορα επίπεδα προτεραιότητας. Για παράδειγμα, σήματα που παράγονται όταν το σύστημα διαγνώσει κάποιο σφάλμα (bus error, memory fault, illegal operation,..) ή όταν ο χρήστης ζητήσει αναστολή ή τερματισμό διαργασίας (ctrl-c ή kill στο Unix) θεωρούνται επείγοντα και η παραλαμβάνουσα διεργασία πρέπει τα εξυπηρετήσει άμεσα. Το σύστημα ορίζει τον αριθμό, τον τύπο και τη προτεραιότητα των σημάτων. Ορισμένα σήματα με σχετικά χαμηλό επίπεδο προτεραιότητας μπορούν να αποκλειστούν, να αγνοηθούν ή να καθυστερήσει η εξυπηρέτησή τους, με ευθύνη του προγραμματιστή (maskable -nonmaskable signals/interrupts). Τα σήματα που αποκλείονται ορίζονται σε μιά 'μάσκα' που τη διαχειριζόμαστε με ειδικές συναρτήσεις. Σε περίπτωση που η διεργασία παραλαβής δεν προβλέπει κάποιο χειρισμό ενός σήματος, το πιθανότερο είναι οτι η παραλαβή του σήματος καταλήγει στο τερματισμό της διεργασίας.
5 Σήματα (signals) (2) Γενικά το σύστημα έχει μια προεπιλεγμένη ενέργεια που ακολουθεί τη παραλαβή κάθε σήματος: Το σήμα απλά διαγράφεται Η διεργασία τερματίζεται Δημιουργείται ένα αντίγραφο του χώρου εργασίας της διεργασίας (core file στο Unix) και η διεργασία τερματίζεται Η διεργασία αναστέλεται Τα σήματα χωρίζονται σε πέντε βασικές κατηγορίες: Συμβάντα Υλικού Συμβάντα Λογισμικού Συμβάντα Εισόδου/Εξόδου Διαχείριση Διεργασιών Διαχείριση Πόρων
6 POSIX signals (1) The signals required by POSIX. SIGHUP 1 SIGINT 2 SIGQUIT 3 SIGKILL 9 SIGALRM 14 SIGCONT 19 SIGILL 4 SIGABRT 6 SIGGCHLD 20
7 POSIX signals (2) Δύο βασικές κλήσεις συστήματος διαχείρισης σημάτων: Αποστολή: kill(pid, sig) Κλήση συστήματος που στέλνει το σήμα sig στη διεργασία pid. Αν pid > 0 το σήμα αποστέλεται στην αντίστοιχη διεργασία. Αν το pid = 0 το σήμα αποστέλεται σε όλες τις διεργασίες, εκτός από αυτές του συστήματος. Παραλαβή: sigaction(sig, &action) Κλήση συστήματος που παραλαμβάνει το σήμα sig και το διαχειρίζεται με βάση τη function(). Υπάρχουν και προκαθορισμένες συναρτήσεις..
8 Κλήσεις συστήματος διαχείρισης διεργασιών και σημάτων POSIX s : error code pid : process ID residual χρόνος που απομένει
9 Συνεργασία και ανταγωνισμός H διαδιεργασιακή επικοινωνία μπορεί να εκφραστεί με: τη συνεργασία τον ανταγωνισμό Η συνεργασία υλοποιείται με την ύπαρξη μηχανισμών ελέγχου για την αποστολή και παραλαβή δεδομένων και σημάτων. Ο ανταγωνισμός υλοποιείται με την ύπαρξη μηχανισμών που επιτρέπουν τον διαμοιρασμό πόρων και δεδομένων. Πολλές φορές η συνεργασία και ο ανταγωνισμός συνυπάρχουν στην επίλυση του ίδιου προβλήματος. Πχ η επικοινωνία μέσω διαμοιραζόμενης μνήμης μπορεί να προκαλέσει συνθήκες ανταγωνισμού ή η αποφυγή ανταγωνισμού απαιτεί συνεργασία.
10 Συνθήκες ανταγωνισμού (1) Δύο διεργασίες A και Β προσπαθούν να προσπελάσουν μοιραζόμενη μνήμη (εδώ το spooler directory) 'ταυτόχρονα'. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
11 Συνθήκες ανταγωνισμού (2) Process A Process Β Spooler directory next_free_slot =in (7) Timeout in=7 next_free_slot=in (7) Copy_file_in_next_free_slot in=next_free_slot+1 Do something else Timeout Copy_file_in_next_free_slot in=next_free_slot+1 Do Something else Timeout in=7 in=8 in=8
12 Συνθήκες ανταγωνισμού (3) Οι συνθήκες κατά τις οποίες δύο ή περισσότερες διεργασίες διαμοιράζονται την ίδια περιοχή μνήμης (ή πόρο) και το τελικό αποτέλεσμα εξαρτάται από τη σειρά αλλά και το χρόνο εκτέλεσής τους, λέγονται συνθήκες ανταγωνισμού (race conditions). Η διόρθωση προγραμμάτων που περιλαμβάνουν συνθήκες ανταγωνισμού δεν είναι εύκολη. Τα σφάλματα παρουσιάζονται τυχαία και μόνο κατά τη διενέργεια αλλεπάλληλων ελέγχων. Ο έλεγχος του ανταγωνισμού αφορά αναπόφευκτα το λ.σ. διότι αυτό υλοποιεί τον διαμοιρασμό των πόρων και των δεδομένων (διαδιεργασιακή επικοινωνία), άρα οποιαδήποτε λύση θα αφορά και υποστήριξη από το λ.σ. Επίσης, σε επίπεδο προγραμματισμού εφαρμογών, πρέπει να προσφέρονται λύσεις κλήσεων συστήματος για σύνδρομο (cocurrent) προγραμματισμό, δηλαδή εφαρμογές με πολλά νήματα ή διεργασίες.
13 Κρίσιμες περιοχές (1) Για να αποφύγουμε τις συνθήκες ανταγωνισμού πρέπει να επιτύχουμε αμοιβαίο αποκλεισμό (mutual exclusion): όταν μια διεργασία επεξεργάζεται μια διαμοιραζόμενη μεταβλητή τότε η εκτέλεσή της δεν πρέπει να διακοπεί μέχρι να ολοκληρώσει τις ενέργεις που σχετίζονται με αυτή τη μεταβλητή. Το τμήμα του κώδικα της διεργασίας που αναφέρεται στην επεξεργασία της διαμοιραζόμενης μεταβλητής λέγεται κρίσιμη περιοχή (critical region) ή κρίσιμο τμήμα (critical section). Οι λειτουργίες μέσα στις κρίσιμες περιοχές πρέπει να εκτελούνται αδιαίρετα, δηλαδή ή πλήρως ή καθόλου. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
14 Κρίσιμες περιοχές (2) Συνθήκες αποφυγής συνθηκών ανταγωνισμού: Δύο διεργασίες δεν μπορεί να βρίσκονται ταυτόχρονα στις ίδιες κρίσιμες περιοχές τους. Δεν επιτρέπονται ιδιαίτερες παραδοχές σχετικά με τη ταχύτητα ή τον αριθμό των επεξεργαστών. Διεργασία που δε βρίσκεται σε κρίσιμη περιοχή δεν μπορεί να αναστείλει άλλες διεργασίες. Καμία διεργασία δεν θα πρέπει να περιμένει για πάντα για να εισέλθει σε κρίσιμη περιοχή.
15 Κρίσιμες περιοχές (3) Αμοιβαίος αποκλεισμός με χρήση κρίσιμων περιοχών. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
16 Αναστολή διακοπών Η διεργασία που μπαίνει σε κρίσιμη περιοχή αναστέλει τις διακοπές. Απλή λύση αλλά απαιτεί εκτέλεση privileged instructions από τις διεργασίες (δικαιώματα kernel mode). Η λύση αυτή χρησιμοποιείται μόνο από τον πυρήνα, όταν πχ εκτελεί context switch και ενημερώνει πίνακες και λίστες διεργασιών, συσκευών, πόρων. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
17 Ενεργός Αναμονή Λήθαργος και Αφύπνιση Στην Ενεργό Αναμονή οι διεργασίες που προσπαθούν να εισέλθουν στη κρίσιμη περιοχή εκτελούν ένα συνεχή βρόχο ερώτησης-αναμονής. Απλή υλοποίηση αλλά με μειονέκτημα τη σπατάλη κύκλων CPU για συνεχείς ερωτήσεις. Πχ Κλειδώματα (Lock, Spinlock) Στο Λήθαργο και Αφύπνιση οι διεργασίες που προσπαθούν να εισέλθουν στη κρίσιμη περιοχή ρωτούν μια φορά και αν αποτύχουν μεταπίπτουν σε αναστολή αναμένοντας σήμα αφύπνισης. Απαιτούνται πιο σύνθετες υλοποιήσεις. Πχ Mutexes, Σηματοφόροι (Semaphores) Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
18 Κλείδωμα (Lock, Spinlock) (1) Process 0... enter_region(lock); critical_region(); leave_region(lock);... Process 1... enter_region(lock); critical_region(); leave_region(lock);... H μεταβλητή τύπου κλειδώματος LOCK ελέγχει την πρόσβαση των διεργασιών 0 και 1 στη κρίσιμη περιοχή. Οι ρουτίνες enter_region() και leave_region() εξηγούνται παρακάτω. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
19 Εντολή TSL (Test and Set Lock) Η είσοδος στη κρίσιμη περιοχή εκτελείται με την εντολή TSL η οποία ελέγχει και προσπαθεί να αλλάξει την τιμή του κλειδώματος σε μια αδιαίρετη ενέργεια (atomic action). Η έξοδος από τη κρίσιμη περιοχή επαναφέρει την τιμή αρχική του κλειδώματος. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
20 Lock, Spinlock: παράδειγμα (1) PROCESS 0 PROCESS 1 a = data; /* a = 10 */ a++; /* a = 11 */ b = data; /* b = 10 */ b ; /* b = 9 */ data = a; /* data = 11 */ data = b; /* data = 9 */ H τροποποίηση της μεταβλητής data είναι η κρίσιμη περιοχή. Πιθανή εκτέλεση χωρίς κλείδωμα προκαλεί σφάλμα.
21 Lock, Spinlock: παράδειγμα (2) PROCESS 0 PROCESS 1 lock (&a_lock); lock (&a_lock); a = data; a++; data = a; unlock (&a_lock); /* spinning */ /* spinning */ /* spinning */ /* spinning */ b = data; b ; data = b; unlock (&a_lock); H τροποποίηση της μεταβλητής data είναι η κρίσιμη περιοχή. Προστατεύεται από το κλείδωμα a_lock.
22 Mutexes (1) Δυαδική σηματοφόρος (Binary Semapthore) Υποστήριξη υλικού (εντολή γλώσσας μηχανής) = mutex. Έστω s μεταβλητή τύπου mutex. Aρχικοποίηση s = 1; P(s) ή down(&s) sleep() until (s ==1) ; s=0; // wakeup(myself) V(s) ή up(&s) s=1; // wakeup(someone) Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
23 Mutexes (2) Υλοποίηση mutex lock και mutex unlock. Βασική διαφορά με την εντολή TSL το CALL thread_yield, δηλαδή κλήση συστήματος για αναστολή λειτουργίας (sleep()). Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
24 Mutexes και POSIX threads Η Pthread_mutex_trylock προσπαθεί μόνο μια φορά και σε περίpτωση αποτυχίας επιστρέφει κωδκό σφάλματος. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
25 Mutexes και POSIX threads: παράδειγμα THREAD 1 THREAD 2 pthread_mutex_lock (&mut); a = data; a++; data = a; pthread_mutex_unlock (&mut); pthread_mutex_lock (&mut); /* blocked */ /* blocked */ /* blocked */ /* blocked */ b = data; b ; data = b; pthread_mutex_unlock (&mut); Η διαφοροποίηση από τα κλειδώματα βρίσκεται στη κατάσταση Blocked αντί Ready/Running (spinning).
26 Σηματοφόροι (Semaphores) Dijkstra (1965): Ειδικός τύπος δεδομένων, συνδυασμός κλειδώματος-ξεκλειδώματος και ληθάργου-αφύπνισης σε δύο αδιαίρετες ενέργειες (atomic actions). Έστω s μεταβλητή τύπου semaphore. Aρχικοποίηση s = N; P(s) ή down(&s) sleep() until (s > 0); s=s-1; // wakeup(myself) V(s) ή up(&s) s=s+1; // wakeup(someone) Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
27 POSIX semaphores sem_init() -- Αρχικοποιεί ένα σηματοφόρο. sem_destroy() -- Ακυρώνει ένα σηματοφότο. sem_getvalue() -- Αντιγράφει τη τιμή του σηματοφόρου σε ακέραιο. sem_wait(), sem_trywait() -- Αναστέλει τη διεργασία (ή επιστρέφει σήμα) όσο ο σηματοφόρος είναι δεσμευμένος από άλλη διεργασία. Αλλιώς προχωρεί και μειώνει τη τιμή του σηματοφόρου. sem_post() -- Αύξηση της τιμής του σηματοφόρου.
28 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NITER #define SHARED 1 int count = 0; Παράδειγμα (1) void * ThreadAdd(void * a) { int i, tmp; for(i = 0; i < NITER; i++) { tmp = count; tmp = tmp+1; count = tmp; int main(int argc, char * argv[]) { pthread_t tid1, tid2; pthread_create(&tid1, NULL, ThreadAdd, NULL); pthread_create(&tid2, NULL, ThreadAdd, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); if (count!= 2 * NITER) printf("\n BOOM! count is [%d], should be %d\n", count, 2*NITER); else printf("\n OK! count is [%d]\n", count); pthread_exit(null);
29 #include <pthread.h> #include <semaphore.h> #include <stdio.h> #include <stdlib.h> #define NITER #define SHARED 1 int count = 0; sem_t mutx; Παράδειγμα (2) void * ThreadAdd(void * a) { int i, tmp; for(i = 0; i < NITER; i++) { sem_wait(&mutx); tmp = count; tmp = tmp+1; count = tmp; sem_post(&mutx); int main(int argc, char * argv[]) { pthread_t tid1, tid2; sem_init(&mutx, SHARED, 1); pthread_create(&tid1, NULL, ThreadAdd, NULL); pthread_create(&tid2, NULL, ThreadAdd, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL);... pthread_exit(null);
30 Παραγωγός Καταναλωτής Producer - Consumer / Bounded Buffer Problem... Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
31 Παραγωγός - Καταναλωτής: συνθήκη ανταγωνισμού Producer Consumer Count if (count==0)...timeout count=0... insert_item(item) count=count+1 count=1 if (count==1) wakeup(consumer) Consumer is not sleeping... Timeout sleep()... After some time... if (count==n) sleep()... count=n Πρέπει να 'προστατευθούν' : οι πράξεις count+/-1 και οι συνθήκες/γεγονότα if (count==..)sleep()/wakeup()
32 ΠαραγωγόςΚαταναλωτής (1) #include <pthread.h> #include <stdio.h> #include <semaphore.h> #define SHARED 1 void *Producer(void *); void *Consumer(void *); sem_t empty, full; int data; int numiters; /* the two threads */ /* the global semaphores */ /* shared buffer */ int main(int argc, char *argv[]) { /* thread ids and attributes */ pthread_t pid, cid; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); numiters = atoi(argv[1]); sem_init(&empty, SHARED, 1); sem_init(&full, SHARED, 0); /* sem empty = 1 */ /* sem full = 0 */ printf("main started\n"); pthread_create(&pid, &attr, Producer, NULL); pthread_create(&cid, &attr, Consumer, NULL); pthread_join(pid, NULL); pthread_join(cid, NULL); printf("main done\n");
33 Παραγωγός- Καταναλωτής (2) /* deposit 1,..., numiters into the data buffer */ void *Producer(void *arg) { int produced; printf("producer created\n"); for (produced = 0; produced < numiters; produced++) { sem_wait(&empty); data = produced; sem_post(&full); /* fetch numiters items from the buffer and sum them */ void *Consumer(void *arg) { int total = 0, consumed; printf("consumer created\n"); for (consumed = 0; consumed < numiters; consumed++) { sem_wait(&full); total = total+data; sem_post(&empty); printf("for %d iterations, the total is %d\n", numiters, total);
34 Παράδειγμα εκτέλεσης Producer Consumer down(&empty) empty=1 full=0 0 down(&full) 0... up(&full) 1... down(&full) 0 down(&empty) up(&empty) down(&empty) Προσπαθήστε να εκτελέσετε διάφορα σενάρια, πχ τι θα συνέβαινε αν η σειρά των down() ή των up() ήταν διαφορετική σε μια από τις δύο διεργασίες; Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
35 Παραγωγός Καταναλωτής II Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
36 Παράδειγμα εκτέλεσης II Producer down(&empty) down(&mutex) producing up(&mutex) up(&full) down(&empty) down(&mutex) down(&mutex) producing up(&mutex) up(&full) down(&empty) down(&mutex) producing up(&mutex) up(&full) Consumer down(&full) mutex=1 0 N-1 consuming up(&mutex) up(&empty) N-2 N full=0 0 1 down(&full) down(&mutex) empty=n N Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
37 Παρατηρήσεις (1) Κάθε μεταβλητή (ή δομή δεδομένων) που διαμοιράζεται αυτόνομα προστατεύεται από ένα κλείδωμα ή από σηματοφόρο. Οι λύσεις είναι ισοδύναμες, με βασική διαφορά την ενεργό αναμονή ή την αναστολή, αντίστοιχα. Μπορεί να έχουμε κλειδώματα σε ολόκληρες δομές δεδομένων ή μόνο σε στοιχεία τους, πχ κλείδωμα πίνακα, γραμμής ή στοιχείου, κλείδωμα αρχείου, εγγραφής ή πεδίου. Επομένως μπορεί να έχουμε δομές κλειδωμάτων ή σηματοφόρων. Ο προγραμματισμός με κλειδώματα και σηματοφόρους χρησιμοποείται κυρίως σε χαμηλό επίπεδο, για καλά ορισμένες δομές και συγκεκριμένες χρήσεις. Η βασική δυσκολία βρίσκεται στον έλεγχο όλων των δυνατών συνδυασμών και χρονικών ακολουθιών αμοιβαίου αποκλεισμού και sleep() - wakepu(). Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
38 Παρατηρήσεις (2) Όταν προγραμματίζουμε σε ψηλότερο επίπεδο του λ.σ., ή για την ανάπτυξη πολυ-διεργασιακών ή πολυ-νηματικών εφαρμογών σε επίπεδο χρήστη, και γενικότερα στον συντρέχοντα (concurrent) προγραμματισμό, χρησιμοποιούμε κλήσεις συστήματος σε ανώτερες δομές χειρισμού της διαδιεργασιακής επικοινωνίας. Ελεγκτές (Monitors) και Μεταβλητές Συνθήκης (Condition Variables) Μεταβίβαση Μηνυμάτων (Message Passing) Σωληνώσεις ή Διαύλους (Pipes) Απεικόνιση Μνήμης (Memory Mapping) Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
39 Ελεγκτές και μεταβλητές συνθήκης σε Java Threads (1) synchronized class MonitorProducerConsumer { private boolean full, empty; private integer count; public void insert(item data) { if(count == N) wait(full); insert_item(item); count++; if(count == 1) signal(empty); public Item remove() { Item data; if(count == 0) wait(empty); data = remove_item(); count ; if(count == N 1) signal(full);...
40 Ελεγκτές και μεταβλητές συνθήκης σε Java Threads (2) static MonitorProducerConsumer themonitor = new MonitorProducerConsumer(); public class Producer extends Thread { public void run() { while(true) { Item data = produce_item(); themonitor.insert(data);... public class Consumer extends Thread { public void run() { while(true) { Item data = themonitor.remove(data); consume_item(data);...
41 Mεταβλητές συνθήκης με mutexes (1) #include <stdio.h> #include <pthread.h> pthread_mutex_t mtx; pthread_cond_t cond; int how_many = 10; int pool = 0; void * producer(void * ptr) { while (how_many > 0) { pthread_mutex_lock(&mtx); printf("producer: %d\n", how_many); pool = how_many; how_many ; pthread_mutex_unlock(&mtx); pthread_cond_signal(&cond); pthread_exit(0);
42 Mεταβλητές συνθήκης με mutexes (2) void * consumer(void * ptr) { while (how_many > 0) { pthread_mutex_lock(&mtx); pthread_cond_wait(&cond, &mtx); printf("consumer: %d\n", pool); pool = 0; pthread_mutex_unlock(&mtx); pthread_exit(0); int main(int argc, char ** argv) { pthread_t prod, cons; pthread_mutex_init(&mtx, 0); pthread_cond_init(&cond, 0); pthread_create(&cons, 0, consumer, 0); pthread_create(&prod, 0, producer, 0); pthread_join(prod, 0); pthread_join(cons, 0); pthread_cond_destroy(&cond); pthread_mutex_destroy(&mtx); return 0;
43 Ελεγκτές και μεταβλητές συνθήκης Ο ελεγκτής μπορεί να υλοποιηθεί με τους μηχανισμούς που ήδη συζητήθηκαν, αλλά είναι διαφανής στο χρήστη. Χρήση μεταβλητών συνθήκης (condition variables) wait (s) : sleep() until someone.signal(s) signal(s) : wakeup(someone.waiting(s)) Κανόνας: η signal() πάντα τελευταία εντολή στη διαδικασία. Διαφορά με σηματοφόρους: τo s είναι boolean (binary) δεν λαμβάνει τιμές, άρα δεν έχει 'μνήμη'. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
44 Μεταβίβαση Μηνυμάτων (1) Κλήσεις συστήματος για ανάγνωση-εγγραφή σε ουρές μηνημάτων (message queues) τις οποίες διαχειρίζεται το λ.σ. Send(to_pid, &data); Receive(from_pid, &data); Δεν υπάρχουν προβλήματα διαμοιρασμού μνήμης, η μέθοδος μπορεί εύκολα να επεκταθεί σε απομακρυσμένα συστήματα (πχ client-server) Απαιτείται: Εγκαθίδρυση σύνδεσης και πιστοποίηση ταυτότητας. Ενημέρωση αποστολής δεδομένων με κάποιο σήμα στον παραλήπτη. Σύνθεση, αποσύνθεση μυνημάτων (κάποια δομή). Επιβεβαίωση παραλαβής και αρίθμηση ακολουθίας μηνυμάτων.
45 Μεταβίβαση Μηνυμάτων (2) Μεταβίβαση Μηνυμάτων Μοιραζόμενη Μνήμη Διαφοροποίηση κυρίως από τη πλευρά των κλήσεων συστήματος (API). Από τη πλευρά του λ.σ. καταλήγουμε σε παρόμοια αντιμετώπιση: Κοινή προυπόθεση όλων των λύσεων: μηχανισμός κοινής πρόσβασης.
46 Μεταβίβαση Μηνυμάτων (3) User OS
47 Υλοποίηση μεταβίβασης μηνυμάτων Ζητήματα σχεδίασης του λ.σ. Άμεση ή έμμεση επικοινωνία (μέσω mailbox). Απλή ή πολλαπλή επικοινωνία (multicasting). Μια ή πολλές συνδέσεις ανάμεσα σε δύο διεργασίες. Μέγεθος ενταμιευτή ή mailbox (περιορισμένο ή όχι). Mέγεθος και δομή μηνύματος. Σταθερό ή μεταβλητό μέγεθος μηνύματος; Μονόδρομη ή αμφίδρομη σύνδεση. Ανασταλτική (Blocking) ή σύγχρονη (synchronous) - Mη-ανασταλτική (non-blocking) ή ασύγχρονη (asynchronous)
48 POSIX message queues mq_open( ) Opens a message queue. mq_close( ) Closes a message queue. mq_unlink( ) Removes a message queue. mq_send( ) Sends a message to a queue. mq_receive( ) Gets a message from a queue. mq_notify( ) Signals a task that a message is waiting on a queue. mq_setattr( ) Sets a queue attribute. mq_getattr( ) Gets a queue attribute.
49 #include <pthread.h> #include <mqueue.h> Παραγωγός Καταναλωτής με Μεταβίβαση Μηνυμάτων (1) int main(void) { mqd_t messagequeuedescr; /* Create the message queue for sending information between tasks. */ messagequeuedescr = mq_open(messagequeuepath, (O_CREAT O_EXCL O_RDWR)); /* Create the producer task using the default task attributes. Do not * pass in any parameters to the task. */ pthread_create(&producertaskobj, NULL, (void *)producertask, NULL); /* Create the consumer task using the default task attributes. Do not * pass in any parameters to the task. */ pthread_create(&consumertaskobj, NULL, (void *)consumertask, NULL); /* Allow the tasks to run. */ pthread_join(producertaskobj, NULL); pthread_join(consumertaskobj, NULL); return 0; Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
50 Παραγωγός Καταναλωτής με Μεταβίβαση Μηνυμάτων (2) void producertask(void *param) { mqd_t messagequeuedescr; msgbuf_t msg; messagequeuedescr = mq_open(messagequeuepath, O_WRONLY); while (1) { /* Create message msg */ /* Send message */ mq_send(messagequeuedescr, &msg.buf, sizeof(msgbuf_t), 0); void consumertask(void *param) { mqd_t messagequeuedescr; msgbuf_t rcvmsg; messagequeuedescr = mq_open(messagequeuepath, O_RDONLY); while (1) { /* Wait for a new message. */ mq_receive(messagequeuedescr, &rcvmsg.buf, sizeof(msgbuf_t), NULL); /* Cosnume message msg */ Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved
51 Δίαυλος UNIX (pipe) $parent child $who sort lpr Η ουρά μηνυμάτων είναι ένα αρχείο (κειμένου ή δυαδικό).
52 Δίαυλος UNIX (pipe) #include <stdio.h> #include <string.h> #include <sys/wait.h> int main(int argc, char *argv[]) { int p[2]; int i, pid, status; char buffer[20]; pipe(p); /* setting up the pipe */ if ((pid = fork()) == 0) /* in child */ { close(p[1]); /* child closes p[1] */ while ((i = read(p[0], buffer, 8))!= 0) { buffer[i] = '\0'; /* string terminator */ printf("%d chars :%s: received by child\n", i, buffer); close(p[0]); exit(0); /* child terminates */ /* in parent */ close(p[0]); /* parent writes p[1] */ write(p[1], "Hello there, from me?", sizeof("hello there, from me?")); write(p[1], "How are you? - Ercal", sizeof("how are you? - Ercal")); close(p[1]); /* finished writing p[1] */ while (wait(&status)!=pid); /* waiting for pid */ if (status == 0) printf("child finished\n"); else printf("child failed\n"); return(0);
53 Απεικόνιση Μνήμης (Memory Mapping, mmap) Κλήσεις συστήματος σε UNIX/POSIX που επιπρέπουν τη χρήση διαμοιραζόμενης μνήμης για το διαμοιρασμό αρχείων μεταξύ διεργασιών. Ο ενταμιευτής (buffer) ενός αρχείου, διαμοιράζεται μεταξύ δύο ή περισσότερων διεργασιών. Για τον έλεγχο του διαμοιρασμού χρησιμοποιούνται σηματοφόροι ή κλειδώματα. Το API αυτό επιτρέπει και το διαμοιρασμό δεδομένων ή κοινών βιβλιοθηκών που βρίσκονται στη δευετερεύουσα μνήμη λόγω ιδεατής μνήμης (πχ σελίδες από χώρο διευθύνσεων διεργασίας).
54 Κλήσεις Win32 για διαχείριση διεργασιών
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής,
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής,
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο
Διαβάστε περισσότεραΕργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ
Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)
Διαβάστε περισσότεραΕπικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες
Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Interprocess Communication and Concurrent Processes Περίληψη Σύνδροµος Προγραµµατισµός Συνθήκη συναγωνισµού Συγχρονισµός διεργασιών Κρίσιµες περιοχές
Διαβάστε περισσότεραΕργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)
Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που
Διαβάστε περισσότεραNIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1 Ένα thread έχει: ID, program counter, register set, stack Μοιράζεται με τα άλλα threads της ίδιας διεργασίας τον κώδικα, τα δεδομένα και τους άλλους πόρους
Διαβάστε περισσότεραΕθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 3 η Εργαστηριακή Άσκηση: Συγχρονισμός Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαχείριση μνήμης III Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,
Διαβάστε περισσότεραΕθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 3 η Εργαστηριακή Άσκηση: Συγχρονισμός Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2017-2018
Διαβάστε περισσότεραΛειτουργικά Συστήματα Η/Υ
Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΕΡΓΑΣΙΕΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΔΙΕΡΓΑΣΙΕΣ Διεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράμματος
Διαβάστε περισσότεραΛειτουργικά Συστήματα
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) σήματα (signals) Ανάγκη Ότι είδαμε
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα
Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΑΔΙΕΞΟΔΩΝ (DEADLOCKS) Γενικά, για τη διαχείριση των αδιεξόδων
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 4 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΥΓΧΡΟΝΙΣΜΟΣ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)
Προγραμματισμός συστημάτων UNIX/POSIX Σήματα (signals) Σήματα (signals) Τα σήματα είναι «διακοπές» λογισμικού (software interrupts) οι οποίες διακόπτουν την κανονική λειτουργία μίας διεργασίας. Προκαλούνται
Διαβάστε περισσότεραΔιεργασίες (Processes)
Διεργασία (process) ή καθήκον (task) Διεργασίες (Processes) στοιχειώδης οντότητα/δραστηριότητα υπολογισμού (processing entity/activity) εκτέλεση ενός προγράμματος ένα (κύριο) νήμα (thread)/ρεύμα ελέγχου/εκτέλεσης
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed
Διαβάστε περισσότεραΕργαστήριο 5 fork(), exec(), signals
Εργαστήριο 5 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΕλεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1
Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός
Διαβάστε περισσότεραDr. Garmpis Aristogiannis - EPDO TEI Messolonghi
Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει
Διαβάστε περισσότεραΕισαγωγή στα Λειτουργικά Συστήματα
Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 4: Διεργασίες ΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για
Διαβάστε περισσότεραΛειτουργικά Συστήματα
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 4α: Σημαφόροι, Πρόβλημα Συνδαιτυμόνων Φιλοσόφων, Αδιέξοδα Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με pthreads Γκόγκος Χρήστος Παράδειγμα
Διαβάστε περισσότεραΔιεργασίες και Νήματα (2/2)
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα
Διαβάστε περισσότεραΘοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο
Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Για το μάθημα «Διαχείριση Λειτουργικών Συστημάτων» του ακαδημαϊκού έτους 2015 2016, το προτεινόμενο σύγγραμμα είναι το: Operating Systems: Internals
Διαβάστε περισσότεραΔιάλεξη Εισαγωγή στη Java, Μέρος Γ
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος Γ Νήματα (Threads) στην Java Συγχρονισμός Producer-Consumer
Διαβάστε περισσότεραΣυγχρονισμός & σηματοφόροι. Προγραμματισμός II 1
Συγχρονισμός & σηματοφόροι Προγραμματισμός II 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Οι διεργασίες εκτελούνται ταυτόχρονα μεταξύ τους Ο προγραμματιστής δεν ελέγχει την εναλλαγή Τι γίνεται αν δύο ή περισσότερες
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)
Προγραμματισμός συστημάτων UNIX/POSIX Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes) Επικοινωνία μεταξύ διεργασιών γονέα-παιδιού Κατά κάποιο τρόπο, θα δημιουργήσουμε ένα τύπο
Διαβάστε περισσότεραιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή
Διαβάστε περισσότεραΝτίρλης Νικόλαος- ΕΤΥ 2 ο Φροντιστήριο Παρασκευή, 18/10/2013 Β4. Λειτουργικά Συστήματα- Φροντιστήριο 2
Ντίρλης Νικόλαος- ΕΤΥ 2 ο Φροντιστήριο Παρασκευή, 18/10/2013 Β4 Φροντιστήριο 2 1 Λειτουργικό Σύστημα -> Multitasking Κάθε διεργασία μπορεί να ειδωθεί σαν μία δέσμη στοιχείων που διατηρούνται από τον πυρήνα
Διαβάστε περισσότεραΝΗΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Νήματα (Threads) ΝΗΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 4: Σήματα. Διαδιεργασιακή Επικοινωνία. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΔίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals
Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί
Διαβάστε περισσότεραΣυγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα 9 ο Εξάμηνο Η ανάγκη για συγχρονισμό
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΤο μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα
Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες Το μάθημα ΛΣ Πραγματικού Χρόνου Θεωρητικό υπόβαθρο Αρχές Προγραμματισμού Παραδείγματα ΛΣ Εργασίες
Διαβάστε περισσότεραΕλεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1
Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός
Διαβάστε περισσότερα2.3 Επικοινωνία Διεργασιών
2.3 Επικοινωνία Διεργασιών 2.3.3 Η λύση του Peterson. (για 2 διεργασίες) Το σενάριο περιλαμβάνει 2 διεργασίες. Υπάρχουν 2 ρουτίνες που καλούνται για να μπούν και να βγούν οι διεργασίες σε/από critical
Διαβάστε περισσότεραΛειτουργικά συστήματα πραγματικού χρόνου
Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Δρ. Βασίλης Ταμπακάς Δρ. Ιωάννης Ε. Λιβιέρης Τμήμα Μηχανικών Πληροφορικής Τ.Ε Περιεχόμενα Περιεχόμενα... 1 1. Εισαγωγή, Θεωρητική Υποδομή Εργαστηριακής Άσκησης... 2 2. Εργαστηριακή υποδομή εργαστηριακής
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Λειτουργικά Συστήματα Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΙΕΡΓΑΣΙΕΣ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθηµα: Λειτουργικά Συστήµατα Ι ΙΕΡΓΑΣΙΕΣ ιδάσκων: Αναπλ. Καθ. Κ. Λαµπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ιεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράµµατος
Διαβάστε περισσότεραΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Ύλη του Μαθήµατος Μάθηµα: Λειτουργικά Συστήµατα ΙΙ UNIX Βιβλίο Μαθήµατος: α) Tanenbaum, A.:ΣύγχροναΛειτουργικάΣυστήµατα, 2ηΈκδοση, Εκδόσεις Κλειδάριθµος. β) Wrightson, K.,
Διαβάστε περισσότεραΕκφωνήσεις ασκήσεων εργαστηρίου 1
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός
Αμοιβαίος αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του αμοιβαίου αποκλεισμού I. Προσεγγίσεις λογισμικού II. Υποστήριξη εκ μέρους του υλικού III. Σηματοφορείς 4. Κλασσικά
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Λειτουργικά Συστήματα Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του
Διαβάστε περισσότεραΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων
ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων Συστήµατα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστηµάτων ΕΜΠ Κορνήλιος Κούρτης kkourt@cslab.ece.ntua.gr p. 1 Περιβάλλον Πολλαπλών Νηµάτων Threads T0
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Λειτουργικά Συστήματα Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του
Διαβάστε περισσότεραΛειτουργικά Συστήματα Πραγματικού Χρόνου
Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες Μ.Στεφανιδάκης Το μάθημα ΛΣ Πραγματικού Χρόνου Θεωρητικό υπόβαθρο Αρχές Προγραμματισμού Παραδείγματα
Διαβάστε περισσότεραΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() Επικοινωνία διεργασιών signals, sockets και client/server, shared memory Συγχρονισμός
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων
Διαβάστε περισσότεραΚαρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA
Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή
ΚΕΦΑΛΑΙΟ 9 Ταυτόχρονος προγραμματισμός και νήματα Σύνοψη Σε αυτό το κεφάλαιο πραγματευόμαστε τον ταυτόχρονο προγραμματισμό με τη χρήση νημάτων. Η έμφαση είναι στην κατανόηση βασικών λειτουργιών των νημάτων
Διαβάστε περισσότεραΕισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος
Εισαγωγή στα Λειτουργικά συστήματα Ι Καθηγητής Κώστας Αναγνωστόπουλος Τι είναι Λειτουργικό Σύστημα Ένα πρόγραμμα ή συλλογή προγραμμάτων που ελέγχει και διαχειρίζεται το υλικό μιας υπολογιστικής μηχανής
Διαβάστε περισσότεραΟρισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα
ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran
Διαβάστε περισσότεραή α α POSIX Threads ( έ ος 1 ο )
ι ο ι ά σ ή α α ο ισ η ια ή ό η α # 3 : ισα ω ή σ α ή α α POSIX Threads ( έ ος 1 ο ) ή α: οφο ι ής η α ο ό ηση ο α ό αι ι ό ι ό έχ ι α α χθ ί σ α αίσια ο αι ι ού έ ο ο ι άσ ο α. ο έ ο «Α οι ά Α α η αϊ
Διαβάστε περισσότεραΕνότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1
ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος
Διαβάστε περισσότεραΔιαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1
Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις
Διαβάστε περισσότεραΚατηγορίες Νηµάτων. Νήµατα Επιπέδου Πυρήνα. Νήµατα Επιπέδου Χρήστη. «Νήµατα Επιπέδου Χρήστη» Ε-85: Ειδικά Θέµατα Λογισµικού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Νήµατα Επιπέδου Χρήστη» Κατηγορίες Νηµάτων Υπάρχουν δύο κατηγορίες νηµάτων Νήµατα επιπέδου πυρήνα (kernel
Διαβάστε περισσότεραΕργαστήριο 7 fork(), exec(), signals
Εργαστήριο 7 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων
Διαβάστε περισσότεραΕισαγωγικά & Βασικές Έννοιες
Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο
Διαβάστε περισσότεραΝήµατα. Πολύ σηµαντικό
Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα
Διαβάστε περισσότερα1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»
1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο
Διαβάστε περισσότεραΘέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας
Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ Πολυεπεξεργασία Διεργασία (process) Νήμα (thread) Εργασία (task/job) Διεργασίες Διεργασία είναι μια (συγκεκριμένη) εκτέλεση κάποιου προγράμματος για λογαριασμό κάποιου
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΕισαγωγικά & Βασικές Έννοιες
Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα: Πολυνηματικός Προγραμματισμός Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΛειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι
Διαβάστε περισσότεραΤι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΚατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp Γκόγκος Χρήστος Παράδειγμα
Διαβάστε περισσότεραΛειτουργικά Συστήματα (Λ/Σ)
Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων
Διαβάστε περισσότεραΠρογραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται
Διαβάστε περισσότεραΚεφάλαιο 3. Διδακτικοί Στόχοι
Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΝήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1
Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Συγχρονισμός (συνέχεια) Μεταβλητές υπό συνθήκη Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων
Διαβάστε περισσότεραΑλγόριθμοι Ταξινόμησης Μέρος 1
Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος
Διαβάστε περισσότεραΔιαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της
Διαβάστε περισσότεραΣηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1
Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό
Διαβάστε περισσότερα