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

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

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

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 Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

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

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

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Ενσωματωμένα Συστήματα

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

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

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

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

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

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

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 10: Συναρτήσεις Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4

NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1 Ένα thread έχει: ID, program counter, register set, stack Μοιράζεται με τα άλλα threads της ίδιας διεργασίας τον κώδικα, τα δεδομένα και τους άλλους πόρους

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

Ενσωματωμένα Συστήματα

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

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

Αρχιτεκτονική Υπολογιστών

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 5: Εντολές αλλαγής ροής. Διακλάδωση χωρίς συνθήκη. Διακλάδωση με συνθήκη. Δρ. Μηνάς Δασυγένης

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

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

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

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

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

Αρχιτεκτονική Υπολογιστών

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

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

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

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

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

Ενσωματωμένα Συστήματα

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 5(α): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 3: Καταχωρητές, Τμήματα, Διευθυνσιοδότηση Μνήμης, SEGMENT, MOV, ADD, SUB, INT, TITLE, LEA

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

Αρχιτεκτονική Υπολογιστών

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

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

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 8: Παραδείγματα με μονοδιάστατους πίνακες, συναρτήσεις, δείκτες, πέρασμα παραμέτρων με αναφορά Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Εργαστήριο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 2(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 13: Ταυτόχρονος Προγραμματισμός Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν

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

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

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: inc, dec, loop, jcxz, dup, displacement Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο

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

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις Προγραμματισμός Η/Y Διάλεξη 6 η : Συναρτήσεις Η C είναι συναρτησιακή γλώσσα προγραμματισμού Ως τώρα όλα τα προγράμματα που είδαμε ήταν γραμμένα μέσα στην main Τι θα κάνουμε όμως αν Το πρόγραμμα είναι τεράστιο

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2009-20010 Προθεσµία: 15/11/09, 23:59 Στόχοι Χρήση συναρτήσεων Χρήση µονοδιάστατων πινάκων Διαχείριση συµβολοσειρών Φορµαρισµένη έξοδος δεδοµένων

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

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Αρχιτεκτονική Υπολογιστών

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

Αρχιτεκτονική Υπολογιστών

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 5/12/10, 23:59 Στόχοι structs Πίνακες Συναρτήσεις Συµβολοσειρές Χρήση µεταβλητών και σταθερών Χρήση τελεστών Χρήση δοµών

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε

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

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 12: Παραδείγματα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Προγραμματισμός Η/Υ Ενότητα 3 η : Η Γλώσσα Προγραμματισμού VB.NET (2 ο Μέρος) Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής

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

Ενσωματωμένα Συστήματα

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 8: Αρχεία και Δομές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν

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

Αρχιτεκτονική Υπολογιστών

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

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

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Νήµατα. Πολύ σηµαντικό

Νήµατα. Πολύ σηµαντικό Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα

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

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

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

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

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

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

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

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 4: Visual Basic for Applications (VBA) Δομές Επανάληψης και Επιλογής Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 3: Συναρτήσεις printf() και scanf() Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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