ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

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

Download "ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ"

Transcript

1 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ευστράτιος Π. Παλαιολόγος Επιβλέπων : Νεκτάριος Κοζύρης Καθηγητής Ε.Μ.Π. Αθήνα, Ιανουάριος

2

3 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Μελέτη Αλγορίθμων Εκτέλεσης και Χρονοδρομολόγησης Παράλληλων Εργασιών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ευστράτιος Π. Παλαιολόγος Επιβλέπων : Νεκτάριος Κοζύρης Καθηγητής Ε.Μ.Π. Εγκρίθηκε από την τριμελή εξεταστική επιτροπή την 31 η Ιανουαρίου Νεκτάριος Κοζύρης Καθηγητής Ε.Μ.Π. Αθήνα, Ιανουάριος Δημήτριος Σούντρης Επίκουρος Καθηγητής Ε.Μ.Π.... Δημήτριος Τσουμάκος Επίκουρος Καθηγητής Ιονίου Πανεπιστημίου 3

4 (Υπογραφή)... ΠΑΛΑΙΟΛΟΓΟΣ ΕΥΣΤΡΑΤΙΟΣ Διπλωματούχος Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π. Copyright Ευστράτιος Π. Παλαιολόγος, 2013 Με επιφύλαξη παντός δικαιώματος. All rights reserved. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Ερωτήματα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερμηνευθεί ότι αντιπροσωπεύουν τις επίσημες θέσεις του Εθνικού Μετσόβιου Πολυτεχνείου. 4

5 Περίληψη Μια διαδεδομένη τεχνική για την αξιοποίηση πολυεπεξεργαστικών συστημάτων είναι η δόμηση μιας εφαρμογής σε ανεξάρτητες εργασίες που μπορούν να εκτελούνται ταυτόχρονα, γνωστή ως multithreading. Τα περισσότερα εργαλεία παράλληλου προγραμματισμού φροντίζουν αυτές οι εργασίες να κατανέμονται και να εκτελούνται στους επεξεργαστές αυτόματα, χωρίς την παρέμβαση του προγραμματιστή. Αυτό κάνει τον παράλληλο προγραμματισμό αφενός πιο εύκολο, καθώς ο προγραμματιστής ασχολείται μόνο με τον τρόπο που θα δομήσει την εφαρμογή του σε ανεξάρτητες εργασίες, και αφετέρου πιο αποδοτικό, αφού οι εργασίες δρομολογούνται από ένα σύστημα που εγγυημένα δουλεύει σωστά και γρήγορα. Στόχος αυτής της εργασίας είναι η μελέτη του τρόπου που μπορούμε να διαχειριστούμε παράλληλες εργασίες -πώς να τις δημιουργήσουμε, να τις τερματίσουμε και να τις συγχρονίσουμε μεταξύ τους- καθώς και το πώς μπορούν να δρομολογηθούν αυτές σε ένα πλήθος επεξεργαστών. Η μελέτη γίνεται σε εργαλεία παράλληλου προγραμματισμού που παρέχουν τέτοιες δυνατότητες, κυρίως τα Posix Threads και η Cilk. Κατόπιν, αναλύουμε δυο κύριες τεχνικές χρονοδρομολόγησης παράλληλων εργασιών, το work sharing και το work stealing. Μελετούμε αλγορίθμους που βασίζονται σε αυτές τις φιλοσοφίες και την επίδοση που έχουν βάσει θεωρητικών μοντέλων. Τέλος, για εκπαιδευτικούς λόγους, εμπνεόμενοι από τα εργαλεία που εξετάστηκαν, υλοποιούμε σε γλώσσα C μια βιβλιοθήκη διαχείρισης tasks και ένα δρομολογητή. Ο δρομολογητής εκτελεί απλοποιημένες εκδοχές αλγορίθμων work sharing και work stealing. Λέξεις Κλειδιά Cilk, multitasking, work sharing, work stealing, αλγόριθμοι δρομολόγησης, παράλληλος προγραμματισμός, RTS 5

6 6

7 Abstract A common technique for exploiting SMP systems is the division of an application into independent tasks that can be performed simultaneously, known as multithreading. Most parallel programming tools ensure these tasks are distributed and executed on processors automatically, without intervention by the programmer. This makes parallel programming easier, as the programmer only deals with how to structure the application into independent tasks, and also more efficient, since the work initiated by a system is guaranteed to work correctly and quickly. The aim of this work is the study of how we can manage parallel work - how to create, terminate and synchronize them - and how they can be scheduled to a set of processors. The study is using parallel programming tools that provide such capabilities, particularly the Posix Threads and Cilk. Then, we analyze two main techniques of scheduling parallel tasks, work sharing and work stealing. We study algorithms based on these philosophies and their performance based on theoretical models. Finally, for educational purposes, inspired from the examined tools, we implement a library management tasks and a scheduler using C language. The scheduler performs simplified versions of work sharing and work stealing algorithms. Keywords Cilk, multitasking, work sharing, work stealing, scheduling algorithms, parallel programming, RTS, pthreads 7

8 8

9 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ ) Ιστορική Αναδρομή ) Ο Νόμος του Moore Επίπεδα Παραλληλισμού Αρχιτεκτονικές Συστημάτων Παράλληλου Προγραμματισμού Μοντέλα και Εργαλεία Παράλληλου Προγραμματισμού Εισαγωγή στη γλώσσα Cilk Statements της Cilk Διαχείριση μνήμης στη Cilk...23 ΚΕΦΑΛΑΙΟ 2: MULTITHREADING- ΠΟΛΥΝΗΜΑΤΙΣΜΟΣ Διεργασίες Αλγόριθμοι χρονοδρομολόγησης διεργασιών σε έναν επεξεργαστή Multithreading Posix Threads RTS vs OS Η βιβλιοθήκη task.h...43 ΚΕΦΑΛΑΙΟ 3: WORK SHARING Ένα μοντέλο για multitasking υπολογισμούς Χρονική και Χωρική Μελέτη Αλγορίθμων Χρονοδρομολόγησης Work Sharing Αλγόριθμοι Work Sharing με τη βιβλιοθήκη task.h...66 ΚΕΦΑΛΑΙΟ 4: WORK STEALING Work Stealing Αλγόριθμος Περιγραφή του Αλγορίθμου Χρονική επίδοση του Work Stealing Αλγορίθμου Η Work-First Αρχή Υλοποίηση της γλώσσας Cilk Μεταγλώττιση στη Cilk Το πρωτόκολλο THE Work Stealing με τη βιβλιοθήκη task.h...99 ΚΕΦΑΛΑΙΟ 5: ΕΠΙΛΟΓΟΣ ΒΙΒΛΙΟΓΡΑΦΙΑ

10 ΠΙΝΑΚΑΣ ΣΧΗΜΑΤΩΝ Σχήμα 1: Γραφική Παράσταση του Νόμου του Moore...11 Σχήμα 2: Αρχιτεκτονική Κοινής Μνήμης...15 Σχήμα 3: Αρχιτεκτονική Κατανεμημένης Μνήμης...16 Σχήμα 4: Στοίβα-Κάκτος της Cilk...24 Σχήμα 5: Κύκλος ζωής διεργασίας...26 Σχήμα 6: Multithreading σε έναν επεξεργαστή με διαφορετικά επίπεδα παραλληλισμού...32 Σχήμα 7Α: 1:1 Threads σε επίπεδο πυρήνα...42 Σχήμα 7Β: Ν:1 Tasks σε επίπεδο χρήστη...42 Σχήμα 7Γ: Ν:Μ Συνδυασμός Tasks και Threads...42 Σχήμα 8: Ο dag ενός multitasking υπολογισμού...52 Σχήμα 9: Μια δρομολόγηση του υπολογισμού του Σχήματος 8 σε ένα σύστημα τριών επεξεργαστών [24]...54 Σχήμα 10: Spawn tree όπου εμφανίζεται το βάθος δραστηριοποίησης...62 Σχήμα 11: Η Deque...72 Σχήμα 12: Η deque ενός επεξεργαστή p με το άνω task να βρίσκεται στην κεφαλή και το τελευταίο να είναι αυτό που εκτελείται στον επεξεργαστή...74 Σχήμα 13: Η αντιστοιχία των tasks στη deque ενός επεξεργαστή p πριν (αριστερά) και μετά (δεξιά) το spawn. Το κατώτερο task είναι αυτό το οποίο εκτελεί εκείνη τη στιγμή ο επεξεργαστής...76 Σχήμα 14: Η αντιστοιχία των tasks στη deque ενός επεξεργαστή p πριν (αριστερά) και μετά (δεξιά) από το θάνατο ή την αναμονή του task που εκτελούσε ο επεξεργαστής Σχήμα 15: Διαδρομή μεταγλώττισης ενός προγράμματος cilk με ονομασία fib.cilk...85 Σχήμα 16: Αριστερά η διεργασία της Cilk για παραγωγή του ν-οστού αριθμού fibonacci με αναδρομικό τρόπο και δεξιά η απλοποιημένη εκδοχή του fast clone που παράγει ο cilk2c μεταγλωττιστής...88 Σχήμα 17: Αριστερά ο fast clone και δεξιά ο slow clone όπως παράγονται από το cilk2c μεταγλωττιστή με χρήση μακροεντολών του RTS της Cilk...90 Σχήμα 18: Ψευδοκώδικας για την απλοποιημένη εκδοχή του πρωτοκόλλου THE. Αριστερά ο κώδικας του θύματος και δεξιά του κλέφτη...93 Σχήμα 19: Οι τρεις πιθανές περιπτώσεις του πρωτοκόλλου THE

11 ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ 1.1) Ιστορική Αναδρομή 1.1.1) Ο Νόμος του Moore Ο παράλληλος προγραμματισμός αναφέρεται στον κλάδο της Επιστήμης των Υπολογιστών που ασχολείται με την αρχιτεκτονική συστημάτων σε επίπεδο hardware, προγραμματισμό εργασιών σε επίπεδο software και στη μελέτη της απόδοσης τους, για συστήματα που μπορούν να εκτελέσουν ταυτόχρονα εφαρμογές. Η ιδέα του παράλληλου προγραμματισμού δεν είναι πρόσφατη, αλλά ήδη από τις αρχές της δεκαετίας του '60, με την παρουσίαση του 704 από την IBM με αρχιτέκτονα τον Gene Amdahl, τίθενται οι βάσεις για τη μελέτη συστημάτων παράλληλης επεξεργασίας, οπότε και παρουσιάζονται εργασίες και συζητήσεις πάνω σε αυτόν τον τομέα [1]. Στα επόμενα χρόνια, γίνεται λόγος για την απόδοση και τη βέλτιστη αξιοποίηση των παράλληλων συστημάτων με κατάληξη στη διατύπωση των νόμων του Amdahl [2] και του Gustafson [3], βάσει των οποίων η επιτάχυνση ενός προγράμματος δεν είναι ακριβώς ανάλογη με το πλήθος των πυρήνων -όπως θα εύχονταν όλοι- αλλά εξαρτάται και από τη φύση του προγράμματος, πόσο αυτό παραλληλοποιείται. Για τις επόμενες δεκαετίες η έννοια του παράλληλου προγραμματισμού συνδέθηκε στενά με την έννοια του supercomputing. Οι υπερυπολογιστές είναι υπολογιστές κατασκευασμένοι με σκοπό να έχουν μεγάλη υπολογιστική ταχύτητα και ισχύ. Χρησιμοποιούνται σε διάφορες επιστημονικές εφαρμογές, όπως στη μελέτη του διαστήματος και σε ιατρικές εφαρμογές. Αρχικά αποτελούνταν από λίγες επεξεργαστικές μονάδες, αλλά από τη δεκαετία του '90 και μετά άρχισαν να εμφανίζονται μηχανήματα με χιλιάδες πυρήνες. Mέχρι και πριν είκοσι χρόνια, η εφαρμογή των παράλληλων συστημάτων γινόταν μόνο για μη εμπορικές εφαρμογές και σε πολύ ειδικούς τομείς. Πλέον, όμως, η ταυτόχρονη εκτέλεση εργασιών δεν αφορά μόνο τέτοιους ειδικούς τομείς απαιτητικών εφαρμογών, αλλά κάθε εφαρμογή που τρέχει σε πολυπύρηνο σύστημα. Εύλογα μπορεί κάποιος να αναρωτηθεί γιατί μόλις τα τελευταία είκοσι χρόνια η επιστημονική κοινότητα ασχολείται πιο θερμά με έναν τομέα, ο οποίος είχε εμφανιστεί πριν εξήντα χρόνια, και γιατί άργησε τόσο πολύ να αποκτήσει εμπορική χρήση. Η απάντηση είναι απλή: η επίδοση. Ο κόσμος των μικροεπεξεργαστών, από την αρχή της δημιουργίας τους, διέπεται από ένα νόμο, το νόμο του Moore. Ο Gordon Moore, συνιδρυτής της εταιρίας κατασκευαστών μικροεπεξεργαστών Intel, έκανε το 1965 την πρόβλεψη ότι η πυκνότητα ενός μικροεπεξεργαστή σε τρανζίστορ θα διπλασιάζεται κάθε 18 με 24 μήνες (Σχήμα 1). Η πρόβλεψη αυτή αποδείχθηκε έγκυρη, καθώς για σχεδόν μισό αιώνα η κατασκευή μικροεπεξεργαστών ακολουθούσε αυτό το νόμο. Μόνο τα τελευταία δυο-τρία χρόνια 11

12 παρατηρείται μείωση στον εκθετικό ρυθμό αύξησης, γεγονός που οφείλεται στο ότι η τεχνολογία πλησιάζει στα όρια του υλικού. Μαζί με το πλήθος των τρανζίστορ αυξανόταν μέχρι και το 2004 και η συχνότητα των μικροεπεξεργαστών με παρόμοιο ρυθμό. Και αυτό το γεγονός ήταν που οδηγούσε στη συνεχόμενη αύξηση της αποδοτικότητας των υπολογιστών. Ο χρόνος που απαιτείται για να τρέξει μια εφαρμογή δίνεται από τον τύπο: Runtime= Instructions Program Cycles Instruction Time Cycle Έτσι, αυξανόμενη η συχνότητα του ρολογιού, μείωνε τον τελευταίο όρο της εξίσωσης, μειώνοντας το συνολικό χρόνο που χρειαζόταν να εκτελεστεί μια εφαρμογή. Γι' αυτό το λόγο, για κάποιες δεκαετίες, επίδοση και συχνότητα του ρολογιού ήταν έννοιες συνυφασμένες. Έφτασε, όμως, ένα σημείο όπου η περαιτέρω αύξηση της συχνότητας ήταν αδύνατη. Κι αυτό γιατί μαζί με αυτήν αυξάνεται η ισχύς που καταναλώνει το ολοκληρωμένο κύκλωμα και κατ' επέκταση η θερμοκρασία του. Αυτό είχε ως αποτέλεσμα την προβληματική λειτουργία του επεξεργαστή. Σχήμα 1: Γραφική Παράσταση του Νόμου του Moore 12

13 Παρ' όλα αυτά ο νόμος του Moore συνέχισε να ισχύει. Τα κυκλώματα που φτιάχνονταν είχαν συνεχώς περισσότερα τρανζίστορ, αλλά η συχνότητα στην οποία λειτουργούσαν δεν μπορούσε να αυξηθεί. Οδηγηθήκαμε, λοιπόν, σε ολοκληρωμένα κυκλώματα, τα οποία μπορούσαν να φιλοξενήσουν στο ίδιο κομμάτι πυριτίου δεκάδες και εκατοντάδες επεξεργαστικές μονάδες, οι οποίες, όμως, είχαν συχνότητα ρολογιού λίγο μικρότερη από τη μέγιστη που επιτυγχανόταν αν είχαμε έναν επεξεργαστή στο ολοκληρωμένο κύκλωμα. Το πρόβλημα ήταν να μπορέσουν να αξιοποιηθούν όλες αυτές οι μονάδες ώστε να βελτιωθεί η επίδοση των συστημάτων. Η λύση δόθηκε από τον παραλληλισμό Επίπεδα Παραλληλισμού Ο παραλληλισμός ανέκαθεν ήταν ο παράγοντας που έδινε λύση στην εκμετάλλευση των τρανζίστορ του μικροεπεξεργαστή, που συνεχώς αυξάνονταν. Αρχικά, ο παραλληλισμός ήταν bit-level (σε επίπεδο bit). Μέχρι το 1986, η αξιοποίηση γινόταν με την αύξηση του μήκους λέξης, του μικρότερου bit unit που διαχειρίζεται ο επεξεργαστής. Με αυτόν τον τρόπο μειωνόταν ο αριθμός των εντολών για να εκτελεστεί μια πράξη, αυξάνοντας την απόδοση. Έτσι, από τους αρχικά 4-bit επεξεργαστές οδηγηθήκαμε στους 8-bit, έπειτα στους 16-bit, για να φτάσουμε στους 32-bit και τα τελευταία χρόνια να αποκτούν όλο και μεγαλύτερο χώρο στην αγορά οι 64-bit επεξεργαστές. Το επόμενο επίπεδο παραλληλίας είναι το instruction level parallelism (ILP). Μέχρι τα μέσα της δεκαετίας του '80 οι εντολές σε έναν μικροεπεξεργαστή εκτελούνταν σειριακά. Από τότε, όμως, και για περίπου μια δεκαετία, αναπτύχθηκαν τεχνικές έτσι ώστε οι εντολές να μπορούν να τρέχουν παράλληλα και με διαφορετική σειρά, χωρίς αυτό να αλλοιώνει το τελικό αποτέλεσμα. Με τη χρήση της τεχνικής του pipeline [4], ο επεξεργαστής διασπά κάθε εντολή σε στάδια, έτσι ώστε να μπορούν τελικά να εκτελούνται ταυτόχρονα τόσες εντολές όσο είναι το πλήθος των σταδίων του pipeline. Δεδομένου ότι κάθε στάδιο διαρκεί έναν κύκλο ρολογιού, αυτή η τεχνική οδήγησε στο να μπορεί να εκτελείται μια εντολή ανά κύκλο, ανεξάρτητα από το μέγεθός της, πόσους δηλαδή κύκλους ρολογιού θα χρειαζόταν αν εκτελούνταν σειριακά. Κατόπιν αυτή η τεχνική αξιοποιήθηκε ακόμη περισσότερο από υπερβαθμωτούς επεξεργαστές, οι οποίοι επιτρέπουν να υπάρχουν στο ίδιο στάδιο του pipeline παραπάνω από μια εντολές, χρησιμοποιώντας ταυτόχρονα μεθόδους για out-of-order εκτέλεση εντολών. Όταν άρχισε να εξαντλείται και αυτό το επίπεδο παραλληλίας στο βαθμό που βελτίωνε την υπολογιστική επίδοση, ήρθε στο φως η παραλληλία σε επίπεδο thread (multithreading parallelism), όπου thread (νήμα) είναι μια ακολουθία εντολών. Αναπτύχθηκαν τεχνικές με τις οποίες ο επεξεργαστής μπορούσε να τρέξει ακολουθίες εντολών παράλληλα, οι οποίες να εκτελούν υπολογισμούς είτε στα ίδια είτε σε διαφορετικά δεδομένα. Παρακάτω σε αυτήν την εργασία θα μας απασχολήσει ιδιαίτερα αυτό το επίπεδο παραλληλισμού, πάνω στο οποίο γίνεται μεγάλη έρευνα σήμερα από την επιστημονική κοινότητα. 13

14 Τέλος, στις μέρες μας, η παραλληλία έχει φτάσει σε επίπεδο πυρήνων. Δηλαδή, γίνονται έρευνες ώστε να αξιοποιηθούν με το βέλτιστο τρόπο πολλές επεξεργαστικές μονάδες οι οποίες βρίσκονται ενσωματωμένες στο ίδιο ολοκληρωμένο κύκλωμα. Το ενδιαφέρον -και χιουμοριστικό- ερώτημα που τίθεται σε αυτήν την περίπτωση είναι αν θα σέρνουν ένα κάρο (μια εφαρμογή) δύο άλογα (δυο επεξεργαστές υψηλής συχνότητας) ή χίλιες κότες (χαμηλότερης επίδοσης επεξεργαστές). 1.2 Αρχιτεκτονικές Συστημάτων Παράλληλου Προγραμματισμού Πριν παρουσιάσουμε τρόπους και μοντέλα παράλληλου προγραμματισμού, είναι ενδιαφέρον να κάνουμε μια σύντομη παρουσίαση στις αρχιτεκτονικές συστημάτων που υποστηρίζουν παράλληλο προγραμματισμό. Άλλωστε, για την καλύτερη επίδοση των εφαρμογών, οφείλουμε να γνωρίζουμε τα χαρακτηριστικά του συστήματος στο οποίο θα εκτελεστούν και με ποιον τρόπο μπορεί αυτό να αξιοποιηθεί στο μέγιστο βαθμό. Αρχικά γίνεται μια ταξινόμηση των συστημάτων κι έπειτα περιγράφονται συνοπτικά οι τρεις επικρατέστερες αρχιτεκτονικές. Ταξινόμηση Flynn Μια μεγάλη ταξινόμηση στις αρχιτεκτονικές συστημάτων παράλληλης επεξεργασίας παρουσιάστηκε από τον Michael J. Flynn το 1966 [5]. Η ταξονομία του Flynn, όπως έχει γίνει γνωστή, βασίζεται στο πλήθος των υποστηριζόμενων παράλληλων εντολών και ροών δεδομένων στην αρχιτεκτονική. Πιο αναλυτικά, υπάρχουν τέσσερις κατηγοριοποιήσεις: (1) SISD (Single Instruction Single Data) : πρόκειται για σειριακό επεξεργαστή, ο οποίος δεν έχει κανενός είδους παραλληλισμού ούτε ως προς τις εντολές ούτε ως προς τα δεδομένα. (2) SIMD (Single Instruction Multiple Data) : αρχιτεκτονική που επιτρέπει την ίδια εντολή να εκτελεστεί πάνω σε πολλά data sets ταυτόχρονα. Χρησιμοποιείται αρκετά σε GPUs. (3) MISD (Multiple Instruction Single Data) : αρχιτεκτονική όπου πολλές εντολές μπορούν παράλληλα να χρησιμοποιήσουν το ίδιο set δεδομένων. Χρησιμοποιείται πολύ σπάνια, κυρίως σε συστήματα ανοχής σφαλμάτων. (4) MIMD (Multiple Instruction Multiple Data) : πρόκειται για πολλούς επεξεργαστές που εκτελούν διαφορετικές εντολές στο δικό τους set δεδομένων παράλληλα. Αρχιτεκτονική που χρησιμοποιείται ως επί των πλείστων στα συστήματα 14

15 παράλληλης επεξεργασίας με εξαιρετικές αποδόσεις. Δεν είναι τυχαίο που από το 2007 και μετά οι καλύτεροι υπερυπολογιστές είναι σχεδιασμένοι με τέτοιων ειδών αρχιτεκτονικές. Το 1990, βασισμένος στην ταξονομία του Flynn, ο Ralph Duncan, πρότεινε μια επέκτασή της [6] ώστε να περιλαμβάνει pipelined vector processors, αλλά και κάποιες επιπλέον αρχιτεκτονικές που λειτουργούσαν παράλληλα, αλλά δεν κατηγοριοποιούνταν σύμφωνα με το Flynn. Έτσι, η νέα κατηγοριοποίηση του Duncan περιλαμβάνει τρεις μεγάλες κλάσεις (Σύγχρονες, MIMD και MIMD paradigm), οι οποίες υποδιαιρούνται σε μικρότερες. Όταν αναφερόμαστε σε συστήματα πολλών επεξεργαστών, ανάλογα με την τοπολογία επεξεργαστών-μνήμης, πώς συνδέονται οι επεξεργαστές με τη μνήμη (ή τις μνήμες) που βρίσκονται αποθηκευμένα τα δεδομένα, διακρίνουμε τριών ειδών αρχιτεκτονικές: κοινής μνήμης, κατανεμημένης μνήμης και υβριδικές. Αυτές αναλύουμε παρακάτω. Αρχιτεκτονική Κοινής Μνήμης (Shared Memory) Ένα σύστημα πολλών επεξεργαστών έχει αρχιτεκτονική κοινής μνήμης όταν όλοι οι επεξεργαστές μοιράζονται την ίδια φυσική μνήμη. Καθένας τους έχει δική του ιεραρχία τοπικών μνημών (cache memories) και συνδέονται σε ένα κοινό διάδρομο (bus), μέσω του οποίου επικοινωνούν με την κοινή μνήμη (Σχήμα 2). Πιο διαδεδομένα είναι τα συστήματα που επιτρέπουν συμμετρική πρόσβαση στην κοινή μνήμη για κάθε επεξεργαστή, οι οποίοι είναι πανομοιότυποι, γνωστά ως SMPs (Symmetric MultiProcessor). Τα SMPs κυριαρχούν στον τομέα των servers και σιγά σιγά γίνονται όλο και πιο διαδεδομένα στα desktops. Ανάλογα με το χρόνο προσπέλασης της μνήμης, τα συστήματα αυτά διακρίνονται σε UMA και NUMA. Στον UMA (Uniform Memory Access) σχεδιασμό, κάθε επεξεργαστής μπορεί να προσπελάσει οποιαδήποτε διεύθυνση μνήμης στον ίδιο χρόνο, σε αντίθεση με το NUMA (Non- Uniform Memory Access), όπου ο χρόνος προσπέλασης μιας θέσης μνήμης δεν είναι σταθερός, αλλά εξαρτάται από την απόστασή της από τον επεξεργαστή. Τα συστήματα κοινής μνήμης διευκολύνουν τον παράλληλο προγραμματισμό, λόγω της δυνατότητάς τους κάθε επεξεργαστής να γράφει και να διαβάζει από οποιαδήποτε θέση μνήμης. Έτσι, μπορούν να ενημερώνονται όλοι για κάθε αλλαγή στα δεδομένα αυτόματα μέσω της μνήμης. Αυτό φυσικά απαιτεί από τον προγραμματιστή να λαμβάνει υπόψιν του τον τυχόν συναγωνισμό των επεξεργαστών πάνω στα ίδια δεδομένα, θέτοντας κάποια προτεραιότητα στην πρόσβαση, ώστε να εξασφαλιστεί η ορθή λειτουργία. Επιπλέον, λόγω της αύξησης της χωρητικότητας των κρυφών μνημών και της μείωσης του μεγέθους των επεξεργαστών, αυτά τα συστήματα είναι εξαιρετικά αποδοτικά. Το αρνητικό τους στοιχείο είναι ότι δεν μπορούν να υποστηρίξουν αποδοτικά περισσότερους από 32 επεξεργαστές, 15

16 εξαιτίας του κοινού διαδρόμου σύνδεσης με την κοινή μνήμη. Αυτό συνεπάγεται ότι δεν μπορεί να κλιμακωθεί. Σχήμα 2: Αρχιτεκτονική Κοινής Μνήμης Αρχιτεκτονική Κατανεμημένης Μνήμης (Distributed Memory) Ένα διαφορετικό είδος σχεδιασμού είναι εκείνο της κατανεμημένης μνήμης. Το σύστημα αποτελείται από επεξεργαστές, καθένας από τους οποίους έχει τη δική του κρυφή μνήμη και ιδιωτική κύρια μνήμη. Οι κόμβοι επεξεργαστής-μνήμη συνδέονται μεταξύ τους μέσω ενός δικτύου διασύνδεσης (Σχήμα 3). Κάθε επεξεργαστής μπορεί να εκτελέσει υπολογισμούς μόνο με τα δεδομένα της μνήμης του και σε περίπτωση που χρειαστεί μη τοπικά δεδομένα, πρέπει να τα ζητήσει από τους άλλους επεξεργαστές μέσω αποστολής μηνυμάτων. Με αυτόν τον τρόπο, ναι μεν αποκλείονται περιπτώσεις συναγωνισμού των επεξεργαστών για την προτεραιότητα εγγραφής και διαβάσματος στα δεδομένα, όπως συνέβαινε στις αρχιτεκτονικές κοινής μνήμης, αλλά το πρόβλημα μετατίθεται στην κατανομή των δεδομένων στις ιδιωτικές μνήμες των επεξεργαστών και στην επικοινωνία τους μέσω του δικτύου διασύνδεσης. Αυτό 16

17 είναι που κάνει τον προγραμματισμό τέτοιων συστημάτων ιδιαίτερα απαιτητικό και δύσκολο. Τα κατανεμημένης μνήμης συστήματα έχουν το βασικό πλεονέκτημα ότι μπορούν να κλιμακωθούν ώστε στο δίκτυο να συνδέονται χιλιάδες υπολογιστές, σχηματίζοντας computer clusters. Κλειδί για την επίδοση αποτελεί η τοπολογία του δικτύου. Πιο συνηθισμένη τεχνολογία διασύνδεσης είναι το Gigabit Ethernet, αλλά υπάρχουν και πιο εξελιγμένες διασυνδέσεις, όπως το Myrinet [7] και το Infiniband [8]. Όσον αφορά υπερυπολογιστές, το δίκτυο διασύνδεσης κατασκευάζεται κατάλληλο για τις απαιτήσεις των εφαρμογών, τις οποίες σχεδιάζεται να εκτελέσει. Σχήμα 3: Αρχιτεκτονική Κατανεμημένης Μνήμης Υβριδικές Αρχιτεκτονικές (Hybrid Architectures) Οι σύγχρονοι υπολογιστές τελικά δε χρησιμοποιούν καμία από τις δύο αυτές αρχιτεκτονικές, αλλά ένα κράμα τους. Τα συστήματα που επικρατούν αποτελούνται από πολλά SMPs, τα οποία είναι διασυνδεδεμένα μέσω κάποιου δικτύου. Έτσι, κάθε κόμβος αποτελείται από ένα πολυεπεξεργαστικό σύστημα βασισμένο σε αρχιτεκτονική κοινής μνήμης και όλοι οι κόμβοι επικοινωνούν μεταξύ τους μέσω δικτύου διασύνδεσης βασισμένο σε αρχιτεκτονική κατανεμημένης μνήμης. 17

18 Επίσης, ως υβριδική προτείνεται και η αρχιτεκτονική κατανεμημένης-κοινής μνήμης, όπου οι ιδιωτικές μνήμες κάθε επεξεργαστή μπορούν να διευθυνσιοδοτηθούν ώστε να αντιλαμβάνονται από τους επεξεργαστές ως ένας ενιαίος χώρος διευθύνσεων. Αυτή η πρακτική είναι μια εξέλιξη των συστημάτων κατανεμημένης μνήμης και έχει το πλεονέκτημα ότι προσφέρει αυτόματα το μηχανισμό επικοινωνίας των επεξεργαστών, που σε άλλες περιπτώσεις καλείται να λύσει ο προγραμματιστής. 1.3 Μοντέλα και Εργαλεία Παράλληλου Προγραμματισμού Σε αντιστοιχία με τις αρχιτεκτονικές, υπάρχουν και δυο κύρια μοντέλα παράλληλου προγραμματισμού: του κοινού χώρου διευθύνσεων και της ανταλλαγής μηνυμάτων. Αυτά τα μοντέλα είναι βασισμένα και προσαρμόζονται πάνω στις αρχιτεκτονικές που περιγράψαμε προηγουμένως, αλλά δε σημαίνει ότι εφαρμόζονται κατ' ανάγκη σε αυτές. Απλά αποτελούν μέθοδοι ώστε ο προγραμματιστής να παραλληλοποιεί εφαρμογές και μπορούν -άλλοτε με περισσότερη και άλλοτε με λιγότερη δυσκολία- να προσαρμοστούν σε οποιαδήποτε αρχιτεκτονική. Το μοντέλο κοινού χώρου διευθύνσεων (shared memory model) αποτελεί ένα γενικό προγραμματιστικό μοντέλο, όπου θεωρεί ότι όλα τα δεδομένα είναι προσπελάσιμα από κάθε επεξεργαστή. Αντιστοιχεί στην αρχιτεκτονική κοινκής μνήμης. Αυτό το μοντέλο παρέχει ευκολία στον προγραμματιστή, καθώς κάθε αλλαγή σε δεδομένα γίνεται άμεσα ορατή από κάθε επεξεργαστή, αφού πραγματοποιείται στην κοινή μνήμη μέσω συναρτήσεων φόρτωσης και αποθήκευσης. Αυτό απαιτεί βέβαια να υπάρχουν μέθοδοι συγχρονισμού, με τη χρήση κλειδωμάτων, σημαφόρων ή άλλων μεθόδων. Στην πραγματικότητα, η διαδικασία του συγχρονισμού των επεξεργαστών ώστε να μην αλλοιωθεί το τελικό αποτέλεσμα από την παράλληλη εκτέλεση είναι το βασικό και δύσκολο πρόβλημα που αντιμετωπίζει ο προγραμματιστής σε αυτό το μοντέλο. Η αποδοτικότητα αυτού του μοντέλου είναι συνήθως πολύ υψηλή. Το μοντέλο ανταλλαγής μηνυμάτων (distributed memory model) είναι το αντίστοιχο της αρχιτεκτονικής κατανεμημένης μνήμης. Κάθε επεξεργαστής χειρίζεται ανεξάρτητα από τους άλλους το δικό του set δεδομένων και η μεταξύ τους επικοινωνία γίνεται μέσω μηνυμάτων που ανταλλάσσουν. Αυτό το μοντέλο παρέχει μια αρκετά απαιτητική δουλειά στον προγραμματιστή και η υλοποίησή του δεν είναι εύκολη υπόθεση. Τέλος, υπάρχει και το υβριδικό μοντέλο προγραμματισμού, που αποτελεί ένα κράμα των παραπάνω μοντέλων, κατ' αντιστοιχία με τις υβριδικές αρχιτεκτονικές. Πάνω σε αυτά τα μοντέλα είναι βασισμένα και τα εργαλεία που έχουν αναπτυχθεί για την παραλληλοποίηση προγραμμάτων. Παρακάτω γίνεται μια συνοπτική παρουσίαση στα σημαντικότερα από αυτά. 18

19 OpenMP Η πρώτη έκδοση OpenMP 1.0 [9] παρουσιάστηκε το 1997 για τη γλώσσα Fortan και ένα χρόνο αργότερα για τη C/C++ και από τότε συνεχώς ανανεώνεται. Αποτελείται από οδηγίες προς το μεταγλωττιστή, βιβλιοθήκη με ρουτίνες και μεταβλητές που επηρεάζουν τη συμπεριφορά του προγράμματος στο χρόνο εκτέλεσης. Είναι ένα εργαλείο που παρέχει ποικιλία στο προγραμματιστικό στυλ, προσφέροντας ταυτόχρονα απλότητα, που οφείλεται στο ότι ο κώδικας του σειριακού προγράμματος δεν χρειάζεται δομικές αλλαγές, αλλά την προσθήκη μερικών επιπλέον key words για την παραλληλοποίηση. Η ευκολία του έγκειται στο γεγονός ότι πολλά ζητήματα (επικοινωνία των thread, διαμοιρασμός δεδομένων) λύνονται αυτόματα μέσω του μεταγλωττιστή. Από την άλλη, η επίδοσή του εξαρτάται ιδιαίτερα από τις προδιαγραφές του συστήματος, καθώς η κλιμάκωσή του ρυθμίζεται από τη διαθέσιμη μνήμη της αρχιτεκτονικής, αλλά και από το είδος της (κοινής ή κατανεμημένης μνήμης). Ο τρόπος που παραλληλοποιεί εργασίες το OpenMP είναι πολυνηματικός, δημιουργώντας ένα master thread (κύριο νήμα), το οποίο με τη σειρά του φτιάχνει αντίγραφα του εαυτού του (νήματα δούλοι) στα οποία διαμοιράζεται μια εργασία προς εκτέλεση. Τα threads δρομολογούνται σε διαφορετικούς επεξεργαστές μέσω του runtime συστήματος (RTS), με αποτέλεσμα να τρέχουν ταυτόχρονα. Πλέον το OpenMP δίνει τη δυνατότητα ορισμού tasks στον προγραμματιστή, ανεξαρτήτων δηλαδή μονάδων εργασίας, των οποίων η δρομολόγηση είναι ευθύνη του προγραμματιστή. Υπάρχουν διάφορες προτεινόμενες τεχνικές για τη δρομολόγηση [10], αλλά εν γένει με αυτήν την τεχνική βελτιώνεται η επίδοση των συστημάτων, καθώς η δρομολόγηση είναι δυναμική και καθορίζεται από τον προγραμματιστή για τις ανάγκες της κάθε εφαρμογής. Η ύπαρξη αυτού του νέου χαρακτηριστικού του OpenMP είναι ιδιαίτερα σημαντική για εμάς, διότι δείχνει ότι το focus στρέφεται πλέον σε tasks που δρομολογούνται από τον ίδιο τον προγραμματιστή δυναμικά, ό,τι δηλαδή πραγματεύεται και η συγκεκριμένη εργασία. MPI Το MPI (Message Passing Interface) [11] είναι ένα πρότυπο ανταλλαγής μηνυμάτων συστημάτων κατανεμημένης μνήμης. Δεν είναι γλώσσα, ούτε έχει συγκεκριμένη υλοποίηση, αλλά οι λειτουργίες που παρέχει εκφράζονται ως συναρτήσεις, μέθοδοι ή ρουτίνες για την εκάστοτε γλώσσα στην οποία υλοποιείται. Είναι δομημένο σε στρώματα, με το υψηλότερο να είναι η αλληλεπίδραση με τον προγραμματιστή και το χαμηλότερο η επικοινωνία με το δίκτυο διασύνδεσης. Ο στόχος του σχεδιασμού του MPI είναι η υψηλή απόδοση, η δυνατότητα κλιμάκωσης σε δίκτυο πολλών επεξεργαστών και η φορητότητα. Γι' αυτό το λόγο έχει αναχθεί στο βασικό τρόπο προγραμματισμού υπερυπολογιστικών συστημάτων και επικοινωνίας διεργασιών σε πολυπύρηνα συστήματα ή clusters. 19

20 Η φιλοσοφία του σχεδιασμού είναι ο χωρισμός του προγράμματος σε διεργασίες, οι οποίες εκτελούν το ίδιο πρόγραμμα. Για βέλτιστη απόδοση κάθε διεργασία πρέπει να αντιστοιχίζεται σε ένα δικό της επεξεργαστή. Κάθε διεργασία αναλαμβάνει να εκτελέσει τις εντολές σε ένα υποσύνολο δεδομένων και έπειτα να επιστρέψει τα αποτελέσματά της. Ο προγραμματιστής είναι επιφορτισμένος με τον βέλτιστο διαμοιρασμό των δεδομένων και την επικοινωνία μεταξύ των διεργασιών μέσω μηνυμάτων, με στόχο την μεγιστοποίηση της παραλληλίας και την ελαχιστοποίηση των δεδομένων επικοινωνίας. Παρόλο που το MPI παρέχει χρήσιμες ρουτίνες, η δουλειά του προγραμματιστή είναι αρκετά δύσκολη και απαιτητική. Έχει, όμως, ως αποτέλεσμα τη βέλτιστη αξιοποίηση του συστήματος. CUDA Η CUDA (Compute Unified Device Architecture) [12] είναι μια πλατφόρμα παράλληλου προγραμματισμού που δημιουργήθηκε από την NVIDIA, η οποία βασίζεται σε GPUs (Graphics Processing Unit). Η βασική διαφορά μιας CPU και μιας GPU είναι ότι η δεύτερη έχει στόχο να εκτελεί μόνο αριθμητικές πράξεις, χωρίς να έχει την ποικιλία εντολών που παρέχει μια CPU. Γι' αυτό και στις GPUs ανατίθενται δύσκολα υπολογιστικά φορτία, αλλά δεν έχουν δυνατότητα να κάνουν επιλογές ή πιο πολύπλοκες διαδικασίες. Η CUDA χρησιμοποιείται ως επέκταση της C, εισάγοντας επιπλέον τύπους και προσδιοριστές και βασίζεται στη συνεργασία της CPU με τη GPU, καθώς η πρώτη αναθέτει υπολογιστικό φορτία στη δεύτερη, η οποία μπορεί να το εκτελέσει πολύ γρηγορότερα. Έτσι, ο προγραμματιστής επιλέγει ποια κομμάτια κώδικα θα σταλούν στη GPU προς εκτέλεση. Η ιδέα είναι η παραλληλοποίηση δεδομένων, δηλαδή, αντίστοιχα με το MPI, η εκτέλεση ίδιων εντολών πάνω σε διαφορετικά δεδομένα ταυτόχρονα. Για να γίνει αυτό δημιουργούνται χιλιάδες threads, τα οποία ομαδοποιούνται (wraps, blocks, grids) και δρομολογούνται από τους επεξεργαστές ροών που διαθέτει η GPU με μηδενικό κόστος. Επιπλέον, στην αύξηση της απόδοσης βοηθάει η δυνατότητα χρησιμοποίησης διαφορετικών επιπέδων μνήμης από τον προγραμματιστή (καθολική, μνήμη σταθερών, texture, μοιραζόμενη). Γενικά, η CUDA, είναι ένα εργαλείο ιδιαίτερα χρήσιμο, αρκετά απλό στην κατανόηση και στη χρησιμοποίησή του. Παρόλ' αυτά, για τη μεγιστοποίηση της απόδοσης χρειάζεται η αλγοριθμική επεξεργασία των προγραμμάτων για τη βέλτιστη εκμετάλλευση της μνήμης. PGAS Τα PGAS (Partitioned Global Address Space) [13] είναι γλώσσες παράλληλου προγραμματισμού. Στόχος είναι να εκμεταλλευτούν τα πλεονεκτήματα των δυο βασικών μοντέλων: της κοινής και της κατανεμημένης μνήμης. Συνδυάζουν, δηλαδή την προγραμματιστική ευκολία του κοινού χώρου διευθύνσεων και την υψηλή επίδοση με τη δυνατότητα κλιμάκωσης του μοντέλου ανταλλαγής μηνυμάτων. Χρησιμοποιούν τον κοινό χώρο διευθύνσεων, κατακερματίζοντάς και μοιράζοντάς τον στην κάθε διεργασία, ώστε να 20

21 είναι ιδιωτικός. Με αυτόν τον τρόπο αξιοποιείται η χωρική τοπικότητα των μεταβλητών χωρίς να αναιρείται η έννοια των κοινών μεταβλητών που είναι ορατές από κάθε διαδικασία. Για την αξιοποίηση της απόδοσής τους απαιτείται ισχυρό run-time σύστημα. Ως τώρα παρουσιάστηκαν συνοπτικά ορισμένα από τα πιο βασικά εργαλεία που χρησιμοποιούνται σήμερα και επιτρέπουν παράλληλο προγραμματισμό. Σκόπιμα δεν έγινε αναφορά σε δυο επίσης σπουδαία εργαλεία, τη γλώσσα Cilk και τα posix threads, τα οποία θα αναπτυχθούν εκτενώς σε αυτήν την εργασία, μιας και η μελέτη μας βασίστηκε πάνω στη φιλοσοφία τους. 1.4 Εισαγωγή στη γλώσσα Cilk Η Cilk [14] είναι μια γλώσσα παράλληλου πολυνηματικού προγραμματισμού βασισμένη στην ANSI C. Επεκτείνει τη C, χρησιμοποιώντας επιπλέον λέξεις κλειδιά. Η φιλοσοφία της είναι ότι ο προγραμματιστής ασχολείται με τη δόμηση της εφαρμογής για να εκμεταλλευτεί εργασίες που μπορούν να τρέξουν παράλληλα, αξιοποιώντας την τοπικότητα των δεδομένων, ενώ το runtime σύστημα, που υλοποιεί η ίδια η γλώσσα, αναλαμβάνει τη χρονοδρομολόγηση των εργασιών ώστε να αξιοποιηθεί αποδοτικά το εκάστοτε σύστημα. Επιπλέον, χαρακτηρίζεται ως αλγοριθμική γλώσσα, αφού το runtime σύστημά της εγγυάται σταθερή απόδοση. Όσον αφορά τη μνήμη, χρησιμοποιείται κυρίως σε συστήματα αρχιτεκτονικής κοινής μνήμης, όπως θα δούμε παρακάτω. Η Cilk αναπτύσσεται από το 1994 στο Εργαστήριο Επιστήμης Υπολογιστών στο MIT. Η αρχική υλοποίησή της βασίστηκε στο πακέτο PCM/Threaded-C, το οποίο δημιουργούσε threads και τα χρονοδρομολογούσε μέσω ενός scheduler. Αργότερα, προστέθηκαν όλα τα χαρακτηριστικά της C, καθώς και κοινή μνήμη στο σύστημα, με αποτέλεσμα η Cilk να μπορεί να χρησιμοποιηθεί σε ευρύτερο πεδίο εφαρμογών. Η μεγάλη τομή έγινε όταν στην έκδοση Cilk-4 άλλαξε εκ βάθρων ο μεταγλωττιστής και το runtime σύστημα, ώστε οι αποφάσεις για τη χρονοδρομολόγηση των εργασιών να λαμβάνονται απευθείας από το μεταγλωττιστή. Αυτή η τομή αύξησε κατακόρυφα την επίδοση της γλώσσας κάνοντας τη δημιουργία ενός παράλληλου thread να έχει κόστος μόλις τρεις φορές το κόστος που έχει η δημιουργία μιας τυπικής διαδικασίας στη C. Στόχος των τελευταίων εκδόσεων ήταν η Cilk να γίνει ένα εργαλείο που να χρησιμοποιείται ευρέως σε εφαρμογές και από προγραμματιστές που δεν ειδικεύονται αναγκαστικά στον τομέα του παράλληλου προγραμματισμού. Πλέον η τεχνολογία της Cilk έχει αγοραστεί από την Intel, η οποία προσθέτοντας κάποιες δομές παραλληλισμού δεδομένων, την έχει κάνει εμπορικά διαθέσιμη. 21

22 1.4.1 Statements της Cilk H Cilk έχει ως βασικό στόχο την απλότητα, γεγονός που υποδηλώνει και το όνομά της, που προέρχεται από τον παραλληλισμό με τη λέξη silk (μετάξι). Αντίθετα με τα περισσότερα εργαλεία που έχουμε ως τώρα αναφέρει, η Cilk αναλαμβάνει από μόνη της τον τρόπο που θα τρέξουν οι παράλληλες εργασίες, πώς θα επικοινωνούν μεταξύ τους, πώς θα χρονοδρομολογηθούν. Όλα αυτά τα αναλαμβάνει το runtime σύστημά της. Η δουλειά που καλείται να κάνει κάποιος που γράφει μια εφαρμογή σε Cilk είναι κατά βάση αλγοριθμική, δηλαδή να βρει ποια κομμάτια του κώδικα μπορούν να τρέξουν ανεξάρτητα μεταξύ τους παράλληλα. Η δομή της Cilk στηρίζεται στην απλότητα και την ευκολία. Αποτελείται από τη γλώσσα C με την προσθήκη μόλις τριών λέξεων-κλειδιά που υποδεικνύουν τον παραλληλισμό και το συγχρονισμό. Αυτές οι λέξεις-κλειδιά είναι: cilk, spawn και sync. Όταν ένα πρόγραμμα σε Cilk τρέχει σε έναν επεξεργαστή έχει την ίδια σημασιολογία με ένα το αντίστοιχο σε C. Αυτό προκύπτει με την αφαίρεση των επιπλέον λέξεων-κλειδιά της Cilk και το πρόγραμμα που προκύπτει ονομάζεται C elision. Μια συνάρτηση προσδιορίζεται ως διεργασία Cilk προσθέτοντας μπροστά της τη λέξη cilk. Έχει λίστα μεταβλητών και κυρίως σώμα, δηλαδή ακριβώς ίδια δομή με μια συνάρτηση C, Μια διεργασία Cilk μπορεί να δημιουργήσει ανεξάρτητες υποδιεργασίες, με τη δυνατότητα να τρέχουν παράλληλα και να συγχρονίζονται όταν επιστρέφουν. Η κυρίως εργασία γίνεται σειριακά. Η παραλληλοποίηση κρύβεται στη λέξη spawn, η οποία εισάγεται πριν από την κλήση μιας συνάρτησης. Όταν καλείται μια συνάρτηση δημιουργείται ένα παιδί και ο έλεγχος μεταφέρεται στην εκτέλεση του παιδιού, όπως και στη C. Η σημασιολογία του spawn διαφέρει από εκείνη της κλήσης μιας συνάρτησης σε C μόνο στο γεγονός ότι ο πατέρας έχει τη δυνατότητα να συνεχίσει να εκτελείται ταυτόχρονα με το παιδί που δημιούργησε, αντί να περιμένει να τερματίσει εκείνο. Με αυτόν τον τρόπο ο πατέρας μπορεί να δημιουργεί συνεχώς παιδιά, μοιράζοντας την εργασία, δημιουργώντας υψηλό βαθμό παραλληλίας. Για να εξασφαλιστεί η ορθή εκτέλεση του προγράμματος, μια διεργασία Cilk δεν μπορεί να χρησιμοποιήσει με ασφάλεια τις τιμές που επιστρέφουν τα παιδιά, μέχρι να εκτελεστεί η εντολή sync. Η λέξη sync τοποθετεί ένα φράγμα στον πατέρα, ο οποίος παγώνει μέχρι να τερματίσουν όλα τα παιδιά της. Το φράγμα αυτό είναι τοπικό με την έννοια ότι ο πατέρας περιμένει μόνο τα παιδιά του να ολοκληρώσουν την εκτέλεσή τους κι όχι όλες τις διεργασίες που εκτελούνται παράλληλα. Όταν επιστρέψουν όλα τα παιδιά, ο πατέρας μπορεί να συνεχίσει την εκτέλεσή του από εκείνο το σημείο. Ο λόγος που υπάρχει ο συγχρονισμός είναι γιατί κάποιες μεταβλητές δεν μπορούν αν χρησιμοποιηθούν αν δεν έχουν πρώτα υπολογιστεί, διασφαλίζοντας ότι η παραλληλοποιήση δεν θα επηρεάσει την ορθή λειτουργία του προγράμματος. Αυτά είναι τα τρία βασικά και απλά συστατικά τα οποία παρέχει η Cilk για παραλληλία. Είναι εμφανές ότι αυτή η απλότητα οδηγεί σε ευκολία προγραμματισμού, 22

23 αφού ο χρήστης δεν ασχολείται με τίποτα άλλο, παρά με τον τρόπο που θα κατακερματίσει το πρόγραμμα σε ανεξάρτητα κομμάτια που μπορούν εκτελεστούν ταυτόχρονα. Πέραν αυτών, η Cilk παρέχει και κάποια πιο εξελιγμένα χαρακτηριστικά, που βοηθούν σε ορισμένες περιπτώσεις στην αύξηση της επίδοσης. Είναι οι λέξεις-κλειδιά: inlet και abort. Tο inlet είναι ένας τρόπος επιστροφής του αποτελέσματος του παιδιού στον πατέρα με έναν πιο περίπλοκο τρόπο απ' ότι με την αποθήκευση της τιμής σε μια μεταβλητή του πατέρα. Πρόκειται για μια συνάρτηση C φωλιασμένη μέσα σε μια διεργασία Cilk. Ενώ το spawn είναι ξεχωριστή εντολή, το inlet επιτρέπει τη δημιουργία συνάρτησης που παίρνει ως όρισμα ένα spawn. Το παιδί δημιουργείται και εκτελείται κανονικά και όταν επιστρέφει καλείται η συνάρτηση που έχει οριστεί στο inlet. Η συνάρτηση χειρίζεται το αποτέλεσμα όπως επιθυμεί, χωρίς όμως να μπορεί να χρησιμοποιήσει spawn ή sync, μιας και δεν είναι διεργασία Cilk. Είναι συνάρτηση της C και εκτελείται ως ξεχωριστό thread. Επειδή υπάρχει περίπτωση οι ίδιες μεταβλητές μιας διεργασίας να χρησιμοποιούνται ταυτόχρονα από ένα inlet (ή περισσότερα) και από τη διεργασία την ίδια, οι σχεδιαστές της Cilk έχουν μεριμνήσει και εγγυώνται ότι στην εκτέλεση όλα τα threads μιας διεργασίας εκτελούνται ατομικά με σεβασμό το ένα στο άλλο. Αυτό βέβαια δε σημαίνει το ίδιο και για threads διαφορετικών διεργασιών. Ορισμένες φορές, μια διεργασία δημιουργεί παιδιά, των οποίων η εργασία τελικά δε χρειάζεται. Η Cilk επιτρέπει στον χρήστη να διακόψει την εργασία τους με τη χρήση του abort. Αυτό ισχύει μόνο για τα υπάρχοντα παιδιά κι όχι γι' αυτά που δεν έχουν δημιουργηθεί ακόμα. Αυτή η τεχνική είναι ιδιαίτερα χρήσιμη σε αλγορίθμους αναζήτησης που ψάχνουν ένα χώρο λύσεων παράλληλα. Μόλις βρουν την επιθυμητή λύση μπορούν να ακυρώσουν όλη την υπόλοιπη εργασία που έχει ανατεθεί σε άλλα threads. Μια συνηθισμένη τακτική είναι το abort να χρησιμοποιείται μέσα στον κώδικα του inlet, που χειρίζεται το αποτέλεσμα της επιστροφής του παιδιού. Μόλις εκτελεστεί το abort, όλα τα παιδιά του πατέρα τερματίζονται, όχι όμως αυτόματα. Η Cilk δεν εγγυάται για τις τιμές που θα επιστραφούν και ο χρήστης είναι υπεύθυνος να τις διαχειριστεί όπως επιθυμεί. Μια κλασική εφαρμογή της χρήσης της Cilk είναι ο αναδρομικός αλγόριθμος υπολογισμός αριθμών fibonacci. Η συνάρτηση είναι η ακόλουθη: cilk int fib (int n) { if(n<2) return n; else { int x,y; x = spawn fib(n-1); y = spawn fib(n-2); sync; return x+y; } } 23

24 Παρατηρούμε ότι η συνάρτηση είναι διεργασία cilk, αφού δηλώνεται ως τέτοια. Όταν την καλούμε αναδρομικά, χρησιμοποιούμε το spawn ώστε η διεργασία cilk που δημιουργείται να μπορεί να εκτελεστεί παράλληλα με την αρχική, αλλά και με όλες τις υπόλοιπες. Τέλος, για να εξασφαλίσουμε την ορθότητα του προγράμματος φροντίζουμε μέσω του sync η διεργασία να επιστρέψει μόνο αφού έχουν τερματίσει και τα δυο της παιδιά Διαχείριση μνήμης στη Cilk Η Cilk, όπως και η γλώσσα C, της οποίας είναι επέκταση παρέχει δυο ειδών μνήμες: μνήμη στοίβας (stack) και σωρού (heap) [15]. Στη στοίβα αποθηκεύονται όλες οι τοπικές μεταβλητές και χρησιμοποιείται για να περάσουν τα ορίσματα στις συναρτήσεις μαζί με τη διεύθυνση της εντολής στην οποία θα επιστρέψει ο έλεγχος μετά την ολοκλήρωση κάθε συνάρτησης. Η στοίβα μεγαλώνει προς τα κάτω όταν είναι να προστεθεί ένα καινούργιο πλαίσιο, λόγω κλήσης μιας νέας συνάρτησης. Ο σωρός είναι η μνήμη που δεσμεύεται δυναμικά κατά τη διάρκεια του προγράμματος από το runtime σύστημα. Μνήμη στο σωρό δεσμεύεται προς τα πάνω με χρήση συναρτήσεων malloc() και calloc() και αποδεσμεύεται χρησιμοποιώντας τη free(). Η υλοποίηση του σωρού της Cilk είναι ακριβώς ίδια με εκείνη στη C. Όσον αφορά, όμως, τη στοίβα υπάρχουν ορισμένες διαφοροποιήσεις. Αυτό γίνεται γιατί η διατήρηση μιας γραμμικής στοίβας όπως στη C, είναι όχι μόνο μη αποδοτική, αλλά πολλές φορές και προβληματική [16]. Η Cilk χρησιμοποιεί μια στοίβα-κάκτο (cactus stack) [14], η δομή της οποίας φαίνεται στο Σχήμα 4. Αυτή η δενδρικής δομής στοίβα, που αναφέρεται και ως spaghetti stack, αρχικά χρησιμοποιήθηκε σε περιβάλλοντα σειριακής εκτέλεσης, που υποστήριζαν μηχανισμούς ελέγχου μη συμβατούς με μια γραμμική στοίβα. Σχήμα 4: Στοίβα-Κάκτος της Cilk Από την οπτική γωνία μιας διεργασίας Cilk, η στοίβα-κάκτος συμπεριφέρεται όπως μια συνηθισμένη στοίβα. Η δέσμευση και ελευθέρωση μνήμης γίνεται με διαδικασίες push και pop από τη στοίβα και κάθε διεργασία αντιμετωπίζει το πλαίσιο της ως συνέχεια του 24

25 πατέρα της. Ως εδώ η δομή είναι η ίδια. Αλλάζει όταν πολλές διεργασίες εκτελούνται παράλληλα, οπότε καθεμία βλέπει τη στοίβα που αντιστοιχεί στην ιστορία της. Με αυτόν τον τρόπο προκύπτει η στοίβα-κάκτος. Επιπλέον, αν κατατάσσαμε τη Cilk σε μοντέλα προγραμματισμού, θα λέγαμε ότι είναι κοινής μνήμης. Η Cilk επιτρέπει πολλές διεργασίες που τρέχουν παράλληλα να έχουν πρόσβαση σε καθολικές μεταβλητές, αλλά και το πέρασμα δεικτών ως ορίσματα σε συναρτήσεις. Μπορεί, παρόλα αυτά, η ενημέρωση των κοινών θέσεων μνήμης να οδηγήσει σε μη ντετερμινιστικές ανωμαλίες. Πολλές φορές αυτά τα προβλήματα προκύπτουν ως προγραμματιστικά λάθη, τα οποία αποφεύγονται με το να μην επιτρέπεται σε ένα thread να τροποποιήσει μια μεταβλητή την οποία μπορεί να διαβάσει ή να γράψει ένα άλλο thread που εκτελείται παράλληλα. Αν αυτός ο κανόνας τηρηθεί, το runtime σύστημα της Cilk εγγυάται ότι ανεξάρτητα από τη χρονοδρομολόγηση των threads, το πρόγραμμα θα εκτελεστεί ντετερμινιστικά. Ο μη ντετερμινισμός μπορεί να χρησιμοποιηθεί σε ορισμένες εφαρμογές για την επίτευξη μεγαλύτερου βαθμού παραλληλισμού, αλλά σε τέτοιες περιπτώσεις πρέπει να ληφθεί υπόψη το μοντέλο συνέπειας της μνήμης της μηχανής στην οποία εκτελείται η εφαρμογή. Αυτή ήταν μια γενική εισαγωγή για τη Cilk, η οποία θα μας απασχολήσει αρκετά σε αυτήν την εργασία, λόγω του τρόπου λειτουργίας του χρονοδρομολογητή της και του ισχυρού θεωρητικού μοντέλου πάνω στο οποίο είναι βασισμένη η λειτουργία του. 25

26 26

27 ΚΕΦΑΛΑΙΟ 2: MULTITHREADING- ΠΟΛΥΝΗΜΑΤΙΣΜΟΣ 2.1 Διεργασίες Μια διεργασία είναι ένα στιγμιότυπο ενός προγράμματος που εκτελείται. Ενώ το πρόγραμμα είναι απλώς μια ακολουθία εντολών, η διεργασία είναι η πραγματική εκτέλεση αυτών των εντολών. Ένα πρόγραμμα μπορεί να απαρτίζεται από πολλές διεργασίες, η καθεμία από τις οποίες έχει δική της ξεχωριστή κατάσταση και ξεχωριστή ταυτότητα. Κάθε διεργασία απαρτίζεται από τον εκτελέσιμο κώδικα του προγράμματος, από ιδιωτικό, απομονωμένο χώρο μνήμης (κάτι που επιτυγχάνεται με εικονική μνήμη), από πόρους του συστήματος, όπως ανοιχτά αρχεία και διαδικτυακές συνδέσεις και από την κατάσταση του επεξεργαστή, όπως τις τιμές των καταχωρητών ή του μετρητή προγράμματος. Σημαντικό στοιχείο των διεργασιών είναι η ανεξαρτησία τους. Καθεμία εκτελείται απομονωμένη από τις άλλες, με το λειτουργικό σύστημα να φροντίζει να έχουν τη ψευδαίσθηση ότι είναι οι μόνες που εκτελούνται στη μηχανή, ακόμη κι όταν εκτελούνται ταυτόχρονα με άλλες. Η ταυτόχρονη εκτέλεσή τους, δε σημαίνει ότι αναγκαστικά εκτελούνται παράλληλα, αλλά ότι το λειτουργικό σύστημα φροντίζει να κατανέμει σε αυτές υπολογιστικό χρόνο. Έτσι, οι διεργασίες εναλλάσσονται συνεχώς σε έναν επεξεργαστή, εκτελώντας κάθε φορά ένα μέρος των εντολών τους, μέχρι να ολοκληρωθούν. Επειδή αυτή η εναλλαγή είναι πολύ γρήγορη για τον άνθρωπο, δημιουργείται η ψευδαίσθηση ότι οι διεργασίες εκτελούνται ταυτόχρονα. Ο τρόπος που καταμερίζεται ο χρόνος σε κάθε διεργασία καθορίζεται από τον αλγόριθμο χρονοδρομολόγησης, που υλοποιείται από το χρονοδρομολογητή. Δεδομένου ότι οι επεξεργαστές λειτουργούν σε πολύ υψηλές συχνότητες και είναι πολύ πιο γρήγοροι από τις μνήμες, βασικός στόχος είναι να εκμεταλλευτούμε την ταχύτητά τους. Αυτό γίνεται με τη χρονοδρομολόγηση των διεργασιών, ώστε κατά τη διάρκεια που μια διεργασία περιμένει κάποια δεδομένα από τη μνήμη ή να επικοινωνήσει με μια συσκευή εισόδου-εξόδου, ο επεξεργαστής μπορεί να εκτελέσει μια άλλη. Ο χρονοδρομολογητής είναι ένα πρόγραμμα (ή και μια συνάρτηση), που επιλέγει ποια διεργασία θα εκτελείται στον επεξεργαστή και αναλαμβάνει το context switch μεταξύ των διεργασιών. Context switch είναι η διαδικασία αποθήκευσης και επανάκλησης μιας κατάστασης της CPU, ώστε η εκτέλεση να συνεχιστεί από εκεί που είχε σταματήσει παλαιότερα. Παρακάτω εξετάζουμε τον τρόπο λειτουργίας ενός χρονοδρομολογητή. 27

28 2.2 Αλγόριθμοι χρονοδρομολόγησης διεργασιών σε έναν επεξεργαστή Στόχος του χρονοδρομολογητή είναι η αξιοποίηση της κεντρικής μονάδας επεξεργασίας στο μεγαλύτερο δυνατό βαθμό [17]. Πολλές φορές προκύπτουν καθυστερήσεις σε εκτέλεση εντολών όταν η διεργασία αναμένει κάποιους πόρους ή θέλει να επικοινωνήσει με μια μονάδα εισόδου-εξόδου, που αποκρίνονται πολύ αργά σε σχέση με την ταχύτητα του επεξεργαστή. Αυτός ο χαμένος χρόνος καλύπτεται από το χρονοδρομολογητή με την αλλαγή της υπό εκτέλεσης διεργασίας. Κάθε διεργασία διακρίνεται ανάλογα με την κατάσταση της (νέα, έτοιμη, υπό εκτέλεση, σε αναμονή, τερματισμένη). Ο υπολογιστικός χρόνος κατανέμεται σε αυτές που είναι έτοιμες προς εκτέλεση, οι οποίες μπαίνουν στην ουρά του χρονοδρομολογητή. Στο παρακάτω σχήμα φαίνεται πώς ο χρονοδρομολογητής χειρίζεται τις διεργασίες. Σχήμα 5: Κύκλος ζωής διεργασίας Ο τρόπος με τον οποίο επιλέγονται οι διεργασίες που θα εκτελεστούν καθορίζεται από τον αλγόριθμο χρονοδρομολόγησης. Στόχοι του αλγορίθμου είναι η καλύτερη απόδοση του υπολογιστικού συστήματος και η μέγιστη ταχύτητα επιλογής από τον ίδιο τον αλγόριθμο. Ας μην ξεχνάμε ότι και ο χρονοδρομολογητής είναι ένα πρόγραμμα το οποίο απασχολεί τον 28

29 επεξεργαστή και επιθυμούμε αυτός ο χρόνος απασχόλησης να είναι όσο δυνατόν πιο μικρός. Ένας αλγόριθμος επιλέγεται με βάση κάποια κριτήρια. Αυτά είναι: 1. Ο βαθμός χρησιμοποίησής της CPU. Είναι ο λόγος του χρόνου που απασχολείται η CPU προς το συνολικό χρόνο που λειτουργεί. 2. Η ρυθμαπόδοση, το πλήθος δηλαδή των διεργασιών που ολοκληρώνονται στη μονάδα του χρόνου. 3. Ο χρόνος ανακύκλωσης. Είναι ο χρόνος για την ολοκλήρωση μιας διεργασίας από τη στιγμή που μεταβαίνει στην κατάσταση έτοιμη μέχρι να μεταβεί στην κατάσταση τερματισμένη. 4. Ο χρόνος αναμονής. Είναι ο συνολικός χρόνος που η διεργασία βρίσκεται στην ουρά του χρονοδρομολογητή αναμένοντας την εκτέλεσή της. 5. Ο χρόνος απόκρισης. Είναι ο χρόνος από τη στιγμή που μια διεργασία μεταβαίνει στην κατάσταση έτοιμη μέχρι την πρώτη φορά που θα επιλεχθεί από το χρονοδρομολογητή προς εκτέλεση. Ιδανικό σενάριο είναι να μεγιστοποιείται ο ρυθμός χρησιμοποίησης της CPU και η ρυθμαπόδοση και να ελαχιστοποιούνται οι χρόνοι ανακύκλωσης, αναμονής και απόκρισης, αλλά στην πράξη απαιτούνται συμβιβασμοί. Οι συμβιβασμοί αυτοί γίνονται κυρίως με κριτήριο το είδος της εφαρμογής και τι απαιτήσεις έχει. Για παράδειγμα, μια εφαρμογή live streaming είναι απαραίτητο να έχει μικρό χρόνο απόκρισης, ενώ σε ένα server βασικός στόχος είναι η υψηλή ρυθμαπόδοση. Οι αλγόριθμοι χρονοδρομολόγησης διακρίνονται σε δυο μεγάλες κατηγορίες: στους συνεργατικούς (cooperative) και στους διακοπτούς (preemptive). Οι συνεργατικοί αλγόριθμοι αφήνουν τη διεργασία να εκτελείται μέχρι να ολοκληρωθεί ή μέχρι να βρεθεί σε κατάσταση αναμονής, ενώ οι διακοπτοί δίνουν ένα κομμάτι χρόνου στις διεργασίες μέχρι να τις διακόψουν ανεξάρτητα από το στάδιο εκτέλεσης που βρίσκονται. Ας εξετάσουμε τους πιο διαδεδομένους αλγορίθμους. FCFS (First Come First Served) Πρόκειται για ένα συνεργατικό αλγόριθμο, ο οποίος εξυπηρετεί τις διεργασίες με σειρά άφιξης. Η υλοποίησή του είναι πολύ απλή, αφού η λίστα έτοιμων διεργασιών λειτουργεί ως μια σειρά αναμονής. Κάθε διεργασία που δημιουργείται ή που ήταν σε αναμονή και το αίτημά της ικανοποιήθηκε μεταβαίνει στο τέλος της ουράς και περιμένει τη σειρά της μέχρι να εκτελεστεί. Αυτός ο αλγόριθμος έχει το πλεονέκτημα της απλότητας, οπότε καταναλώνει ελάχιστο χρόνο στην εκτέλεσή του. Από την άλλη, η επίδοσή του δεν είναι υψηλή, καθώς οι χρόνοι απόκρισης και ανακύκλωσης είναι αρκετά μεγάλοι στην 29

30 περίπτωση που υπάρχουν πολλές διεργασίες που θέλουν να εξυπηρετηθούν. Δημιουργείται ακόμη το φαινόμενο της φάλαγγας, όταν μικρές σε διάρκεια διεργασίες περιμένουν να εξυπηρετηθούν πίσω από μεγάλες διεργασίες. Γενικά, η απόδοσή του δεν είναι σταθερή αλλά εξαρτάται από τη σειρά άφιξης των διεργασιών. SJF (Shortest Job First) Ο αλγόριθμος εξυπηρετεί τις διεργασίες δίνοντας προτεραιότητα σε αυτές με τη μικρότερη διάρκεια. Κάθε διεργασία εισάγεται στην ουρά στο κατάλληλο σημείο ανάλογα με τη διάρκειά της. Με αυτόν τον τρόπο, ελαχιστοποιείται ο χρόνος αναμονής των διεργασιών. Μάλιστα, κανείς άλλος αλγόριθμος δεν μπορεί να επιτύχει καλύτερο χρόνο αναμονής. Το πρόβλημα του αλγορίθμου είναι ο τρόπος υλοποίησής του, καθώς η χρονική διάρκεια μιας διεργασίας δεν είναι γνωστή εκ των προτερών. Μπορεί μόνο να γίνει κάποια εκτίμηση με βάση στατιστικά στοιχεία από προηγούμενες διεργασίες, κάτι το οποίο, όμως, έχει υπολογιστικό κόστος για τον αλγόριθμο. Βασικό πρόβλημα του αλγορίθμου είναι η λιμοκτονία: το φαινόμενο μια μεγάλη σε διάρκεια διεργασία να αναμένει πολύ χρόνο μέχρι να εκτελεστεί διότι προηγούνται συνεχώς διεργασίες μικρότερης διάρκειας. Ο συγκεκριμένος αλγόριθμος έχει δυο υλοποιήσεις: ως συνεργατικός και ως διακοπτός. Η διαφορά τους είναι ότι ο διακοπτός θα διακόψει τη διεργασία που εκτελείται όταν έρθει κάποια άλλη που έχει μικρότερο χρόνο εκτέλεσης και θα την τοποθετήσει πίσω στην ουρά των έτοιμων διεργασιών, ενώ ο συνεργατικός θα τοποθετήσει τη διεργασία στην κορυφή της ουράς αναμονής και θα περιμένει την ολοκλήρωση της ήδη υπό εκτέλεσης διεργασίας. HRF (Highest Response Ratio First ) Οι διεργασίες δρομολογούνται εδώ με βάση το χρόνο απόκρισής τους. Η προτεραιότητα καθορίζεται από το λόγο απόκρισης που είναι ο λόγος του χρόνου απόκρισης προς τη διάρκεια εκτέλεσης της διεργασίας. Δηλαδή: Χρόνος Απόκρισης Χρόνος Εκτέλεσης + Χρόνος Αναμονής Λόγος Απόκρισης = = Xρόνος Εκτέλεσης Χρόνος Εκτέλεσης Χρόνος Αναμονής = 1+ Χρόνος Εκτέλεσης Ο τύπος δείχνει ότι η προτεραιότητα των εντολών αυξάνεται όσο αυτές βρίσκονται στην ουρά. Αυτή η μέθοδος είναι γνωστή ως μέθοδος γήρανσης, αφού η προτεραιότητα μιας διεργασίας αυξάνει όσο περισσότερο βρίσκεται στην ουρά αναμονής. Είναι ο τρόπος με τον οποίο λύνεται το πρόβλημα λιμοκτονίας που αντιμετωπίζουν διεργασίες σε αλγορίθμους 30

31 στατικής προτεραιότητας, όπως ήταν ο SJF, όπου οι μεγάλες διεργασίες μπορεί να είχαν υψηλούς χρόνους αναμονής. Και αυτός ο αλγόριθμος καταναλώνει κάποιο υπολογιστικό χρόνο, αλλά σαφώς μικρότερο σε σχέση με τον προηγούμενο. Και οι τρεις αλγόριθμοι που έχουμε περιγράψει ως τώρα ανήκουν στην ευρύτερη κατηγορία των αλγορίθμων προτεραιότητας, όπου σε κάθε διεργασία αντιστοιχίζεται μια τιμή, που δηλώνει την προτεραιότητα με την οποία θα εκτελεστεί στον επεξεργαστή. Οι δυο πρώτοι προσφέρουν στατική προτεραιότητα, ενώ ο τελευταίος δυναμική προτεραιότητα. Υπάρχουν και άλλοι αλγόριθμοι τέτοιου τύπου, όπως επίσης και αλγόριθμοι όπου ο χρήστης μπορεί να επιλέξει την προτεραιότητα που θα έχει κάθε διεργασία, ανάλογα με τις ανάγκες του. Round Robin Scheduling Είναι ένας αλγόριθμος διακοπτός, ο οποίος δίνει σε κάθε διεργασία ένα κβάντο υπολογιστικού χρόνου. Όταν εκπνεύσει ο χρόνος που της έδωσε την επαναφέρει στο τέλος της ουράς ανεξάρτητα από το σημείο εκτέλεσης στο οποίο βρίσκεται. Η ουρά που διαθέτει είναι τύπου FIFO (First In First Out), οπότε η αρχαιότερη διεργασία που βρίσκεται στη σειρά είναι η επόμενη προς εκτέλεση. Βασική παράμετρος για την απόδοση αυτού του αλγορίθμου είναι ο χρόνος που δίνεται σε κάθε διεργασία για να εκτελεστεί. Αν αυτός ο χρόνος είναι πολύ μεγάλος, ο αλγόριθμος εκφυλίζεται στον FCFS, ενώ αν είναι πολύ μικρός, ο επεξεργαστής χρησιμοποιείται πολύ συχνά από τον ίδιο το χρονοδρομολογητή και πολύς υπολογιστικός χρόνος καταναλώνεται στα context switches. Συνήθως το κβάντο χρόνου είναι 10ms, χωρίς όμως αυτό να είναι παγιωμένο. Επειδή έχει σχέση και με το σύστημα στο οποίο εκτελείται ένας κανόνας υπολογισμού του που ακολουθείται είναι να είναι μεγαλύτερο σε διάρκεια από το 80% των χρόνων εκτέλεσης των διεργασιών. Βασικό πλεονέκτημα του αλγορίθμου είναι ότι επιτρέπει στις μικρές διεργασίες να ολοκληρώνονται σχετικά γρήγορα, διατηρώντας παράλληλα καλό χρόνο απόκρισης για όλες τις διεργασίες. Multi Queue Scheduling Αποτελεί συνδυασμό των παραπάνω αλγορίθμων. Η ουρά με τις έτοιμες διεργασίες του χρονοδρομολογητή χωρίζεται σε πολλαπλές ουρές και καθεμία έχει το δικό της αλγόριθμο χρονοδρομολόγησης. Έτσι, οι διεργασίες χωρίζονται σε κλάσεις ανάλογα με τις ιδιότητες και τις ανάγκες τους, ώστε να χρονοδρομολογηθούν με τον αλγόριθμο που ταιριάζει καλύτερα σε αυτές. Έπειτα, οι ουρές χρονοδρομολογούνται με τη σειρά τους, ώστε κάθε φορά να διαλέγεται μια διεργασία προς εκτέλεση. Μια τροποποίηση σε αυτόν τον υβριδικό τρόπο χρονοδρομολόγησης είναι οι ουρές που επιτρέπουν ανατροφοδότηση. Αυτή η υλοποίηση επιτρέπει τη μετακίνηση διεργασιών ανάμεσα στις ουρές. Κριτήριο απόδοσης 31

32 είναι το πλήθος των ουρών, ο αλγόριθμος χρονοδρομολόγησης που καθεμία υλοποιεί και ο τρόπος που επιλέγεται η ουρά που θα καταλήξει μια νέα διεργασία. 2.3 Multithreading Μολονότι οι διεργασίες προσφέρουν καθαρότητα και απλότητα στην εκτέλεση με την ανεξαρτησία τους, είναι αρκετά μεγάλες και δύσχρηστες. Αυτό έχει ως συνέπεια η εναλλαγή τους μέσω του χρονοδρομολογητή να απαιτεί αρκετό χρόνο. Επιπλέον, η μεταξύ τους επικοινωνία είναι αρκετά περίπλοκη και αργή. Χρειάστηκε, λοιπόν, η υλοποίηση μικρότερων μονάδων που να μπορούν να επικοινωνούν μεταξύ τους με χαμηλότερο κόστος και εν γένει να χειρίζονται πιο εύκολα. Έτσι προέκυψαν τα threads (νήματα). Τα threads είναι χωριστές ροές εκτέλεσης μέσα στην ίδια διεργασία. Είναι η μικρότερη ακολουθία εντολών που μπορεί να διαχειριστεί και να δρομολογήσει ένα λειτουργικό σύστημα. Threads που βρίσκονται μέσα στην ίδια διεργασία μοιράζονται τους πόρους του λειτουργικού συστήματος, έχουν κοινή μνήμη, αρχεία και δικαιώματα, με αποτέλεσμα να έχουν άμεση πρόσβαση σε κοινά δεδομένα, αλλά μπορούν να εκτελούνται ανεξάρτητα το ένα από το άλλο. Τα threads έχουν πολλά πλεονεκτήματα σε σχέση με τις διεργασίες. Έχουν πολύ μικρότερο κόστος δημιουργίας και καταστροφής. Για να δημιουργηθεί μια διεργασία πρέπει να δεσμευτεί νέος χώρος στη μνήμη για τον κώδικα των εντολών που θα εκτελέσει και για τις μεταβλητές που θα χρησιμοποιήσει και αυτή η διαδικασία είναι αρκετά δαπανηρή. Αντίθετα, ένα thread χρησιμοποιεί τους ήδη υπάρχοντες πόρους που του παρέχει η διεργασία. Επιπλέον, η επικοινωνία μεταξύ των thread είναι αρκετά εύκολη, μιας και μοιράζονται την ίδια μνήμη. Για να επικοινωνήσουν διεργασίες μεταξύ τους επιβάλλεται η ανταλλαγή μηνυμάτων, αφού εξ ορισμού είναι ανεξάρτητες και απομονωμένες, κάτι που δεν είναι ιδιαίτερα εύκολο. Η ιδέα του multithreading είναι η εκτέλεση πολλών threads σε έναν ή περισσότερους επεξεργαστές. Αυτό το είδους παραλληλισμού είναι το Thread Level Parallelism (TLP) στο οποίο αναφερθήκαμε στην εισαγωγή και αφορά την παράλληλη εκτέλεση threads σε επεξεργαστές. Όταν πρόκειται για έναν επεξεργαστή, η δρομολόγηση είναι χρονική και ακολουθεί κάποιον αλγόριθμο από αυτούς που περιγράψαμε για τις διεργασίες. Η αύξηση της επίδοσης σε σχέση με τις διεργασίες οφείλεται στο context switch, το οποίο είναι πολύ πιο γρήγορο για νήματα που ανήκουν στην ίδια διεργασία, αφού μοιράζονται όλα την ίδια μνήμη. Η διαδικασία στο context switch για τα thread είναι η αλλαγή της κατάστασης της στοίβας, των καταχωρητών και των δεδομένων που προσδιορίζει κάθε thread ξεχωριστά, σε αντίθεση με το context switch των διεργασιών που απαιτείται η αλλαγή των δεδομένων στην εικονική μνήμη. Όταν πρόκειται για πολλούς επεξεργαστές, η δρομολόγηση πέρα από χρονική είναι και χωρική, καθώς τα threads κατανέμονται βάσει κάποιου αλγορίθμου στους διαθέσιμους επεξεργαστές. Αρχικά θα μελετήσουμε την τεχνική του multithreading σε έναν επεξεργαστή και πώς αυτό επιτυγχάνεται μέσω του hardare. Υπάρχουν δυο βασικές προσεγγίσεις για 32

33 multithreading: fine-grained και coarse-grained multithreading [18]. Η πρώτη προσέγγιση αφορά την αλλαγή threads που εκτελούνται στον επεξεργαστή ανά εντολή. Αγνοώντας τα threads που βρίσκονται σε αναμονή, ο επεξεργαστής τα εναλλάσσει με μία κυκλική μέθοδο σε κάθε κύκλο εντολής, γι' αυτό και συχνά στη βιβλιογραφία αυτή η μέθοδος αναφέρεται και ως interleaved (διαπλεκόμενο) multithreading. Είναι σημαντικό να δούμε ότι η εναλλαγή των thread δεν απαιτεί να επέμβει το λειτουργικό σύστημα, αλλά μπορεί να το κάνει και το ίδιο το harware. Κύριος στόχος αυτής της τακτικής είναι να απαλείψει όλες τις εξαρτήσεις δεδομένων που μπορεί να προκύψουν στο pipeline του επεξεργαστή. Η δυσκολία στην υλοποίηση είναι ότι η εναλλαγή των νημάτων πρέπει να γίνεται σε μηδενικό χρόνο. Έχει ως πλεονέκτημα ότι ο επεξεργαστής εκτελεί συνεχώς εντολές, παρακάμπτοντας τις πιθανές καθυστερήσεις, αφού όταν ένα thread είναι σταματημένο, εκτελούνται άλλα. Το βασικό του μειονέκτημα είναι ότι η συνεχής εναλλαγή μεταξύ των threads καθυστερεί ανεξάρτητα threads που μπορούν να εκτελεστούν χωρίς καθυστερήσεις. Σε αντίθεση με το fine-grained multithreading, το coarse-grained είναι πιο απλή μέθοδος, η οποία επιτρέπει ένα thread να εκτελείται στον επεξεργαστή μέχρι να εκτελεστεί μια εντολή που θα προκαλέσει μεγάλη καθυστέρηση, όπως ένα διάβασμα από τη μνήμη. Αυτό σημαίνει ότι η εναλλαγή των thread δεν είναι τόσο συχνή, οπότε η ανάγκη μηδενικού χρόνου της αλλαγής δεν είναι τόσο επιτακτική και ο σχεδιασμός του hardware μπορεί να γίνει πιο απλός. Επίσης, οι εκτελέσεις ανεξάρτητων νημάτων είναι λιγότερο πιθανό να επιβραδυνθούν. Εντούτοις, αυτή η τακτική έχει ένα σημαντικό μειονέκτημα: δεν αντιμετωπίζει τις μικρές καθυστερήσεις των εντολών, όπως την εκτέλεση μιας διαίρεσης. Έτσι, σημαντικός παράγοντας είναι το όριο καθυστέρησης ενός thread ώστε να αποφασιστεί αν θα αλλαχθεί ή όχι. Το coarse-grained multithreading έχει καλύτερη απόδοση όταν οι καθυστερήσεις είναι μεγάλες, και μάλιστα μεγαλύτερες από το χρόνο επαναπλήρωσης του pipeline. Αν παρατηρήσουμε και τις δυο τεχνικές θα δούμε ότι έχουν πολλά κοινά με τις δυο βασικές κατηγοριοποιήσεις των αλγορίθμων χρονοδρομολόγησης: το fine-grained είναι αντίστοιχο με τους διακοπτούς αλγορίθμους, ενώ το coarse-grained με τους συνεργατικούς. Πέραν αυτών, το hardware επιτρέπει και multithreading με την ταυτόχρονη εκτέλεση των threads. Υπάρχει μια τεχνική η οποία ονομάζεται SMT (Simultaneous Multithreading) και εφαρμόζεται σε υπερβαθμωτούς επεξεργαστές. Οι υπερβαθμωτοί επεξεργαστές επιτρέπουν την ταυτόχρονη εκκίνηση πολλών εντολών σε ένα κύκλο ρολογιού και η τεχνική SMT επιτρέπει να εκκινήσουν εντολές από διαφορετικά threads. Με αυτόν τον τρόπο μπορούν να γίνουν εκμεταλλεύσιμες όλες οι λειτουργικές μονάδες των σύγχρονων επεξεργαστών που μπορούν να λειτουργούν παράλληλα. Όπως και στις προηγούμενες τεχνικές, έτσι κι εδώ η καθυστέρηση ενός thread αντιμετωπίζεται με τη δρομολόγηση άλλων στη θέση του, όσο εκείνο περιμένει την ικανοποίηση του αιτήματός του. Παράδειγμα SMT είναι η τεχνολογία HyperThreading της Intel, η οποία αυξάνει την απόδοση των υπερβαθμωτών επεξεργαστών της κατά 30% [19]. 33

34 Ένα παράδειγμα των τεσσάρων διαφορετικών τεχνικών για multithreading που περιγράψαμε δίνονται στο παρακάτω σχήμα (Σχήμα 6). Σχήμα 6: Multithreading σε έναν επεξεργαστή με διαφορετικά επίπεδα παραλληλισμού Ο επεξεργαστής είναι υπερβαθμωτός και μπορεί να εκκινήσει τέσσερις εντολές σε κάθε κύκλο ρολογιού. Αυτό δείχνουν τα κατακόρυφα τετράγωνα. Στην οριζόντια διεύθυνση δείχνονται οι διαφορετικοί κύκλοι ρολογιού του επεξεργαστή. Οι εντολές κάθε thread έχουν δικό τους χρώμα (πράσινο, μπλε, κίτρινο, κόκκινο), τα λευκά τετραγωνάκια δείχνουν ότι η συγκεκριμένη υποδοχή του επεξεργαστή είναι ανενεργή και τα γκρι είναι όταν στον επεξεργαστή εκτελείται κώδικας του λειτουργικού συστήματος. Στην πρώτη περίπτωση, όπου το multithreading γίνεται σε επίπεδο χρονοδρομολόγησης καταμερισμού χρόνου 34

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7 ο Αλγόριθμοι Χρονοδρομολόγησης Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και την αξιολόγηση των αλγορίθμων χρονοδρομολόγησης, και θα παρουσιάσουμε τους κυριότερους. Θα μάθουμε:

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

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

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

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

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

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

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

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης 7.1 Ορισμός Στόχοι Αλγόριθμο χρονοδρομολόγησης (scheduling algorithm) ονομάζουμε την μεθοδολογία την οποία χρησιμοποιεί ο κάθε χρονοδρομολογητής (βραχυχρόνιος, μεσοχρόνιος

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

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

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

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

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

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

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση Εργαστηριακή Άσκηση Οι Αλγόριθμοι Χρονοπρογραμματισμού First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Επιμέλεια: Βασίλης Τσακανίκας Περιεχόμενα Αλγόριθμοι

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

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

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Κεντρικής Μονάδας Επεξεργασίας (CPU) Βασίλης Σακκάς 4/12/2013 1 Xρονοδρομολόγηση Διεργασιών 1 Η χρονοδρομολόγηση σε ένα Λ/Σ αποφασίζει ποια διεργασία θα χρησιμοποιεί

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

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός

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

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

Αρχιτεκτονική Υπολογιστών Αρχιτεκτονική Υπολογιστών Παραλληλισμός Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic,

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Μάθημα: ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) 1 Συμβαίνει συχνά πολλές διεργασίες να ανταγωνίζονται για τον έλεγχο

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του Λ.Σ.

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Πολυπύρηνοι επεξεργαστές Multicore processors Πολυπύρηνοι επεξεργαστές Multicore processors 1 Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας

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

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

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

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

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

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

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

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

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

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

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

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

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του

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

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

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

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

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση

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

Cilk: Φιλοσοφία και Χρήση

Cilk: Φιλοσοφία και Χρήση 1 Cilk: Φιλοσοφία και Χρήση Παράλληλα Συστήματα Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος 2012-2013 http://www.cslab.ece.ntua.gr/courses/pps Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Δεκέμβριος 2012 Cilk 2

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.

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

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

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

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

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 4 «Αρχιτεκτονικές ΛΣ» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 1. Μονολιθικά συστήματα Αρχιτεκτονικές ΛΣ 2. Στρωματοποιημένη αρχιτεκτονική 3. Αρχιτεκτονική

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Ενότητα 3 η : Παράλληλη Επεξεργασία Παράλληλες Αρχιτεκτονικές Παράλληλο σύστημα είναι ένα σύνολο από επεξεργαστικά στοιχεία (processing elements) τα οποία: συνεργάζονται για γρήγορη επίλυση

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

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

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

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 9 1. Εισαγωγή... 13 1.1 Οι Μεγάλες Σύγχρονες Επιστημονικές Προκλήσεις... 13 1.2 Εξέλιξη της Παράλληλης Επεξεργασίας Δεδομένων... 14 1.3 Οι Έννοιες της Σωλήνωσης, του Παραλληλισμού

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

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling) Μάθημα 6 ο Χρονοδρομολόγηση (Scheduling) Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και τη λειτουργία της χρονοδρομολόγησης σε ένα Λειτουργικό Σύστημα. Θα μάθουμε: Να ορίζουμε τι είναι

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

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

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

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

Αρχιτεκτονική Υπολογιστών Γιώργος Δημητρίου Ενότητα 11 η : Εισαγωγή σε Παράλληλες Αρχιτεκτονικές Παράλληλη Επεξεργασία Επίπεδο Παραλληλισμού Από εντολές έως ανεξάρτητες διεργασίες Οργανώσεις Παράλληλων Αρχιτεκτονικών Συμμετρικοί,

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

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστηριακή Άσκηση Εργαστήριο Λειτουργικών Συστημάτων Οι First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Β. Τσακανίκας Β. Ταμπακάς Τμήμα Μηχανικών Πληροφορικής

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

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

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

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

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

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Αρχιτεκτονική Πλατφόρμας Μπορεί να μοντελοποιηθεί σαν ένα σύνολο από διασυνδεδεμένα κομμάτια: 1. Στοιχεία επεξεργασίας (processing

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

Cilk: Φιλοσοφία και Χρήση

Cilk: Φιλοσοφία και Χρήση 1 Cilk: Φιλοσοφία και Χρήση Παράλληλα Συστήματα Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ έτος 2010-2011 http://wwwcslabecentuagr/courses/pps Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Νοέμβριος 2010 Περιεχόμενα 2

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

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

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

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

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ Δρ. Γκόγκος Χρήστος Εκτέλεση προγραμμάτων Πρόγραμμα: Ένα σύνολο από εντολές.

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

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I MIPS Η MIPS (Microprocessor without Interlocked Pipeline Stages) είναι μία αρχιτεκτονική συνόλου εντολών (ISA) γλώσσας μηχανής που αναπτύχθηκε από την εταιρεία

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

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

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Μνήμης Βασίλης Σακκάς 6/12/2013 1 Διαχείριση Μνήμης 1 Το τμήμα του Λ/Σ που διαχειρίζεται τη μνήμη λέγεται Διαχειριστής Μνήμης (Memory manager). Καθήκον του είναι

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

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

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

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

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Συστήματα σε Ολοκληρωμένα Κυκλώματα Συστήματα σε Ολοκληρωμένα Κυκλώματα Κεφάλαιο 4: Αρχιτεκτονική των Embedded Μικροεπεξεργαστών Διδάσκων: Καθηγητής Οδυσσέας Κουφοπαύλου Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών ΕΙΣΑΓΩΓΗ Παρουσιάζεται

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

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Πτυχιακή Εργασία Φοιτητής: Γεμενής Κωνσταντίνος ΑΜ: 30931 Επιβλέπων Καθηγητής Κοκκόσης Απόστολος Λέκτορας

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

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

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

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός; Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός; Κωνσταντίνος Μαργαρίτης Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας kmarg@uom.gr http://eos.uom.gr/~kmarg Αρετή

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

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

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

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή 8.1 Τακτική σάρωση (Polling) Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου.

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

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Γιάννης Γαροφαλάκης Αν. Καθηγητής ιατύπωση του προβλήματος (1) Τα συστήματα αναμονής (queueing systems), βρίσκονται

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

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

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

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

Εισαγωγή στην Πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Λειτουργικά συστήµατα, διεργασίες και δροµολόγηση Σύνδεση

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

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

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

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

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας www.costaschatzinikolas.gr

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας www.costaschatzinikolas.gr Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Χατζηνικόλας Κώστας www.costaschatzinikolas.gr Τα 4 Είδη Των Αρχιτεκτονικών Των Σύγχρονων Η/Υ Ο Michael J. Flynn 1 το 1966 πρότεινε τον χωρισμό

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

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

Παραλληλισμός σε επίπεδο εντολών

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

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

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

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

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

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

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

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Η χρήση του χρόνου Μ.Στεφανιδάκης Συστήματα πραγματικού χρόνου: ελεγκτής και ελεγχόμενο σύστημα real-time system

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

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Εισαγωγή H κεντρική μονάδα επεξεργασίας (ΚΜΕ) και η κύρια μνήμη αποτελούν τα βασικά δομικά στοιχεία ενός υπολογιστικού συστήματος. Η πρώτη εκτελεί εντολές χειρισμού δεδομένων

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

EM 361: Παράλληλοι Υπολογισμοί

EM 361: Παράλληλοι Υπολογισμοί ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ EM 361: Παράλληλοι Υπολογισμοί Ενότητα #2: Αρχιτεκτονική Διδάσκων: Χαρμανδάρης Ευάγγελος ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

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

7.9 ροµολόγηση. Ερωτήσεις

7.9 ροµολόγηση. Ερωτήσεις 7.9 ροµολόγηση Ερωτήσεις 1. Να δώσετε τον ορισµό της δροµολόγησης; 2. Από τι εξαρτάται η χρονική στιγµή στην οποία λαµβάνονται οι αποφάσεις δροµολόγησης; Να αναφέρετε ποια είναι αυτή στην περίπτωση των

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

Σελίδα Φορτώθηκε Προσπελάστηκε Συχνότητα R Μ (dirty)

Σελίδα Φορτώθηκε Προσπελάστηκε Συχνότητα R Μ (dirty) Ιδεατή Μνήμη Άσκηση 1: Ένας υπολογιστής έχει τέσσερα πλαίσια σελίδων. Οι χρονικές στιγμές φόρτωσης, τελευταίας προσπέλασης, ο αριθμός αναφορών και τα bit αναφοράς (R) και μεταβολής (M ή dirty ) φαίνονται

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

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

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

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

Τεχνολογίες Κύριας Μνήμης

Τεχνολογίες Κύριας Μνήμης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κύρια Μνήμη

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Λειτουργικά συστήματα πραγματικού χρόνου

Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 7 «Διαχείριση Μνήμης» Διδάσκων: Δ. Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Κύρια Μνήμη 1. Εισαγωγή 2. Βασική διαχείριση μνήμης 3. Μνήμη και πολυπρογραμματισμός 4. Τμηματοποίηση

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

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

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

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

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

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

Παράλληλος προγραμματισμός: Υλοποίηση παράλληλων προγραμμάτων

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

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

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Διπλωματική Εργασία Μεταπτυχιακού Προγράμματος στην Εφαρμοσμένη Πληροφορική Κατεύθυνση: Συστήματα Υπολογιστών

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

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 12 Σχεδιασμός Ανάπτυξη Λειτουργία Π.Σ. 1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1.1 Δυνατότητες Λειτουργικών Συστημάτων 1.1.1 Εισαγωγή Ο όρος Λειτουργικό Σύστημα (Operating System), εκφράζει το σύνολο των προγραμμάτων

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

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