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

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

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

Transcript

1 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Επαναληπτική Εξέταση Λύσεις Το παρόν περιγράφει πλήρη λύση των θεμάτων. Για να βοηθήσει στην καλύτερη κατανόηση των απαντήσεων, προσφέρει αναλυτική επεξήγησή τους, η οποία δεν ήταν απαραίτητη για να θεωρείται τέλεια η λύση. Θέμα 1 (25%) Δίνεται το πρόγραμμα C σε περιβάλλον UNIX που ακολουθεί μετά τα ζητούμενα. Θεωρήστε ότι οι κλήσεις συστήματος δεν αποτυγχάνουν και ότι κάθε νέα διεργασία κληρονομεί ακριβώς τον τρόπο χειρισμού σημάτων του πατέρα. i. Σχεδιάστε το γράφο διεργασιών στην τελική του μορφή, όταν δηλαδή όλες οι διεργασίες και τα νήματα έχουν φτάσει σε μόνιμη κατάσταση. Επισημάνετε τις διεργασίες με κυκλικό κόμβο και τα νήματα με τετράγωνο κόμβο στο γράφο. Για κάθε κόμβο φροντίστε να φαίνεται η γονική διεργασία με βέλος. Αν υπάρχουν, δείξτε και τις διεργασίες/νήματα που έζησαν προσωρινά, αλλά δεν υπάρχουν στη μόνιμη κατάσταση, με διακεκομμένο περίγραμμα. (10%) ii. Για κάθε κομβο του γράφου επισημάνετε: (i) την κλήση συστήματος ή συνάρτηση μέσα στην οποία βρίσκεται ο Program Counter της αντίστοιχης διεργασίας/νήματος, (ii) τα ορίσματα με τα οποία αυτή έχει κληθεί και (iii) τη γραμμή του προγράμματος από όπου έγινε η κλήση της. Για τις διεργασίες/νήματα που έζησαν προσωρινά επισημάνετε την τελευταία κλήση συστήματος ή συνάρτηση στην οποία βρέθηκε ο Program Counter. (5%) iii. Συμπληρώστε το σχήμα σας ώστε να φαίνεται η διαδιεργασιακή επικοινωνία: για κάθε μεταφορά δεδομένων ή αποστολή σήματος που συνέβη, σχεδιάστε ένα διακεκομμένο βέλος από τη διεργασία-αποστολέα στη διεργασία-παραλήπτη. Πάνω από το βέλος γράψτε την τιμή που μεταφέρεται κάθε φορά. (4%) iv. Τί θα τυπωθεί στις γραμμές 54 και 56 του προγράμματος; (6%) Σημείωση: Από το man page της kill δίνεται: int kill(pid_t pid, int sig); If pid equals 0, then sig is sent to every process in the process group of the calling process. Λειτουργικά Συστήματα - 7ο εξάμηνο 1 cslab@ntua Σεπ. 2016

2 1 int res = 0, num = 2, pd[2], arg[32]; 2 pthread_t thread[32]; 3 sem_t sem; 4 5 void h(int s) 6 { 7 read(pd[0], &num, sizeof(num)); 8 sem_post(&sem); 9 } void *f(void *var) 12 { 13 int tmp = *(int *)var; 14 res += tmp; 15 pthread_exit((void *)0); 16 } int main() 19 { 20 int i, k, p, pstatus; 21 void *tstatus; sem_init(&sem, 0, 0); 24 signal(sigusr1, h); 25 pipe(pd); for (i = 0; i < num; i++) { 28 p = fork(); if (p == 0) { 31 sem_wait(&sem); 32 num++; 33 for (k = 0; k < num; k++) { 34 arg[k] = k; 35 pthread_create(&thread[k], NULL, f, (void *)&arg[k]); 36 } for (k = 0; k < num; k++) pthread_join(thread[k], &tstatus); 39 if (num < 4) write(pd[1], &num, sizeof(num)); exit(res); 42 } 43 } write(pd[1], &num, sizeof(num)); 46 signal(sigusr1, SIG_IGN); /* To SIGUSR1 αγνοείται από την καλούσα διεργασία */ 47 kill(0, SIGUSR1); /* Δείτε επισήμανση στην εκφώνηση */ for (i = 0; i < num; i++) { 50 wait(&pstatus); 51 if (WIFEXITED(pstatus)) res += WEXITSTATUS(pstatus); 52 } printf("final result1: %d \n", res); 55 read(pd[0], &num, sizeof(num)); 56 printf("final result2: %d \n", num); return 0; 59 } Λειτουργικά Συστήματα - 7ο εξάμηνο 2 cslab@ntua Σεπ. 2016

3 Λύση Θέματος 1 (i), (ii), (iii) 15: pthread_exit(0) SIGUSR1 pipe: 2 41: exit(res) 15: pthread_exit(0) 15: pthread_exit(0) SIGUSR1 55: read(...) pipe: 3 41: exit(res) 15: pthread_exit(0) 15: pthread_exit(0) SIGUSR1 15: pthread_exit(0) 15: pthread_exit(0) (iv) Στη γραμμή 54 δεν γνωρίζουμε ποια τιμή θα τυπωθεί, καθώς η τιμή του res που επιστρέφεται από κάθε διεργασία-παιδί στη γραμμή 41 υπόκειται σε race condition κατά τη διάρκεια εκτέλεσης των νημάτων (γραμμή 14). Στη γραμμή 56 η διεργασία-πατέρας δεν θα φτάσει ποτέ καθώς έχει κολλήσει στη γραμμή 55, όπου περιμένει να διαβάσει κάποια τιμή από το pipe. Λειτουργικά Συστήματα - 7ο εξάμηνο 3 cslab@ntua Σεπ. 2016

4 Θέμα 2 (60%) Δίνεται το ημιτελές πρόγραμμα που ακολουθεί μετά τα ερωτήματα, το οποίο εκτελείται σε σύστημα με τα παρακάτω χαρακτηριστικά: - To ΛΣ υποστηρίζει εικονική μνήμη με σελιδοποίηση και ακολουθεί το μοντέλο fork()/exec() με Copy-on-Write (CoW) για τη δημιουργία νέων διεργασιών. - Το μέγεθος σελίδας/πλαισίου είναι 4096 bytes (4KiB). Η φυσική μνήμη περιλαμβάνει 10 πλαίσια. - Σε κάθε πρόγραμμα που εκτελείται στο εν λόγω σύστημα, το ΛΣ παραχωρεί ξεχωριστή(ές) σελίδα(ες) μνήμης για τον κώδικα του πρόγράμματος, τις global μεταβλητές (αν υπάρχουν), τις σταθερές (αν υπάρχουν) και τη στοίβα, ενώ υποστηρίζει δυναμική παραχώρηση μνήμης από το σωρό. Η στοίβα κάθε προγράμματος είναι 4KiB. - Tο ΛΣ παραχωρεί φυσική μνήμη στο σωρό της διεργασίας όταν πραγματοποιείται εγγραφή στη μνήμη αυτή. Ο κώδικας του παρακάτω προγράμματος είναι 4KiB, η βιβλιοθήκη της C (συναρτήσεις fopen(), malloc(), fprintf(), scanf(), fscanf()) καταλαμβάνει 8KiB και είναι στατικά συνδεδεμένη με το πρόγραμμα, ενώ η μαθηματική βιβλιοθήκη (συνάρτηση sqrt()) καταλαμβάνει 4KiΒ και συνδέεται με το πρόγραμμα δυναμικά. Ο κώδικας και τα δεδομένα του ΛΣ καταλαμβάνουν επίσης από 4KiΒ στη μνήμη το καθένα. Υπενθυμίζεται ότι sizeof(int) = 4. i. Στους Πίνακες 1-3 σας δίνεται η εικόνα της φυσικής μνήμης ακριβώς πριν από την εκτέλεση του προγράμματος, καθώς και η μορφή του πίνακα σελίδων και του χάρτη μνήμης που το ΛΣ τηρεί για κάθε διεργασία. Δώστε την εικόνα της φυσικής μνήμης, καθώς και τον πίνακα σελίδων και το χάρτη μνήμης για κάθε διεργασία που βρίσκεται σε εκτέλεση στις γραμμές του κώδικα 9, 11, 18, 19 (αμέσως μετά τη fork), 23 και 28 (θεωρήστε ότι η γραμμή 22 εκτελείται πριν την 27). (30 %) ii. Περιγράψτε αν και υπό ποιες συνθήκες στις γραμμές κώδικα 8, 10, 12, 13, 16, 19, 22 και 27 είναι δυνατόν να εμπλακεί ο χρονοδρομολογητής στην εκτέλεση του προγράμματος. Θεωρήστε ότι όλες οι συναρτήσεις και οι κλήσεις συστήματος επιτυγχάνουν. Αγνοήστε τις περιπτώσεις που ο χρονοδρομολογητής καλείται λόγω διακοπής από το χρονιστή. (10%) iii. Συμπληρώστε το πρόγραμμα οπουδήποτε κρίνετε σκόπιμο, ώστε να πραγματοποιείται σωστά και παράλληλα (στις 2 διεργασίες που έχουν δημιουργηθεί) ο υπολογισμός. Το αποτέλεσμα της πράξης θα πρέπει να είναι ορατό στη διεργασία πατέρα. (10%) iv. Δώστε έκδοση του παραπάνω προγράμματος χρησιμοποιώντας νήματα POSIX. (10%) πλαίσιο περιγραφή 0 κώδικας ΛΣ 1 δεδομένα ΛΣ 2 free 3 free 4 math lib 5 free 6 free 7 free 8 free 9 free Πίνακας 1: Πλαίσια στη φυσική μνήμη page permissions frame page number π.χ. r, rw, x, κλπ αριθμός πλαισίου στη φυσική μνήμη Πίνακας 2: Πίνακας Σελίδων Λειτουργικά Συστήματα - 7ο εξάμηνο 4 cslab@ntua Σεπ. 2016

5 page permisssions block page number π.χ. r, rw, x, κλπ αριθμός block στο δίσκο - ενδεικτικά Πίνακας 3: Χάρτης Μνήμης 1 #define SIZE 1024 // constant 2 3 int *a, i, t, ITER; 4 5 int main(void) 6 { 7 FILE *infile; 8 infile = fopen("1.txt", "r"); 9 10 a = malloc(size*sizeof(int)); fprintf(stdout, "Give me the number of iterations\n"); 13 scanf("%d", &ITER); for (i = 0; i < SIZE; i++) { 16 fscanf(infile, "%d\n", &a[i]); 17 } if (fork() == 0) { 20 for (t = 0; t < ITER; t++) 21 for (i = 1; i < SIZE/2; i++) 22 a[i] = sqrt((a[i-1] + a[i+1]) / 2); 23 } 24 else { 25 for (t = 0; t < ITER; t++) 26 for (i = SIZE/2; i < SIZE - 1; i++) 27 a[i] = sqrt((a[i-1] + a[i+1]) / 2); 28 } return 0; 31 } Λύση Θέματος 2 i. Οι πίνακες που ακολουθούν είναι ενδεικτικοί (υπάρχουν πολλοί εναλλακτικοί έγκυροι πίνακες). Στις γραμμή 9 του κώδικα η φυσική μνήμη έχει ως εξής: πλαίσιο περιγραφή 0 κώδικας ΛΣ 1 δεδομένα ΛΣ 2 κώδικας P1 3 σταθερές P1 4 math lib 5 μεταβλητές P1 6 βιβλιοθήκη C 7 βιβλιοθήκη C 8 στοίβα P1 9 free Πίνακας 4: Πλαίσια στη φυσική μνήμη Λειτουργικά Συστήματα - 7ο εξάμηνο 5 cslab@ntua Σεπ. 2016

6 Αντίστοιχα ο πίνακας σελίδων για τη διεργασία (έστω P1): και ο χάρτης μνήμης: page permissions frame 0 rx 2 1 r 3 2 rw 5 3 rx 6 4 rx 7 5 rw 8 Πίνακας 5: Πίνακας Σελίδων P1 page permisssions block 0 rx - 1 r - 2 rw - 3 rx - 4 rx - 5 rw - Πίνακας 6: Χάρτης Μνήμης P1 Στη γραμμή 11 η εικόνα της φυσικής μνήμης καθώς και ο πίνακας σελίδων παραμένουν ίδιοι, λόγω on demand paging, αλλά ο χάρτης μνήμης της P1 διαμορφώνεται ως εξής: page permisssions block 0 rx - 1 r - 2 rw - 3 rx - 4 rx - 5 rw - 6 rw - Πίνακας 7: Χάρτης Μνήμης P1 Στη γραμμή 18 δεσμεύεται μια σελίδα, καθώς πραγματοποιείται εγγραφή στο δεσμευμένο buffer στο σωρό. Ο χάρτης μνήμης δεν αλλάζει, αλλά η φυσική μνήμη και ο πίνακας σελίδων της P1 γίνονται αντίστοιχα: πλαίσιο περιγραφή 0 κώδικας ΛΣ 1 δεδομένα ΛΣ 2 κώδικας P1 3 σταθερές P1 4 math lib 5 μεταβλητές P1 6 βιβλιοθήκη C 7 βιβλιοθήκη C 8 στοίβα P1 9 σωρός P1 Πίνακας 8: Πλαίσια στη φυσική μνήμη Λειτουργικά Συστήματα - 7ο εξάμηνο 6 cslab@ntua Σεπ. 2016

7 page permissions frame 0 rx 2 1 r 3 2 rw 5 3 rx 6 4 rx 7 5 rw 8 6 rw 9 Πίνακας 9: Πίνακας Σελίδων P1 Στη γραμμή 19 (αμέσως μετά τη fork()) δημιουργείται ένα αντίγραφο του πίνακα σελίδων για την P2 (έχοντας χάσει τα write permissions) και αντίστοιχα ένα αντίγραφο του χάρτη μνήμης για την P2. Η εικόνα της φυσικής μνήμης παραμένει ίδια. Οπότε έχουμε: page permissions frame 0 rx 2 1 r 3 2 r 5 3 rx 6 4 rx 7 5 r 8 6 r 9 Πίνακας 10: Πίνακας Σελίδων P1 page permissions frame 0 rx 2 1 r 3 2 r 5 3 rx 6 4 rx 7 5 r 8 6 r 9 Πίνακας 11: Πίνακας Σελίδων P2 page permisssions block 0 rx - 1 r - 2 rw - 3 rx - 4 rx - 5 rw - 6 rw - Πίνακας 12: Χάρτης Μνήμης P1 Λειτουργικά Συστήματα - 7ο εξάμηνο 7 cslab@ntua Σεπ. 2016

8 page permisssions block 0 rx - 1 r - 2 rw - 3 rx - 4 rx - 5 rw - 6 rw - Πίνακας 13: Χάρτης Μνήμης P2 Στη γραμμή 22 έχουμε πρόσβαση στη math lib, γεγονός που προσθέτει μία εγγραφή στον αντίστοιχο πίνακα σελίδων. Επίσης, αλλάζει η στοίβα της P2. Σε αυτό το σημείο, όμως, δεν υπάρχει ελεύθερο πλαίσιο στη φυσική μνήμη. Συνεπώς, πρέπει να αντικαταστήσουμε ένα πλαίσιο και να το αντιγράψουμε στο δίσκο (έστω block 515). Επιλέγουμε αυτό να είναι το πλαίσιο 5 (με κάποιον υποθετικό αλγόριθμο αντικατάστασης). Τέλος, η P2 πραγματοποιεί εγγραφή στη μεταβλητή a και στο δεσμευμένο χώρο στο σωρό, οπότε έχουμε επίσης COW. Ομοίως, αντιγράφουμε το πλαίσια 8 (block 516) και το πλαίσιο 9 (block 517). Οι πίνακες στη γραμμή 23 έχουν ως εξής (σχετικά με τον πίνακα σελίδων P1 oι εγγραφές που δεν υπάρχουν θεωρούνται ισοδύναμα ως invalid): πλαίσιο περιγραφή 0 κώδικας ΛΣ 1 δεδομένα ΛΣ 2 κώδικας P1 3 σταθερές P1 4 math lib 5 μεταβλητές P2 6 βιβλιοθήκη C 7 βιβλιοθήκη C 8 στοίβα P2 9 σωρός P2 Πίνακας 14: Πλαίσια στη φυσική μνήμη page permissions frame 0 rx 2 1 r 3 2 rw 5 3 rx 6 4 rx 7 5 rw 8 6 rw 9 7 rx 4 Πίνακας 15: Πίνακας Σελίδων P2 page permisssions block 0 rx - 1 r - 2 rw - 3 rx - 4 rx - 5 rw - 6 rw - 7 rx - Πίνακας 16: Χάρτης Μνήμης P2 Λειτουργικά Συστήματα - 7ο εξάμηνο 8 cslab@ntua Σεπ. 2016

9 page permissions frame 0 rx 2 1 r 3 3 rx 6 4 rx 7 Πίνακας 17: Πίνακας Σελίδων P1 page permisssions block 0 rx - 1 r - 2 rw rx - 4 rx - 5 rw rw 517 Πίνακας 18: Χάρτης Μνήμης P1 Τέλος, στη γραμμή 26 (θεωρούμε ότι εκτελείται μετά τη γραμμή 22) κάποια από τα πλαίσια που ανήκουν στην P2 θα αντικατασταθούν από αντίστοιχα στης P1 λόγω έλλειψης χώρου. Συγκεκριμένα, τα πλαίσια που αφορούν στη στοίβα, το σωρό και τις μεταβλητές της P2 θα αντιγραφούν στο δίσκο (έστω block 532, 533, 534) και αντιστοίχως θα αντιγραφούν από το δίσκο (block 515, 516, 517) τα σχετικά πλαίσια της P1. Επίσης, θα προστεθεί η σχετική εγγραφή για τη math lib στον πίνακα σελίδων της P1. Έτσι οι πίνακες ενημερώνονται ακολούθως (σχετικά με τον πίνακα σελίδων P2 oι εγγραφές που δεν υπάρχουν θεωρούνται ισοδύναμα ως invalid): πλαίσιο περιγραφή 0 κώδικας ΛΣ 1 δεδομένα ΛΣ 2 κώδικας P1 3 σταθερές P1 4 math lib 5 μεταβλητές P1 6 βιβλιοθήκη C 7 βιβλιοθήκη C 8 στοίβα P1 9 σωρός P1 Πίνακας 19: Πλαίσια στη φυσική μνήμη page permissions frame 0 rx 2 1 r 3 2 rw 5 3 rx 6 4 rx 7 5 rw 8 6 rw 9 7 rx 4 Πίνακας 20: Πίνακας Σελίδων P1 Λειτουργικά Συστήματα - 7ο εξάμηνο 9 cslab@ntua Σεπ. 2016

10 page permisssions block 0 rx - 1 r - 2 rw - 3 rx - 4 rx - 5 rw - 6 rw - 7 rx - Πίνακας 21: Χάρτης Μνήμης P1 page permissions frame 0 rx 2 1 r 3 3 rx 6 4 rx 7 7 rx 4 Πίνακας 22: Πίνακας Σελίδων P2 page permisssions block 0 rx - 1 r - 2 rw rx - 4 rx - 5 rw rw rx - Πίνακας 23: Χάρτης Μνήμης P2 Λειτουργικά Συστήματα - 7ο εξάμηνο 10 cslab@ntua Σεπ. 2016

11 ii. Θεωρούμε διακοπτή στρατηγική χρονοδρομολόγησης. Ο χρονοδρομολογητής σε αυτή την περίπτωση εμπλέκεται (εκτός από τις περιπτώσεις του χρονιστή) όταν μια διεργασία κάνει Ε/Ε ή όταν μια διεργασία μεταβεί σε κατάσταση εκτέλεσης (ready). Επομένως για τις συγκεκριμένες γραμμές κώδικα: Γραμμή 8: Η διεργασία κάνει αίτημα στο ΛΣ για να ανοίξει το αρχείο. Δεν πραγματοποιεί κάποια Ε/Ε, οπότε δεν εμπλέκεται ο χρονοδρομολογητής. Γραμμή 10: Η διεργασία κάνει αίτημα στο ΛΣ για παραχώρηση δυναμικής μνήμης. Δεν πραγματοποιεί κάποια Ε/Ε, οπότε δεν εμπλέκεται ο χρονοδρομολογητής. Γραμμή 12: Η διεργασία πραγματοποιεί Ε/Ε οπότε εμπλέκεται ο χρονοδρομολογητής. Σημείωση: Ανάλογα με την υλοποίηση η εγγραφή στο τερματικό μπορεί να γίνει ασύγχρονα χωρίς ανάγκη αναμονής της διεργασίας. Σε αυτή την περίπτωση ο χρονοδρομολογητής δεν εμπλέκεται. Γραμμή 13: Η διεργασία πραγματοποιεί Ε/Ε και αναμονή εισόδου από το χρήστη, οπότε εμπλέκεται ο χρονοδρομολογητής. Γραμμή 16: Η διεργασία πραγματοποιεί Ε/Ε (ανάγνωση αρχείου από το δίσκο), άρα εμπλέκεται ο χρονοδρομολογητής. Γραμμή 19: Δημιουργείται νέα διεργασία και μεταβαίνει σε κατάσταση εκτέλεσης. Εμπλέκεται ο χρονοδρομολογητής. Γραμμή 22: Αν τα πλαίσια που απαιτούνται για τις συγκεκριμένες πράξεις βρίσκονται στη φυσική μνήμη, δεν δημιουργείται αίτημα Ε/Ε, οπότε δεν εμπλέκεται ο χρονοδρομολογητής. Στη συγκεκριμένη περίπτωση (βλέπε λύση ερωτήματος i) η φυσική μνήμη δεν επαρκεί και γίνεται μεταφορά πλαισίων στο δίσκο. Εφόσον πραγματοποιείται Ε/Ε, εμπλέκεται ο χρονοδρομολογητής. Γραμμή 27: Ομοίως με γραμμή 22. Λειτουργικά Συστήματα - 7ο εξάμηνο 11 cslab@ntua Σεπ. 2016

12 iii. Η λύση δίνεται στη συνέχεια. 1 2 #define SIZE 1024 // constant 3 4 int main(void) 5 { 6 int *a; 7 int i, t, ITER; 8 9 int pd[2][2]; int *status; FILE *infile; 14 infile = fopen("1.txt", "r"); a = malloc(size*sizeof(int)); fprintf(stdout, "Give me the number of iterations\n"); 19 scanf("%d", &ITER); for (i = 0; i < SIZE; i++) { 22 fscanf(infile, "%d\n", &a[i]); 23 } pipe(pd[0]); 26 pipe(pd[1]); if (fork() == 0) { for (t = 0; t < ITER; t++) { for (i = 1; i < SIZE/2; i++) 33 a[i] = (a[i-1] + a[i+1]) / 2; /* exchange boundary values */ 36 write(pd[0][1],&a[size/2-1], sizeof(int)); 37 read(pd[1][0],&a[size/2],sizeof(int)); 38 } 39 read(pd[1][0],&a[size/2],size/2*sizeof(int)); /* wait for child to finish its part */ 42 wait(status); 43 } 44 else { for (t = 0; t < ITER; t++) { for (i = SIZE/2; i < SIZE - 1; i++) 49 a[i] = (a[i-1] + a[i+1]) / 2; /* exchange boundary values */ 52 write(pd[1][1],&a[size/2], sizeof(int)); 53 read(pd[0][0],&a[size/2-1],sizeof(int)); 54 } /* send result to parent */ 57 write(pd[1][1],&a[size/2],size/2*sizeof(int)); Λειτουργικά Συστήματα - 7ο εξάμηνο 12 cslab@ntua Σεπ. 2016

13 58 exit(0); 59 } /* father prints the result */ 62 for (i = 0; i < SIZE; i++) fprintf(stdout,"%d\n", a[i]); return 0; 65 } Λειτουργικά Συστήματα - 7ο εξάμηνο 13 cslab@ntua Σεπ. 2016

14 iv. Η λύση δίνεται στη συνέχεια. 1 2 #define SIZE 1024 // constant 3 4 int *a; 5 6 sem_t sem[2]; 7 8 typedef struct thread_info_t{ 9 int mystart; 10 int myend; 11 int iterations; 12 sem_t *wsem; 13 sem_t *psem; 14 } thread_info; void *calc (void *args); int main(void) 19 { 20 int i, t, ITER, rc; pthread_t threads[2]; 23 thread_info thread_info_array[2]; FILE *infile; 26 infile = fopen("1.txt", "r"); a = malloc(size*sizeof(int)); fprintf(stdout, "Give me the number of iterations\n"); 31 scanf("%d", &ITER); for (i = 0; i < SIZE; i++) { 34 fscanf(infile, "%d\n", &a[i]); 35 } sem_init(&sem[0], 0, 0); 38 sem_init(&sem[1], 0, 0); thread_info_array[0].mystart = 0; 41 thread_info_array[0].myend = SIZE/2; 42 thread_info_array[0].iterations = ITER; 43 thread_info_array[0].wsem = &sem[0]; 44 thread_info_array[0].psem = &sem[1]; thread_info_array[1].mystart = SIZE/2; 47 thread_info_array[1].myend = SIZE - 1; 48 thread_info_array[1].iterations = ITER; 49 thread_info_array[1].wsem = &sem[1]; 50 thread_info_array[1].psem = &sem[0]; for(t = 0; t < 2; t++) { 53 rc = pthread_create(&threads[t], NULL, calc, (void *)&thread_info_array[t]); 54 } 55 for(t = 0; t < 2; t++) { 56 pthread_join(threads[t], NULL); 57 } Λειτουργικά Συστήματα - 7ο εξάμηνο 14 cslab@ntua Σεπ. 2016

15 58 59 for (i = 0; i < SIZE; i++) printf("%d\n", a[i]); return 0; 62 } void *calc (void *args) 65 { 66 thread_info *myinfo; 67 myinfo=(thread_info *)args; int t, i; int start = myinfo->mystart; 72 int end = myinfo->myend; 73 int iterations = myinfo->iterations; 74 sem_t *wsem = myinfo->wsem; 75 sem_t *psem = myinfo->psem; for (t = 0; t < iterations; t++) { 78 for (i = start + 1; i < end; i++) 79 a[i] = (a[i-1] + a[i+1]) / 2; /* notify sibling thread that boundary value has been written for this 82 iteration */ 83 sem_post(psem); /* wait sibling thread to write its boundary value for this iteration */ 86 sem_wait(wsem); 87 } } Λειτουργικά Συστήματα - 7ο εξάμηνο 15 cslab@ntua Σεπ. 2016

16 Θέμα 3 (15%) Απαντήστε συνοπτικά στις παρακάτω ερωτήσεις: i. Αναφέρετε μηχανισμούς με τους οποίους το υλικό υποστηρίζει τις παρακάτω λειτουργίες: - Διαχωρισμός χώρου χρήστη και χώρου πυρήνα. (1%) - Διακοπτή χρονοδρομολόγηση. (1%) - Εικονική μνήμη. (1%) - Αποδοτικός συγχρονισμός. (1%) - Εικονικοποίηση. (1%) ii. Ποια ζητήματα πρέπει να λάβει υπόψη του ο σχεδιαστής του χρονοδρομολογητή όταν στο σύστημα υπάρχουν πολλαπλοί επεξεργαστές; (4%) iii. Τι είναι το πρόβλημα της ενεργού αναμονής; Δώστε ψευδοκώδικα για την υλοποίηση των σημαφόρων με και χωρίς ενεργό αναμονή. (6%) Λύση Θέματος 3 i. - Διαχωρισμός χώρου χρήστη και χώρου πυρήνα: Trap ii. - Διακοπτή χρονοδρομολόγηση: Hardware timer - Εικονική μνήμη: Memory Management Unit (MMU) - Αποδοτικός συγχρονισμός: Atomic instructions - Εικονικοποίηση: Protection rings/privilege levels Προσκόλληση σε Επεξεργαστή (processor affinity) Επίδοση κρυφής μνήμης Εξισορρόπηση Φόρτου (load balancing) Απαιτεί μετακίνηση διεργασιών * Μετακίνηση ώθησης (push migration) * Μετακίνηση έλξης (pull migration) Γνώση φυσικής τοπολογίας συστήματος (πχ. NUMA, SMT) iii. Το πρόβλημα της ενεργού αναμονής (busy-wait) αναφέρεται στην κατανάλωση υπολογιστικών πόρων από μια διεργασία που εκτελεί επαναληπτικά ένα βρόχο αναμονής περιμένοντας άλλη διεργασία που βρίσκεται στο κρίσιμο τμήμα της. Κατά της διάρκεια της επαναληπτικής εκτέλεσης η ΚΜΕ δεν μπορεί να χρησιμοποιηθεί για άλλες εργασίες. Ψευδοκώδικας: Υλοποίηση με ενεργό αναμονή 1 wait (S) { 2 while (1) { 3 lock(s_lock); 4 if (S > 0) { 5 S--; 6 unlock(s_lock); 7 break; 8 } 9 unlock(s_lock); 10 } 11 } 12 1 signal (S) { 2 lock(s_lock); 3 S++; 4 unlock(s_lock); 5 } 6 Λειτουργικά Συστήματα - 7ο εξάμηνο 16 cslab@ntua Σεπ. 2016

17 Υλοποίηση χωρίς ενεργό αναμονή 1 wait (S) { 2 lock(s_lock); 3 S--; 4 if (S < 0) { 5 add proc to S_list; 6 unlock(s_lock); 7 block(); 8 } 9 unlock(s_lock); 10 } 11 1 signal (S) { 2 lock(s_lock); 3 S++; 4 if (S <= 0) { 5 remove P from S_list; 6 wakeup(p); 7 } 8 unlock(s_lock); 9 } 10 Λειτουργικά Συστήματα - 7ο εξάμηνο 17 cslab@ntua Σεπ. 2016

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Κανονική Εξέταση Λύσεις

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Κανονική Εξέταση Λύσεις ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος 2010-2011 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

Χρονοδρομολογητής Κυκλικής Επαναφοράς Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 4 η Εργαστηριακή Άσκηση: Χρονοδρομολογητής Κυκλικής Επαναφοράς Λειτουργικά Συστήματα Υπολογιστών

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος 2010-2011 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Θέμα

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

Εικονική Μνήμη (1/2)

Εικονική Μνήμη (1/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Εικονική Μνήμη (1/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Εικονική Μνήμη

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

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

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

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

Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

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

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

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

Διεργασίες και Νήματα (2/2)

Διεργασίες και Νήματα (2/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα

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

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

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 2: Διεργασίες και Νήματα Διαδικαστικά 2 Γραφτήκατε στη λίστα; Σχηματίστε ομάδες (για το project)! Στο προηγούμενο επεισόδιο 3 Τι είναι λειτουργικό; Γενιές ΛΣ Βασικές

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Προπτυχιακό Πρόγραμμα Σπουδών Πληροφορική - ΠΛΗ 11-2005 - 06 ΕΠΑΝΑΛΗΠΤΙΚΗ ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ 8 ΙΟΥΛΙΟΥ 2006 ΜΕΡΟΣ Α'. ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΩΝ ΕΠΙΛΟΓΩΝ [ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 45 ] Σε κάθε ερώτηση απαντάτε επιλέγοντας

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

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 3 η Εργαστηριακή Άσκηση: Συγχρονισμός Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2017-2018

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

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 3 η Εργαστηριακή Άσκηση: Συγχρονισμός Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Διεργασίες και Νήματα (1/2)

Διεργασίες και Νήματα (1/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (1/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Διεργασίες

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Διαχείριση

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

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

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)

Προγραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals) Προγραμματισμός συστημάτων UNIX/POSIX Σήματα (signals) Σήματα (signals) Τα σήματα είναι «διακοπές» λογισμικού (software interrupts) οι οποίες διακόπτουν την κανονική λειτουργία μίας διεργασίας. Προκαλούνται

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

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

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

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

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

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

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

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

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

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

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,

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

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 18η: Διαχείρηση Αρχείων Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh

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

Ιδιοκτησία Αντικειµένου

Ιδιοκτησία Αντικειµένου Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται

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

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

Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά

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

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαδιεργασιακή Επικοινωνία Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής,

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

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

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες Τι είναι οι συνδεδεμένες λίστες (linked lists) Μια Συνδεδεμένη Λίστα (Σ.Λ.) είναι μια διάταξη από κόμβους που μπορούμε να τους διαχειριστούμε δυναμικά. Κάθε

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό

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

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Έως τώρα σε ένα πρόγραμμα έχουμε μάθει να εισάγουμε δεδομένα από το πληκτρολόγιο χρησιμοποιώντας την συνάρτηση scanf() και να εκτυπώνουμε δεδομένα

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

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

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

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

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός συστημάτων UNIX/POSIX Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) σήματα (signals) Ανάγκη Ότι είδαμε

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2) Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2) Κατηγορίες μνήμης εκτελέσιμου προγράμματος Στις καθολικές και στατικές μεταβλητές οι χώροι μνήμης δεσμεύονται κατά την διάρκεια της μεταγλώττισης. Οι

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

Εργαστήριο 9: Αρχεία

Εργαστήριο 9: Αρχεία Εργαστήριο 9: Αρχεία Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αρχεία, Είσοδος/Έξοδος από/προς αρχεία - Δυαδικά αρχεία - Παραδείγματα ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ.

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

Ορισμός μεταβλητών δεικτών και αρχικοποίηση Ορισμός μεταβλητών δεικτών και αρχικοποίηση Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ η οποία έχει τη δική της ξεχωριστή διεύθυνση Ο δείκτης είναι μια μεταβλητή

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΟΔΗΓΙΕΣ: ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 14 ΙΟΥΝΙΟΥ 2015 Τα θέματα που έχετε στα χέρια σας είναι σε τρεις (3) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης

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

UNIX System Programming

UNIX System Programming UNIX System Programming Processes Objectives look at how to program UNIX processes fork( ), wait( ) Overview 1. What is a Process? 2. fork() 3. wait() 4. Process Data 1. What is a Process? A process is

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις

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

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

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

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ N:08 Δρ. Μηνάς Δασυγένης mdasyg@ieee.rg Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

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

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

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

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

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

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2011-12 Εικονική (και ο ρόλος της στην ιεραρχία μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Ιεραρχία η νέα τάση: [2011]

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

Διάλεξη 9: Δυναμική Δέσμευση Μνήμης

Διάλεξη 9: Δυναμική Δέσμευση Μνήμης Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 9: Δυναμική Δέσμευση Μνήμης (Κεφάλαιο 17.1-17.4, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 9-1

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

Εργαστήριο 5 fork(), exec(), signals

Εργαστήριο 5 fork(), exec(), signals Εργαστήριο 5 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων

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

Προγραμματισμός συστημάτων UNIX/POSIX. Διεργασίες (processes)

Προγραμματισμός συστημάτων UNIX/POSIX. Διεργασίες (processes) Προγραμματισμός συστημάτων UNIX/POSIX Διεργασίες (processes) Δομή αρχείου προγράμματος Πρόγραμμα (program) ονομάζεται το εκτελέσιμο αρχείο που βρίσκεται αποθηκευμένο στο δίσκο (π.χ. το a.out, ή το ls ή

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

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

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

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

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