Λειτουργικά Συστήματα
|
|
- ŌἈβαδδών Αντωνοπούλου
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ N:08 Δρ. Μηνάς Δασυγένης Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών arch.icte.uwm.gr/mdasyg
2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Cmmns. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα του Πανεπιστημίου Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2
3 Περιεχόμενα 1. Σκοπός της άσκησης Παραδοτέα Περιγραφή εργαστηριακής άσκησης Η συνάρτηση vfrk() Δημιουργία του πρώτου προγράμματος με threads Δημιουργία & Καταστροφή νημάτων Δημιουργία νημάτων χωρίς παραμέτρους Δημιουργία νημάτων με πέρασμα μιας παραμέτρου Πέρασμα παραμέτρων σε νήματα Ένα ακόμη παράδειγμα με κοινά δεδομένα Πολλαπλές τιμές Συγχρονισμός διεργασιών με pthread_jin() Καταστρέφοντας τα νήματα
4 1. Σκοπός της άσκησης Διεργασίες. Νήματα (δημιουργία, καταστροφή, συγχρονισμός). Συναρτήσεις: time(), frk(), vfrk(), pthread_create(), pthread_exit(), pthread_jin(), fflush(), pthread_attr_init(), pthread_self(), pthread_attr_destry(), pthread_kill(), pthread_cancel(). 2. Παραδοτέα (A) 19 ερωτήσεις (C) 10 ασκήσεις 3. Περιγραφή εργαστηριακής άσκησης Μια τεχνική για να αυξηθεί η παραλληλία σε ένα σύστημα είναι η χρήση των νημάτων. Σε αντίθεση με τις διεργασίες, όταν θέλουμε να δημιουργήσουμε ένα νήμα θα πρέπει να προσδιορίσουμε κάθε φορά τη συνάρτηση που θα εκτελεσθεί στη συνάρτηση δημιουργίας νήματος. Ένα νήμα είναι μια ανεξάρτητη ροή εντολών η οποία μπορεί να χρονοπρογραμματιστεί για εκτέλεση από τον πυρήνα. Οπτικά αν θέλουμε να δούμε τα νήματα και τις διεργασίες θα έχουμε την παρακάτω εικόνα: 4
5 Δηλαδή, τα νήματα μπορούμε να τα δούμε ως συναρτήσεις τις οποίες μέσα στο κυρίως πρόγραμμα τις ορίζουμε ότι θα εκτελεστούν ως ξεχωριστά νήματα. Οι μεταβλητές που έχουν οριστεί στο main θα είναι προσβάσιμες και κοινές και στα νήματα. Το κάθε νήμα όμως μπορεί να έχει δικές του τοπικές μεταβλητές. Υπάρχουν διάφοροι τρόποι να υλοποιήσουμε τα νήματα. Εμείς θα χρησιμοποιήσουμε το αρκετά δημοφιλές και προτυποποιημένο τρόπο με τη βιβλιοθήκη Pthreads όπως έχουν οριστεί από το IEEE POSIX c standard. Αυτή η υλοποίηση ονομάζεται Psix Threads ή απλά Pthreads και υποστηρίζεται από πλήθος λειτουργικών συστημάτων (ακόμη και των windws αν εγκατασταθούν οι κατάλληλες βιβλιοθήκες). Τα threads όταν δημιουργούνται επιβαρύνουν το σύστημα πολύ λιγότερο από ότι οι διεργασίες. Είναι λοιπόν αποδοτικότερο να δημιουργούμε threads παρά διεργασίες στην εφαρμογή μας. Αυτό θα το διαπιστώσετε παρακάτω. Η συνάρτηση time() της C {προσοχή man sectin 3} τι παραμέτρους δέχεται και τι επιστρέφει; (Α1) (C1) Να δημιουργήσετε το πρόγραμμα c1.c το οποίο: Θα ορίσετε μια συνάρτηση nthing() η οποία θα ορίζει μια μεταβλητή int x=0 και θα κάνει την πράξη x=x+1. Αυτή η συνάρτηση δεν κάνει τίποτα χρήσιμο, αλλά απλώς υπάρχει για να μας βοηθήσει στη μέτρηση. Μέσα στο main() θα εκτελεί μια φορά τη συνάρτηση time() με τις κατάλληλες παραμέτρους, θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή start και αμέσως μετά θα εκτυπώνεται το μήνυμα Αρχική τιμή δευτερολέπτων ακολουθούμενο από τη start. Στη συνέχεια θα υπάρχει ένας βρόχος while() ο οποίος θα δημιουργεί 100 διεργασίες (δοκιμάστε και για 5000, 10000) με τη frk() οι οποίες όλες θα εκτελούν τη nthing(). Προσοχή, ο πατέρας θα δημιουργήσει όλες τις διεργασίες και όχι η κάθε διεργασία θα δημιουργεί άλλη διεργασία. Μόλις δημιουργηθούν οι 100 διεργασίες και μόνο τότε θα εκτελεί ο πατέρας 100 φορές τη waitpid() ώστε να περιμένει την επιτυχή ολοκλήρωση όλων των θυγατρικών. Στη συνέχεια θα καλείται η time(), θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή end και αμέσως μετά θα εκτυπώνεται το μήνυμα Τελική τιμή δευτερολέπτων ακολουθούμενη από την end. Θα γίνεται η πράξη end-start, θα εκτυπώνεται το αποτέλεσμα ενώ θα εκτυπώνεται και το αποτέλεσμα (end-start)/100 για να εμφανιστεί ο μέσος χρόνος δημιουργίας, εκτέλεσης και τερματισμού των 100 διεργασιών. Πόσος είναι ο συνολικός χρόνος και ο μέσος χρόνος δημιουργίας εκτέλεσης και τερματισμού των 100 διεργασιών στο σύστημα σας (μη ξεχάσετε τη μονάδα μέτρησης); (A2) 5
6 Το πρόγραμμα συστήματος time που χρησιμοποιείται και τι στοιχεία μας εκτυπώνει στην έξοδο όταν χρησιμοποιηθεί για μια διεργασία; (A3) Απομακρύνετε από τον κώδικα c1.c τις εντολές που κάνουν printf() όπως και τις κλήσεις στην time και δημιουργήστε το αρχείο c2b.c το οποίο απλώς δημιουργεί 1000 διεργασίες. Κάντε το cmpile, και εκτελέστε το με τη χρήση του προγράμματος time. Ποιοι είναι οι χρόνοι που αναφέρονται από το πρόγραμμα time για την εκτέλεση της προηγούμενης διεργασίας; Συγκρίνετε τους χρόνους με το ερώτημα Α2. Είναι ίδιοι, έχουν μικρή ή μεγάλη απόκλιση κατά τη γνώμη σας; (A4) 4. Η συνάρτηση vfrk() Μέσα στο πρότυπο POSIX ορίζονται πολλαπλές συναρτήσεις δημιουργίας διεργασιών. Ως τώρα χρησιμοποιήσαμε τη frk(). Εκτός από τη frk() υπάρχει και η vfrk() η οποία όμως έχει μια διαφορετική λειτουργία. Τοποθετήστε τον παρακάτω κώδικα στο πρόγραμμα vfrk1.c και εκτελέστε τον. Το πρόγραμμα σας θα σταματήσει απότομα εμφανίζοντας το μήνυμα Segmentatin Fault (ή αντίστοιχο). #include <sys/types.h> #include <unistd.h> #include <stdi.h> main () {pid_t p; if (p=vfrk()==0) { puts("i am the child");} else { puts( I am the parent );} puts("end"); } Χρησιμοποιώντας τη σελίδα βοήθειας της vfrk(), τα σχετικά βοηθήματα και το Internet βρείτε γιατί το συγκεκριμένο πρόγραμμα έχει αυτό το πρόβλημα. (A5) Πως μπορεί να τροποποιηθεί το πρόγραμμα ώστε να μην κάνει Segmentatin Fault; (A6) (C2) Τροποποιήστε το πρόγραμμα δημιουργώντας το c2.c, ώστε να καλεί με επιτυχία τη vfrk() να εκτυπώνονται από τη θυγατρική διεργασία τα I am the child και End και ομοίως να εκτυπώνει η γονική τα αντίστοιχα, χωρίς να δημιουργεί το Segmentatin Fault. 6
7 5. Δημιουργία του πρώτου προγράμματος με threads. 5.1 Δημιουργία & Καταστροφή νημάτων. Προκειμένου να χρησιμοποιήσουμε τα νήματα Pthreads θα πρέπει να τοποθετήσουμε στα include το <pthread.h> το οποίο μας παρέχει τις δηλώσεις των συναρτήσεων που θα χρησιμοποιήσουμε. Επίσης, κατά τη διαδικασία του cmpilatin θα πρέπει αμέσως μετά το gcc να τοποθετήσουμε το -lpthread ώστε να γίνει σύνδεση με την αντίστοιχη βιβλιοθήκη (pthread) των νημάτων. Προκειμένου να δημιουργήσουμε ένα νήμα θα πρέπει: να ορίσουμε μια συνάρτηση το όνομα της οποίας θα είναι pinter στη συνάρτηση, ενώ και οι παράμετροι θα είναι pinters. Δηλαδή η δήλωση θα είναι με * (αστέρι), όπως π.χ. vid *PrintHell (vid *) μέσα στο σημείο που θέλουμε να δημιουργήσουμε το νήμα να εκτελέσουμε τη συνάρτηση pthread_create() στην οποία θα δώσουμε ως δείκτες όλα τα στοιχεία που απαιτούνται: (α) το pinter της συνάρτησης που θα εκτελεστεί, (β) τ pinter των παραμέτρων καθώς και (γ) άλλες παραμέτρους που αφορούν τα νήματα. Αφού διαβάσετε τη σελίδα βοήθειας της pthread_create(), τα βοηθητικά κείμενα που συνοδεύουν το εργαστήριο και πληροφορίες από το Internet, καταγράψτε πόσες παραμέτρους απαιτεί η συνάρτηση pthread_create() και τι σημαίνει η κάθε παράμετρος (A7) Προκειμένου να τερματίσουμε το νήμα θα πρέπει: είτε να εκτελέσουμε την εντολή pthread_exit( ) είτε να τοποθετήσουμε μια εντολή return, η οποία προκαλεί έμμεση εκτέλεση της pthread_exit() 5.2 Δημιουργία νημάτων χωρίς παραμέτρους (C3) Κατασκευάστε ένα αρχείο με όνομα c3.c στο οποίο θα δημιουργήστε μια συνάρτηση *hellwrld (vid *arg) η οποία θα εκτυπώνει το μήνυμα Hell Wrld frm Thread. Η συνάρτηση των νημάτων δηλώνεται ως pinter, όπως και οι παράμετροι της. Μέσα στο κυρίως πρόγραμμα θα ερωτάται ο χρήστης πόσα νήματα θέλει να δημιουργήσει και στη συνέχεια θα υπάρχει μια δομή βρόχου fr() για τον αριθμό των επαναλήψεων που έχει δηλώσει ο χρήστης. Μέσα στο fr θα εκτυπώνεται το μήνυμα Δημιουργείται το thread XXX, όπου XXX η τρέχουσα τιμή του μετρητή fr και αμέσως μετά θα δημιουργούνται τα νήματα με τη pthread_create() και παράμετρο τη συνάρτηση hellwrld. 7
8 Σημειώστε ότι δε θα ρυθμίσουμε χαρακτηριστικά νημάτων, ούτε θα δώσουμε παραμέτρους, οπότε αντιστοίχως η 2η και η 4η παράμετροι της pthread_create() θα είναι NULL. Προκειμένου να αποθηκεύουμε το κάθε id θα δηλώσουμε έναν πίνακα από id νημάτων ως: pthread_t threads[number_f_threads]; και αυτό σημαίνει ότι η 1 η παράμετρος της pthread_create() θα είναι η &threads[i]. Να κάνετε cmpile το πρόγραμμα και να επιβεβαιώσετε την ορθή λειτουργία. Που χρησιμοποιείται η εντολή pthread_jin(); (A8) Ποιοι είναι οι παράμετροι της pthread_jin(); (A9) (C4) Να δημιουργήσετε το πρόγραμμα c4.c το οποίο: θα ορίσετε μια συνάρτηση nthing() η οποία θα ορίζει μια μεταβλητή int x=0 και θα κάνει την πράξη x=x+1. Αυτή η συνάρτηση δεν κάνει τίποτα χρήσιμο, αλλά απλώς υπάρχει για να μας βοηθήσει στη μέτρηση. Μέσα στο main() θα εκτελεί μια φορά τη συνάρτηση time() με τις κατάλληλες παραμέτρους, θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή start και αμέσως μετά θα εκτυπώνεται το μήνυμα Αρχική τιμή δευτερολέπτων ακολουθούμενο από τη start. Στη συνέχεια θα υπάρχει ένας βρόχος while() ο οποίος θα δημιουργεί 100 νήματα με τη pthread_create(), τα οποία όλα θα εκτελούν τη nthing(). Προσοχή, ο πατέρας θα δημιουργήσει 100 νήματα. Το thread id θα αποθηκεύεται σε έναν πίνακα: pthread_t threads [number_f_threads]; Μόλις δημιουργηθούν οι 100 νήματα και μόνο τότε θα εκτελεί ο πατέρας ένα νέο βρόχο fr για 100 φορές τη pthread_jin(threads[i],(vid *) NULL) ώστε να περιμένει την επιτυχή ολοκλήρωση όλων των νημάτων. Παρατηρήστε ότι η 2η παράμετρος είναι NULL γιατί δε μας ενδιαφέρει η τιμή επιστροφής του κάθε νήματος. Στη συνέχεια θα καλείται η time(), θα αποθηκεύεται ο αριθμός των δευτερολέπτων στη μεταβλητή end και αμέσως μετά θα εκτυπώνεται το μήνυμα Τελική τιμή δευτερολέπτων ακολουθούμενη από την end. Θα γίνεται η πράξη end-start, θα εκτυπώνεται το αποτέλεσμα ενώ θα εκτυπώνεται και το αποτέλεσμα (end-start)/100 για να εμφανιστεί ο μέσος χρόνος δημιουργίας, εκτέλεσης και τερματισμού των 100 διεργασιών. 8
9 Πόσος είναι ο συνολικός χρόνος και ο μέσος χρόνος δημιουργίας εκτέλεσης και τερματισμού των 100 νημάτων στο σύστημα σας (μη ξεχάσετε τη μονάδα μέτρησης); (A10) Απομακρύνετε από τον κώδικα c4.c τις εντολές που κάνουν printf() όπως και τις κλήσεις στην time και δημιουργήστε το αρχείο c4.c το οποίο απλώς δημιουργεί 1000 νήματα. Κάντε το cmpile, και εκτελέστε το με τη χρήση του προγράμματος time. Ποιοι είναι οι χρόνοι που αναφέρονται από το πρόγραμμα time για την εκτέλεση της προηγούμενης διεργασίας; Συγκρίνετε τους χρόνους με το ερώτημα Α2. Είναι ίδιοι, έχουν μικρή ή μεγάλη απόκλιση κατά τη γνώμη σας; (A11) Συγκρίνετε τους χρόνους δημιουργίας διεργασιών και τους χρόνους δημιουργίας νημάτων και σχολιάστε ποια τεχνική είναι πιο γρήγορη και πόσες φορές: (A12) Που χρησιμοποιείται και γιατί η συνάρτηση fflush(); (A13) Τι θα επιτευχθεί αν γίνει η κλήση fflush(null) (δηλαδή κλήση με καμία παράμετρο); (A14) 5.3 Δημιουργία νημάτων με πέρασμα μιας παραμέτρου (C5) Να δημιουργήσετε το πρόγραμμα c5.c το οποίο: Θα ορίζει μια συνάρτηση vid *PrintHell(vid *threadid) η οποία θα εκτυπώνει με printf() το string hell wrld και θα ακολουθεί ο αριθμός του threadid. Θα εκτελείται η συνάρτηση fflush(null) και θα καλείται η συνάρτηση τερματισμού thread. Στο κυρίως πρόγραμμα ορίστε #define NUM_THREADS 15 Δημιουργήστε ένα βρόχο επαναλήψεων, το οποίο δημιουργεί τόσα threads όσα το προηγούμενο define (fr(i=0;i<num_threads). Όλα τα thread θα εκτελούν τη συνάρτηση PrintHell. Η παράμετρος που θα στέλνουμε κάθε φορά θα είναι ο αριθμός του thread, δηλαδή η τιμή της μεταβλητής i του βρόχου fr. Αυτό μπορείτε να το περάσετε ως (vid *)i. Μπορείτε να χρησιμοποιήσετε τη δήλωση: pthread_t threads[num_threads]; ώστε να μην απαιτείται κάθε φορά να δηλώνετε ένα ένα όλα τα pthread_t που χρειάζεστε. Ελέγξτε την τιμή που επιστρέφεται (από τη pthread_create() ) κάθε φορά που δημιουργείται ένα νέο νήμα. Αν η τιμή δεν είναι σωστή (δείτε το man page) τότε θα εμφανίζεται ένα μήνυμα αποτυχίας σχετικά με το ποιο thread δε μπόρεσε να δημιουργηθεί. 9
10 Κάντε cmpile & επιβεβαιώστε την ορθή λειτουργία. (C6) Να δημιουργήσετε το πρόγραμμα c6.c το οποίο θα μας βοηθήσει να βρούμε ποιο είναι το μέγιστο όριο νημάτων που επιτρέπεται να δημιουργήσουμε στο σύστημα μας. Συγκεκριμένα: Θα χρησιμοποιεί το C5 κώδικα. Να απομακρύνετε ή να τοποθετήσετε σε σχόλιο όλες τις εντολές εκτύπωσης μηνύματος. Το NUM_THREADS θα έχει μια πολύ μεγάλη τιμή (π.χ ή και μεγαλύτερη). Μόλις εκτελείται η pthread_create() θα ελέγχεται η τιμή επιστροφής. Αν δεν έχει δημιουργηθεί με επιτυχία το νήμα τότε θα εκτυπώνεται το μήνυμα N mre threads. Thread Cunt: XXX, όπου XXX θα είναι η τρέχουσα τιμή του βρόχου fr. Πόσος είναι ο μέγιστος αριθμός νημάτων ανά διεργασία στο σύστημα σας σύμφωνα με το C6; (A15) Ψάξτε στο internet και βρείτε που ορίζεται αυτός ο μέγιστος αριθμός και πως μπορεί να τροποποιηθεί: (A16) 5.4 Πέρασμα παραμέτρων σε νήματα Ένα ακόμη παράδειγμα με κοινά δεδομένα Στο επόμενο παράδειγμα θα δημιουργήσουμε ένα πρόγραμμα το οποίο δημιουργεί έναν αριθμό από νημάτων. Το κάθε νήμα εκτυπώνει μια διαφορετική γραμμή ενός πίνακα κοινού. (C7) Να δημιουργήσετε το πρόγραμμα c7.c το οποίο: Χρησιμοποιεί τον κώδικα του C5. Μέσα στη συνάρτηση των thread το printf θα τροποποιηθεί στο printf("thread %d: %s\n", taskid, messages[taskid]); όπου taskid είναι ο αριθμός του thread και messages ένας πίνακας που έχει οριστεί στο κυρίως πρόγραμμα. Έξω από κάθε συνάρτηση ορίστε τη glbal μεταβλητή, προκειμένου να είναι προσβάσιμη τόσο από το κυρίως πρόγραμμα όσο και από τα νήματα: char *messages[num_threads]; 10
11 Στο κυρίως πρόγραμμα τοποθετήστε στη glbal μεταβλητή messages τα παρακάτω μηνύματα: messages[0] = "English: Hell Wrld!"; messages[1] = "French: Bnjur, le mnde!"; messages[2] = "Spanish: Hla al mund"; messages[3] = "Klingn: NuqneH Hch!"; messages[4] = "German: Guten Tag, Welt!"; messages[5] = "Russian: Zdravstvytye, mir!"; messages[6] = "Japan: Sekai e knnichiwa!"; messages[7] = "Latin: Orbis, te salut!"; Μέσα στο βρόχο του κυρίως προγράμματος που δημιουργούνται τα threads (από t=0 έως t<num_threads) θα έχουμε: taskids[t] = (int *) mallc(sizef(int)); *taskids[t] = t; *** Γιατί το κάνουμε αυτό; Αν στέλναμε κατευθείαν τη μεταβλητή t σε κάθε thread τότε θα στέλναμε τη διεύθυνση μνήμης της μεταβλητής t, η οποία έχει δεδομένα που τροποποιούνται συνέχεια στο βρόχο (αρχικά τα δεδομένα είναι 0 μετά είναι 1, κ.ο.κ.). Κατασκευάζουμε μια μεταβλητή για κάθε νήμα λοιπόν, η οποία δεν αλλάζει καθώς αλλάζει ο δείκτης του βρόχου. *** Η παράμετρος που θα στέλνουμε σε κάθε thread μέσα στη συνάρτηση pthread_create() είναι η (vid *) taskids[t] Ορίστε το NUM_THREADS σε 8. Προσοχή στη συνάρτηση νήματος: η συνάρτηση στον ορισμό της δέχεται τα ορίσματα ως διευθύνσεις, οπότε θα έχει ως παράμετρο ορισμού: vid * parameter προκειμένου να διαβάσουμε την ακέραια τιμή που βρίσκεται στη διεύθυνση μνήμης που δείχνει ο pinter * parameter θα πρέπει να ορίσουμε ότι θα χρησιμοποιήσουμε ένα νέο pinter ακεραίων *ptr ως εξής: int *ptr; Μετά θα τοποθετήσουμε στον pinter *ptr που έχουμε δηλώσει πριν, τον αρχικό pinter *parameter που έχουμε δεχθεί ως παράμετρο της συνάρτησης: ptr=(int *) parameter; Θα δηλώσουμε μια ακέραια τιμή int index για να τοποθετήσουμε σε αυτό την τιμή που δέχθηκε το νήμα μας. Για να διαβάσουμε λοιπόν την ακέραια τιμή που δείχνει ο pinter *ptr αρκεί να δώσουμε index=*ptr; Την τιμή index που είναι μια ακέραια τιμή θα χρησιμοποιήσουμε στο printf. 11
12 Κάντε cmpile και επιβεβαιώστε την ορθή λειτουργία. Θα πρέπει να εκτυπώνονται όλα τα μηνύματα του πίνακα Πολλαπλές τιμές Υπάρχουν περιπτώσεις που θέλουμε να στείλουμε πολλαπλά δεδομένα στα νήματα και όχι μόνο μια ακέραια τιμή. Για να γίνει αυτό δημιουργούμε ένα struct στο οποίο τοποθετούμε όλα τα δεδομένα μας και εμείς στέλνουμε τη διεύθυνση του struct στο νήμα. Αυτό θα το δούμε με το παρακάτω παράδειγμα: (C8) Να δημιουργήσετε το πρόγραμμα c8.c το οποίο: Χρησιμοποιεί τον κώδικα του C7. Ορίζει ως glbal μια δομή (struct) στην οποία θα τοποθετήσουμε 3 παραμέτρους: τον αριθμό του νήματος, μια ακέραια τιμή, και ένα μήνυμα. Αυτό θα γίνει με τη δήλωση: struct thread_data{ int thread_id; int sum; char *message; }; Συσχετίστε αυτή τη δομή με μια μεταβλητή (ή με άλλα λόγια ορίστε μια μεταβλητή τύπου thread_data), η οποία θα είναι ξεχωριστή για κάθε νήμα. Ο καλύτερος τρόπος να το κάνουμε αυτό είναι να ορίσουμε έναν πίνακα όπου κάθε καταχώρηση θα είναι τύπου struct thread_data. Αυτό γίνεται με τη δήλωση: struct thread_data thread_data_array[num_threads]; Το επόμενο βήμα είναι να τροποποιηθεί η δήλωση της συνάρτησης printhell, ώστε να δέχεται ως όρισμα το (vid *threadarg) και ότι θα χρησιμοποιήσει το struct. Θα πρέπει να δηλωθεί λοιπόν μέσα στη συνάρτηση αυτή μια μεταβλητή pinter *my_data (είναι pinter γιατί οι παράμετροι στα νήματα είναι πάντα pinter) που θα δείχνει σε μια δομή struct, όπως παραπάνω: struct thread_data *my_data; Μέσα στη συνάρτηση ορίστε ως ακέραια τιμή μια μεταβλητή taskid, η οποία θα φέρει κάθε φορά τον ακέραιο αριθμό αριθμού thread που βρίσκεται μέσα στο struct thread_data. Στη συνέχεια μέσα στη συνάρτηση printhell, διαβάστε όλες τις τιμές που έχουν έρθει ως pinter κατά την κλήση και αντιστοιχούν στο struct που έχουμε δηλώσει, με τον παρακάτω τρόπο. Παρατηρήστε ότι αρχικά ο pinter *threadarg που μας έρχεται από την κλήση αρχικά τοποθετείται στο τοπικό pinter και στη συνέχεια μπορούμε να διαβάσουμε συγκεκριμένα στοιχεία με τη χρήση του βέλους - > 12
13 my_data = (struct thread_data *) threadarg; taskid = my_data->thread_id; Μέσα στη συνάρτηση printhell, εκτυπώστε με printf το κάθε στοιχείο (δηλαδή, τον αριθμό του thread, τον αριθμό sum και το μήνυμα), ώστε στο τέλος να εμφανίζονται τα μηνύματα ως εξής:... Thread 4: German: Guten Tag, Welt! Sum=10 Thread 5: Russian: Zdravstvytye, mir! Sum=15 Thread 6: Japan: Sekai e knnichiwa! Sum=21 Thread 7: Latin: Orbis, te salut! Sum=28... Στο κυρίως πρόγραμμα πριν από το κάθε pthread_create() θα πρέπει να τοποθετήσετε τις γραμμές που γράφουν δεδομένα στο struct, όπως παρακάτω και τα οποία τα στέλνουμε με το pinter που τους αντιστοιχούν στο κάθε νήμα. thread_data_array[t].thread_id = t; thread_data_array[t].sum = sum; thread_data_array[t].message = messages[t]; Το sum (που το έχετε ορίσει ως ακέραιο μέσα στο main() για να συμφωνεί με το struct) να το υπολογίζετε κάθε φορά ως: sum = sum + t + 1; Η κλήση της δημιουργίας νημάτων θα έχει για 4η παράμετρο το δείκτη που αντιστοιχεί στο struct που θέλουμε να στείλουμε και ο οποίος είναι το thread_data_array[t]. Αυτό θα γίνει ως: (vid *) &thread_data_array[t] Παρατηρήστε ότι επιβάλετε να χρησιμοποιούμε το pthread_create() στο πέρασμα των παραμέτρων. (vid *) στη Κάντε cmpile και επιβεβαιώστε την ορθή λειτουργία. Π Ρ Ο Σ Ο Χ Η : Η παρακάτω δομή είναι λάθος, επειδή στέλνει τη διεύθυνση της μεταβλητής οποία βρίσκεται σε κοινή μνήμη και προσβάσιμη από κάθε νήμα. Καθώς το lp προχωράει η τιμή του t αλλάζει (αρχικά t=0, μετά t=1,..) οπότε μέχρι να διαβάσει το νήμα την τιμή έχει ήδη αλλάξει αυτή και μας είναι άχρηστη. Για αυτό το λόγο προσέχουμε αν θα στείλουμε τη διεύθυνση της μεταβλητής με το & μπροστά ή την τιμή της μεταβλητής χωρίς το & από μπροστά. Λάθος: int rc;lng t; fr(t=0; t<num_threads; t++) t η 13
14 { printf("creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHell, (vid *) &t);...} Σωστό: int rc;lng t; fr(t=0; t<num_threads; t++) { printf("creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHell, (vid *) t);...} 5.5 Συγχρονισμός διεργασιών με pthread_jin() Υπάρχουν περιπτώσεις που πρέπει το κυρίως πρόγραμμα να περιμένει να ολοκληρωθούν κάποια νήματα πριν συνεχίσει την εκτέλεση. Σε αυτές τις περιπτώσεις χρησιμοποιούμε τη συνάρτηση pthread_jin(). Για παράδειγμα θα κατασκευάσουμε μια διαδικασία που θα εκτελείται από κάθε νήμα προκειμένου να κάνει κάποιους υπολογισμούς. Το κυρίως πρόγραμμα θα περιμένει να ολοκληρωθούν όλοι οι υπολογισμοί (να τερματίσουν δηλαδή όλα τα νήματα). Όταν κάνουν jin όλα τα νήματα, τότε θα ολοκληρώνεται και το κυρίως πρόγραμμα. Η 2η παράμετρος της pthread_create() που χρησιμοποιείται; Δώστε ένα παράδειγμα: (A17) Η συνάρτηση pthread_attr_init που χρησιμοποιείται, πόσες παραμέτρους και τι σημαίνει η κάθε παράμετρος; (A18) (C9) Να δημιουργηθεί το πρόγραμμα c9.c Κάντε include το header file των μαθηματικών σχέσεων math.h γιατί θα χρησιμοποιήσουμε τριγωνομετρικές συναρτήσεις. *** Όταν χρησιμοποιούμε μαθηματικές συναρτήσεις στη C (gcc) θα πρέπει κατά το cmpile να κάνουμε link με τη μαθηματική βιβλιοθήκη. Αυτό γίνεται με το να προσθέσουμε το διακόπτη -lm στην εντολή gcc. *** Κάντε include όλα τα υπόλοιπα header file που θα χρησιμοποιήσετε. Ορίστε στο define τον αριθμό των threads σε 4. 14
15 Ορίστε μια διαδικασία που θα εκτελούν τα threads ως cmputethread με: vid *cmputethread(vid *t) Η διαδικασία θα εκτυπώνει ένα μήνυμα ότι ξεκινάει το νήμα με αριθμό ΧΧΧ (ο αριθμός που δίνεται στην παράμετρο *t). Στη συνέχεια θα εκτελεί ένα βρόχο από i=0 έως i=107 με την πράξη: result = result + sin(i) * tan(i); (μέσα στη συνάρτηση να έχει οριστεί 0.0) duble result= Όταν υπολογιστεί ο αριθμός result το νήμα εκτυπώνει ότι Το νήμα με αριθμό ΧΧΧΧ, τελείωσε. Το result είναι ΥΥΥΥΥ Στην κυρίως συνάρτηση (main). Ορίστε για κάθε thread τον τύπο pthread_t (σε μορφή πίνακα όπως το είχατε κανει πριν). Ορίστε μια παράμετρο attr τύπου pthread_attr_t : pthread_attr_t attr; Αρχικοποιήστε το attr με τη χρήση της συνάρτησης pthread_attr_init Ορίστε ότι το attr θα είναι JOINABLE με τη χρήση της συνάρτησης pthread_attr_setdetachstate(), δηλαδή η κατάσταση να είναι PTHREAD_CREATE_JOINABLE. Δημιουργήστε ένα βρόχο fr-lp από t=0 έως t<num_threads, ο οποίος θα εκτυπώνει ένα μήνυμα ΜΑΙΝ: Creating thread Number... και θα δημιουργεί το νήμα με παράμετρο το (vid *)t και το χαρακτηριστικό &attr. Να υπάρχει έλεγχος ότι δημιουργείται το thread. Αν δε μπορεί να δημιουργηθεί το thread τότε να εμφανίζεται σχετικό μήνυμα. Όταν ολοκληρωθεί το παραπάνω lp, τότε δε θα χρειάζεται πια το attribute και μπορούμε να το απομακρύνουμε με την κλήση της συνάρτησης pthread_attr_destry() Δημιουργήστε ένα νέο βρόχο fr-lp από t=0 έως t<num_threads, ο οποίος θα κάνει κλήση της συνάρτησης pthread_jin με πρώτη παράμετρο το pthread_t του κάθε thread, και δεύτερη παράμετρο το &status. Στο status θα τοποθετείται η τιμή που επιστρέφει το κάθε νήμα όταν τερματίζει. Να ελέγξετε αν εκτελέστηκε κάθε φορά με επιτυχία η pthread_jin με μια δομή if. Αν δεν έχει εκτελεστεί σωστά να εκτυπώνεται το αντίστοιχο μήνυμα. 15
16 Το main να εκτυπώνει στο τέλος κάθε jin που γίνεται μαζί με την τιμή που επιστρέφει (Μain: cmpleted jin with thread number XXXX having a status f YYYYY). Χρησιμοποιήστε σε αυτήν την άσκηση τη συνάρτηση pthread_self() για να εκτυπώνεται το thread ID. 5.6 Καταστρέφοντας τα νήματα Η συνάρτηση pthread_cancel() που χρησιμοποιείται, πόσους παραμέτρους δέχεται και τι σημαίνει η κάθε παράμετρος; (A19) Πολλές φορές είναι επιθυμητό να καταστρέφεται ένα νήμα ιδιαίτερα αν για κάποιο λόγο καθυστερεί να ολοκληρώσει το έργο του, ενώ θα έπρεπε να το έχει ήδη ολοκληρώσει. Η συνάρτηση που χρησιμοποιείται για την ακύρωση είναι η pthread_cancel(). Η συνάρτηση που χρησιμοποιείται για να ελεγχθεί αν εκτελείται ακόμη ένα νήμα, είναι η συνάρτηση με παράμετρο 0 pthread_kill() (δείτε man page). (C10) Να δημιουργηθεί το πρόγραμμα c10.c, το οποίο δημιουργεί δύο νήματα. Το κάθε νήμα εκτελεί μια διαφορετική συνάρτηση. Το πρώτο νήμα με όνομα sleeper θα εκτυπώνει ένα μήνυμα ότι ενεργοποιήθηκε, θα ζητάει από το χρήστη μια τιμή και θα κάνει ένα sleep για όσα δευτερόλεπτα έχει δώσει πριν ο χρήστης. Στη συνέχεια θα κάνει pthread_exit(). T δεύτερο νήμα με όνομα watchdg θα εκτελείται με παράμετρο το thread_id του προηγούμενου νήματος θα εκτυπώνει ένα μήνυμα ότι ενεργοποιήθηκε και μετά από sleep(10) θα ελέγχει με τη συνάρτηση pthread_kill() αν το προηγούμενο νήμα έχει ολοκληρωθεί ή όχι. Αν έχει ολοκληρωθεί θα κάνει κλήση της pthread_exit() και θα ολοκληρώνεται και αυτό, διαφορετικά θα εκτυπώνει ένα κατάλληλο μήνυμα και θα κάνει pthread_cancel() καταστρέφοντας το προηγούμενο νήμα. Το κυρίως πρόγραμμα θα εκτελεί αμέσως μετά τη δημιουργία των νημάτων pthread_jin και για τα δυο, προκειμένου να μην ολοκληρωθεί η εκτέλεση (γιατί σε αυτήν την περίπτωση αμέσως όλα τα νήματα θα καταστραφούν). 16
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:08 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: Μέτρηση χρόνου τοίχου κατά POSIX Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου
Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:06 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου
Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 06 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου
Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου
Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No 05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Δομημένος Προγραμματισμός Ενότητα 4(β): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Δομημένος Προγραμματισμός Ενότητα 5(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου
Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και
Διαβάστε περισσότεραΕνσωματωμένα Συστήματα
Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής
ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 5: MPI_Reduce Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΕργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ
Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)
Διαβάστε περισσότεραΕνσωματωμένα Συστήματα
Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 5 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 10: Συναρτήσεις Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 5: MPI_Reduce Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΚατανεμημένα Συστήματα
Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,
Διαβάστε περισσότεραΕισαγωγή στον δομημένο προγραμματισμό
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 12 η : Δυναμική Ανάθεση Θέσης Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΕιδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραNIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1 Ένα thread έχει: ID, program counter, register set, stack Μοιράζεται με τα άλλα threads της ίδιας διεργασίας τον κώδικα, τα δεδομένα και τους άλλους πόρους
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 5: Εντολές αλλαγής ροής. Διακλάδωση χωρίς συνθήκη. Διακλάδωση με συνθήκη. Δρ. Μηνάς Δασυγένης
Διαβάστε περισσότεραΚεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 10: Πέρασμα Παραμέτρων σε Διαδικασίες. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Δομή του προγράμματος Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΕισαγωγή στον δομημένο προγραμματισμό
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 7 η : Δείκτες Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 3: MPI_Get_count, non blocking send/recv, εμφάνιση και αποφυγή αδιεξόδων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής
ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: Διαδικασίες, Σωρός, Διαφανείς συναρτήσεις Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Δομημένος Προγραμματισμός Ενότητα 3(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραlab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1
ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Αλφαριθμητικά θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΚεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 3: Καταχωρητές, Τμήματα, Διευθυνσιοδότηση Μνήμης, SEGMENT, MOV, ADD, SUB, INT, TITLE, LEA
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Δομημένος Προγραμματισμός Ενότητα 6(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΕισαγωγή στην Πληροφορική
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά
Διαβάστε περισσότεραΔιαδικαστικός Προγραμματισμός
Διαδικαστικός Προγραμματισμός Ενότητα 8: Παραδείγματα με μονοδιάστατους πίνακες, συναρτήσεις, δείκτες, πέρασμα παραμέτρων με αναφορά Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΕνσωματωμένα Συστήματα
Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 13 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΠρογραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Δομημένος Προγραμματισμός Ενότητα 5(α): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω
Διαβάστε περισσότεραΣυστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: OpenMPI Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:12 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: inc, dec, loop, jcxz, dup, displacement Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο
Διαβάστε περισσότεραΨηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Ψηφιακή Σχεδίαση Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http:
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Εργαστήριο
Αρχιτεκτονική Υπολογιστών Εργαστήριο Ενότητα: ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΣΦΑΛΜΑΤΩΣΗΣ Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 13: Ταυτόχρονος Προγραμματισμός Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 7: Αποκωδικοποίηση Εντολής x86 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη
ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΠρογραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου
Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΝΔΕΙΚΤΙΚΕΣ ΕΡΩΤΗΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ No11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΗ βασική συνάρτηση προγράμματος main()
Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό με C++
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 6: Συναρτήσεις Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΕκφωνήσεις ασκήσεων εργαστηρίου 2 (pthreads)
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου
Διαβάστε περισσότεραΤμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Δομημένος Προγραμματισμός Ενότητα 2(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα 9: Συναρτήσεις Εμβέλεια Κουκουλέτσος Κώστας Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστικών Συστημάτων
Διαβάστε περισσότεραΠρογραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου
Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΗλεκτρονικοί Υπολογιστές
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΔομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 2 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΕιδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΨηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Ψηφιακή Σχεδίαση Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http:
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου
Διαβάστε περισσότεραΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59
ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 5/12/10, 23:59 Στόχοι structs Πίνακες Συναρτήσεις Συµβολοσειρές Χρήση µεταβλητών και σταθερών Χρήση τελεστών Χρήση δοµών
Διαβάστε περισσότεραΠληροφορική ΙΙ Θεματική Ενότητα 7
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Πληροφορική ΙΙ Θεματική Ενότητα 7 Δομές επανάληψης Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά
Διαβάστε περισσότεραΣτη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:
Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται
Διαβάστε περισσότερα