ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Σχετικά έγγραφα
Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1

17. Πολυδιάςτατοι πίνακεσ

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Δομζσ Δεδομζνων Πίνακεσ

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

16. Πίνακεσ και Συναρτήςεισ

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Ψθφιακά Ηλεκτρονικά. Ενότθτα 7 : Ελαχιςτοποίθςθ και κωδικοποίθςθ καταςτάςεων Φϊτιοσ Βαρτηιϊτθσ

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

Οδηγόσ εγκατάςταςησ και ενεργοποίηςησ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

Περιεχόμενα. χολι Χοροφ Αντιγόνθ Βοφτου - Πολιτικι Διαχείριςθσ Cookie 1

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Dynamic Data Type Refinement Methodology

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Δείκτεσ απόδοςθσ υλικών

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

Διαδικαςία Προγράμματοσ Ωρομζτρθςθσ. (v.1.0.7)

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Δζντρα. Δομζσ Δεδομζνων

Οντοκεντρικόσ Ρρογραμματιςμόσ

Παράςταςη ςυμπλήρωμα ωσ προσ 1

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι


Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

Καρβέλης Φώτης ΓΟΝΙΔΙΩΜΑΤΙΚΗ ΒΙΒΛΙΟΘΗΚΗ

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α

Δίκτυα Μεταγωγισ Δεδομζνων

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

Ειδικά Θζματα Βάςεων Δεδομζνων

ΥΡΟΝΣΙ ΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣ Η» ΔΙΑΓΩΝΙ ΜΑ ΑΕΠΠ

Δημιουργία Εντφπων Intrastat και Ανακεφαλαιωτικοφ Πίνακα

Οδθγίεσ Χριςεωσ ταξιμζτρου DIGITAX F1 PLUS S. DIGITAX(DIGITAX PRINTER F1 Plus S ) ΔΙΑΔΙΚΑΣΙΑ ΕΛΕΓΧΟΥ ΤΑΞΙΜΕΤΡΟΥ ΣΕΛ 7 V 2.2

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 9 θ & 10 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Β

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 2

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 4

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Αυτόνομοι Πράκτορες. Αναφορά Εργασίας Εξαμήνου. Το αστέρι του Aibo και τα κόκαλα του

Σύ ντομος Οδηγο ς χρη σης wikidot για τα projects

Οντοκεντρικόσ Προγραμματιςμόσ

Τμήματα Μνήμησ Υπολογιςμόσ Φυςικών διευθύνςεων. Εκπαιδεφτρια: Μαρία Πολίτθ

Γενικά Μαθηματικά ΙΙ

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Παρουςίαςθ 2 θσ Άςκθςθσ:

eorder Eγχειρίδιο Χρήσης

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Οδηγίες Πρόζβαζης ζηο EndNote Web. Πρόζβαζη ζηο EndNote Web

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Γενικά Μαθηματικά ΙΙ

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

MySchool Πρακτικζσ οδθγίεσ χριςθσ

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

review1= a great movie - positive, review2= excellent film - positive review3= worst film ever - negative, review4= a bad movie - negative

Αναφορά Εργαςίασ Nim Game

Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη

Θεςιακά ςυςτιματα αρίκμθςθσ

ΠΑΝΕΠΙΣΘΜΙΟ ΔΤΣΙΚΘ ΜΑΚΕΔΟΝΙΑ ΣΜΘΜΑ ΜΘΧΑΝΙΚΩΝ ΠΛΘΡΟΦΟΡΙΚΘ ΚΑΙ ΣΘΛΕΠΙΚΟΙΝΩΝΙΩΝ. Λειτουργικά υςτιματα, 4 ο Εξάμθνο Ψθφιακι χεδίαςθ ΙΙ, 4 ο Εξάμθνο

Αςφάλεια και Προςταςία Δεδομζνων

ΔΟΜΗ ΑΠΛΗΣ ΕΠΙΛΟΓΗΣ Αςκήςεισ με ψευδογλώςςα/ διάγραμμα ροήσ. Αντώνης Μαϊργιώτης

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

ΕΛΛΘΝΙΚΘ ΔΘΜΟΚΡΑΣΙΑ ΕΛΛΘΝΙΚΘ ΣΑΣΙΣΙΚΘ ΑΡΧΘ Πειραιάσ, 14 Ιουλίου 2016 ΔΕΛΣΙΟ ΣΤΠΟΤ

HY437 Αλγόριθμοι CAD

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Εφδοξοσ+ Συνδεκείτε ςτθν Εφαρμογι Φοιτθτϊν και μεταβείτε ςτθ ςελίδα «Ανταλλαγι Βιβλίων (Εφδοξοσ+)».

9 ΕΞΑΙΡΕΕΙ - EXCEPTIONS

Εγχειρίδιο Χριςθσ: Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων Τροφίμων

Ιδιότθτεσ πεδίων Γενικζσ.

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

Οδηγίες αναβάθμισης χαρτών

Modellus 4.01 Συ ντομοσ Οδηγο σ

Ειςαγωγή ςτη διδακτική των γλωςςών

Πνομα Ομάδασ: Προγραμματιςμόσ ενόσ κινοφμενου ρομπότ

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία).

Σφντομεσ Οδθγίεσ Χριςθσ

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Transcript:

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Υπεφκυνοι αςκιςεων: Αν. Κακθγθτισ Δ. Σοφντρθσ Μεταδιδάκτορασ Λάηαροσ Παπαδόπουλοσ Αςκήςεισ ςτη Βελτιςτοποίηςη Δυναμικϊν Δομϊν Δεδομζνων (Dynamic Data Type Refinement DDTR) Ο ςκοπόσ τθσ άςκθςθσ είναι να βελτιςτοποιθκοφν οι δυναμικζσ δομζσ δεδομζνων δφο δικτυακϊν εφαρμογϊν: του Deficit Round Robin (DRR) και του αλγορίκμου Dijkstra, με χριςθ τθσ μεκοδολογίασ «Βελτιςτοποίθςθσ Δυναμικϊν Δομϊν Δεδομζνων» - Dynamic Data Type Refinement (DDTR). Οι δυναμικζσ δομζσ των αλγορίκμων DRR και Dijkstra κα βελτιςτοποιθκοφν ωσ προσ: o τισ προςβάςεισ ςτθ μνιμθ (memory accesses) που απαιτοφνται για να προςπελαςτουν τα δεδομζνα τουσ o και ωσ προσ τθ μζγιςτθ ποςότθτα μνιμθσ που καταλαμβάνουν (memory footprint). Για το evaluation των data structures κα χρθςιμοποιθκοφν τα εξισ εργαλεία: o Η βιβλιοθήκη DDTR. o To εργαλείο Massif τθσ Valgrind suite. o Το εργαλείο Lackey τθσ Valgrind suite. Α. Προετοιμαςία για χρήςη τησ βιβλιοθήκησ 1. To directory DDTR περιζχει: a. synch_implementations: Είναι θ DDTR library, precompiled. Μπορεί να χρθςιμοποιθκεί απευκείασ και δεν χρειάηεται να ξαναγίνει compiled. b. DRR: Η εφαρμογι Deficit Round Robin. c. dijkstra: Η εφαρμογι Dijkstra. 2. Προαπαιτοφμενα: a. Linux gcc pthreads (e.g. gcc 4.8) b. Valgind: http://valgrind.org Το Valgrind είναι ζνα εργαλείο που παρζχει πλθροφορίεσ για τθν εφαρμογι, διαβάηοντασ το εκτελζςιμο αρχείο και όχι τον source code (i.e. dynamic instrumentation profiling tool). Χρθςιμοποιείται για υπολογιςμό τθσ χριςθσ τθσ μνιμθσ (memory utilization), των προςβάςεων ςτθ μνιμθ (memory accesses), τθσ προβλθματικισ χριςθσ τθσ μνιμθσ (memory leaks), λακϊν ςε πολυνθματικζσ εφαρμογζσ (threading errors) etc. Εγκαταςτήςτε το Valgrind από τον package manager τησ ζκδοςησ linux που χρηςιμοποιείτε. Εναλλακτικά, μπορείτε να το κατεβάςετε και να το εγκαταςτιςετε από εδϊ: http://valgrind.org/downloads/current.html.

Β. Επεξήγηςη τησ διαδικαςίασ βελτιςτοποίηςησ ςτον αλγόριθμο Deficit Round Robin. Σημείωςη: Θα ςασ βοθκιςει, παράλλθλα με τθν ανάγνωςθ τθσ επεξιγθςθσ, να βλζπετε τα αρχεία drr.h και drr.c τθσ εφαρμογισ DRR. 1. To Deficit Round Robin είναι ζνασ αλγόριθμοσ δρομολόγηςησ πακζτων (packet scheduling) που τρζχει ςε routers και χρθςιμοποιείται για τθ «δίκαιθ» εξυπθρζτθςθ των πακζτων ενόσ αρικμοφ κόμβων (Nodes). Ο κϊδικασ προςομοιϊνει τθν λειτουργία του αλγορίκμου και χρθςιμοποιεί πραγματικά network trace files: http://crawdad.org/dartmouth/campus/. 2. Πιο ςυγκεκριμζνα, κάκε κόμβοσ ζχει ζνα πεδίο που ονομάηεται deficit, το οποίο αυξάνει ςε κάκε «επίςκεψθ» του δρομολογθτι (scheduler), ενϊ μειϊνεται κάκε φορά που ο scheduler προωκεί ζνα πακζτο από τον ςυγκεκριμζνο κόμβο. Ο scheduler αποφαςίηει από ποιον κόμβο κα προωκιςει ζνα ι περιςςότερα πακζτα ςυγκρίνοντασ το deficit κάκε κόμβου με το packet size του πρϊτου πακζτου του ςυγκεκριμζνου κόμβου που περιμζνει να εξυπθρετθκεί. O scheduler: a. Αυξάνει το deficit όλων των κόμβων κατά QUANTUM και ςτθ ςυνζχεια, για κάκε κόμβο: b. Αν το deficit του κόμβου ξεπερνά το μζγεκοσ του πρϊτου πακζτου ςτον ςυγκεκριμζνο κόμβο αυτό το πακζτο προωκείται. Το deficit του κόμβου μειϊνεται κατά το μζγεκοσ του πακζτου (ϊςτε οι πικανότθτεσ να προωκθκεί πακζτο από τον ίδιο κόμβο ςτθν επόμενθ «επιςκεψθ» του scheduler, να μειωκοφν). c. Αν το deficit του κόμβου είναι μικρότερo από το μζγεκοσ του πρϊτου πακζτο, ο scheduler προχωρά ςτον επόμενο κόμβο. 3. Ο κϊδικασ περιζχει δφο δομζσ (structures): Node: που είναι οι ενεργοί κόμβοι, και Packet που είναι το πακζτο που πρόκειται να προωκθκεί. 4. Οι δομζσ δεδομζνων του αλγορίκμου είναι οι εξισ: a. Μια δομι δεδομζνων ςτθν οποία είναι αποκθκευμζνοι οι Nodes: clientlist. b. Κάκε Node ζχει αποκθκευμζνθ ςε μια data structure τα πακζτα που κα προωκιςει: plist. 5. Θα δοκιμάςουμε διαφορετικζσ υλοποιήςεισ των δφο αυτϊν data structures: Απλά ςυνδεδεμζνθ λίςτα - Single Linked List (SLL), Διπλά Συνδεδεμζνθ Λίςτα - Double Linked List (DLL) και Δυναμικόσ Πίνακασ - Dynamic Array (ι vector) (DYN_ARR). Με χριςθ τθσ βιβλιοκικθσ DDTR και των εργαλείων Valgrind κα τισ κάνουμε evaluation ωσ προσ τον αρικμό των προςβάςεων ςτθ μνιμθ - memory accesses και το μζγιςτο μζγεκοσ μνιμθσ που απαιτείται - memory footprint. 6. Βήμα 1: Ειςαγωγή τησ βιβλιοθήκησ DDTR ςτην εφαρμογή:

a. Κάνουμε include τα αντίςτοιχα header files (δείτε το drr.h): i. Για τθν Απλά Συνδεδεμζνθ Λίςτα - Single Linked List (SLL): #include "../synch_implementations/cdsl_queue.h" ii. Για τθ Διπλά Συνδεδεμζνθ Λίςτα - Double Linked List (DLL): #include "../synch_implementations/cdsl_deque.h" iii. Για τον Δυναμικό Πίνακα - Dynamic Array (DYN_ARR): #include "../synch_implementations/cdsl_dyn_array.h" Σε αυτά τα 3 αρχεία βρίςκονται οι δθλϊςεισ των ςυναρτιςεων (function declarations) που μποροφν να χρθςιμοποιθκοφν ςτον κϊδικα τθσ εφαρμογισ για να αντικαταςτιςουν τθ δομι δεδομζνων τθσ εφαρμογισ με αυτζσ τθσ βιβλιοκικθσ DDTR. (δείτε το drr.h γραμμή 10) b. Αντικαθιςτοφμε τισ δηλϊςεισ (definitions declarations) των δομϊν δεδομζνων τθσ εφαρμογισ με αυτά τθσ βιβλιοκικθσ DDTR. Παραδείγματα: i. cdsl_sll *plist; (Το plist είναι ζνασ δείκτθσ (pointer) ςε μια απλά ςυνδεδεμζνθ λίςτα single linked list) ii. cdsl_dll *plist; (Το plist είναι ζνασ δείκτθσ (pointer) ςε μια διπλα ςυνδεδεμζνθ λίςτα - double linked list) iii. cdsl_dyn_array *clientlist (To clientlist είναι ζνασ δείκτθσ (pointer) ςε ζναν δυναμικό πίνακα - dynamic array). (δείτε το drr.c γραμμή 23 ή το drr.h γραμμή 31) c. Δημιουργοφμε και κάνουμε αρχικοποίηςη (initialization) τισ δομζσ δεδομζνων καλϊντασ τισ αντίςτοιχεσ cdsl_xxx_init() ςυναρτιςεισ (functions) από τθ βιβλιοκικθ. (ΧΧΧ είναι θ ςυγκεκριμζνθ υλοποίθςθ). Παραδείγματα: i. clientlist = cdsl_sll_init(); (Μία απλά ςυνδεδεμζνθ λίςτα δθμιουργείται, αρχικοποιείται και το clientlist δείχνει ςε αυτιν). ii. new_node->plist = cdsl_dll_init(); (Μία διπλά ςυνδεδεμζνθ λίςτα δθμιουργείται, αρχικοποιείται και το plist δείχνει ςε αυτιν). (δείτε το drr.c γραμμή 45 ή 125) d. Αντικαθιςτοφμε τισ ςυναρτήςεισ των λειτουργιϊν των δομϊν δεδομζνων (data structure operation functions) τησ εφαρμογήσ με αυτά τησ βιβλιοθήκησ. Οι δθλϊςεισ των αντίςτοιχων ςυναρτιςεων (function declarations) τθσ βιβλιοκικθσ βρίςκονται ςτα header files που αναφζρονται ςτο (a). Παραδείγματα: i. node->plist->enqueue(0, node->plist, (void*)packet); (Ειςαγωγι του pointer packet ςτο data structure plist). Όριςμα (Argument) 1: Ζνασ unsigned int (δεν ζχει ςθμαςία ςε μονονθματικζσ εφαρμογζσ, βάηετε ότι κζλετε) Όριςμα (Argument) 2: Δείκτθσ (pointer) ςτθ δομι δεδομζνων που επιτελοφμε τθ λειτουργία. Όριςμα (Argument) 3: Void pointer του ςτοιχείου που ειςάγουμε. ii. v->plist->dequeue(0, (v->plist)); Όριςμα (Argument) 1: Ζνασ unsigned int (δεν ζχει ςθμαςία ςε μονονθματικζσ εφαρμογζσ, βάηετε ότι κζλετε) Όριςμα (Argument) 2: Δείκτθσ (pointer) ςτθ δομι δεδομζνων που επιτελοφμε τθ λειτουργία. iii. iterator_cdsl_dyn_array it, end; Δφο iterators ςε dynamic array γίνονται defined. Το interface τουσ είναι παρόμοι με τθν STL και βρίςκεται ςτα header files του (a). (δείτε το drr.c γραμμή 131 ή γραμμή 180) 7. Compilation and Εξαγωγή αποτελεςμάτων: a. Compilation τησ εφαρμογήσ DRR: gcc drr.c -o drr -pthread -lcdsl -lm -L./../synch_implementations -I./../synch_implementations b. Αποτελζςματα αριθμοφ προςβάςεων ςτη μνήμη (Memory accesses): Δθμιουργία ενόσ trace file των προςβάςεων ςτθ μνιμθ με χριςθ του εργαλείου lackey:

Εντολι: valgrind --log-file="mem_accesses_log.txt" --tool=lackey --trace-mem=yes./drr Καταμζτρθςθ του αρικμοφ των προςβάςεων ςτθ μνιμθ από το trace file: Εντολι: cat mem_accesses_log.txt grep 'I\ L' wc -l Σημείωςη: Η διαδικαςία παραγωγισ του trace file ςυχνά κρατά αρκετό χρόνο (π.χ. 10 20 λεπτά) και το αρχείο που παράγεται είναι 5 15GB. c. Αποτελζςματα μζγιςτησ χρήςησ μνήμησ (Memory footprint): Δθμιουργία ενόσ log αρχείου και επεξεργαςία του, με χριςθ του εργαλείου massif: Εντολι: valgrind --tool=massif./drr Εντολι: ms_print massif.out.xxxxx > mem_footprint_log.txt (όπου XXXXX ο αρικμόσ που αντιςτοιχεί ςτο αρχείο που παράχκθκε). Στο mem_footprint_log.txt, το memory footprint είναι θ μζγιςτθ τιμι του άξονα y ςτο διάγραμμα. Π.χ. ςτο παρακάτω πείραμα το memory footprint είναι 980.3 ΚΒ. C. Αςκήςεισ Άςκηςη 1: Βελτιςτοποίηςη δυναμικϊν δομϊν δεδομζνων του αλγορίθμου DRR O source code του DRR ζχει ιδθ περαςμζνθ τθν βιβλιοκικθ DDTR. a) Εκτελζςτε τθν εφαρμογι με όλουσ τουσ διαφορετικοφσ ςυνδυαςμοφσ υλοποιήςεων δομϊν δεδομζνων για τη λίςτα των πακζτων και τη λίςτα των κόμβων (Σφνολο 9 ςυνδυαςμοί). Για κάκε ςυνδυαςμό καταγράψτε τα αποτελζςματά του ςχετικά με τον αρικμό των προςβάςεων ςτθ μνιμθ (memory accesses) και το μζγεκοσ τθσ απαιτοφμενθσ μνιμθσ (memory footprint). b) Βρείτε τον ςυνδυαςμό υλοποιιςεων δομϊν δεδομζνων με τθν οποία θ εφαρμογι ζχει τον μικρότερο αρικμό προςβάςων ςτθ μνιμθ (minimum number of memory accesses). c) Βρείτε τον ςυνδυαςμό υλοποιιςεων δομϊν δεδομζνων με τθν οποία θ εφαρμογι ζχει μικρότερεσ απαιτιςεισ ςε μνιμθ (smaller memory footprint).

Άςκηςη 2: Βελτιςτοποίηςη δυναμικϊν δομϊν δεδομζνων ςε εφαρμογή του Linear Regression Η μζκοδοσ linear regression μοντελοποιεί τθσ ςχζςθ μεταξφ μίασ εξαρτθμζνθσ μεταβλθτισ (y) και ενόσ ι περιςςότερων ανεξάρτθτων μεταβλθτϊν (x 1, x 2, ). H ςυγκεκριμζνθ υλοποίθςθ αφορά πολυπφρθνεσ αρχιτεκτονικζσ: Ζνασ αρικμόσ από linear regression jobs αποκθκεφονται ςε μία δομι δεδομζνων υλοποιθμζνθ ωσ πίνακα. Στθ ςυνζχεια, threads αφαιροφν jobs από τθ δομι και τα εκτελοφν. Εφαρμόςτε τθ μεκοδολογία DDTR για τθν εφαρμογι αυτι: a) Εκτελζςτε την εφαρμογή και καταγράψτε τα αποτελζςματα που παράγει. b) Ειςάγετε τη βιβλιοθήκη ςτθν εφαρμογι και αντικαταςτιςτε τθ δομι δεδομζνων τθσ, με τισ δομζσ δεδομζνων τθσ βιβλιοκικθσ. Εκτελζςτε τθν εφαρμογι και βεβαιωκείτε ότι θ βιβλιοκικθ ζχει ειςαχκεί ςωςτά, παίρνοντασ αποτελζςματα αντίςτοιχα με αυτά που παράγονται ςτο (a). Στθ ςυνζχεια, κάντε comment to PRINT_OUTPUT. c) Εκτελζςτε την εφαρμογή για τισ εξισ δυναμικζσ δομζσ δεδομζνων: Απλά Συνδεδεμζνθ Λίςτα Single Linked List (SLL), Διπλά Συνδεδεμζνθ Λίςτα Double Linked List (DLL) και Δυναμικό Πίνακα Dynamic Array (DYN_ARR). Καταγράψτε τα αποτελζςματα του αρικμοφ προςβάςεων ςτθ μνιμθ (memory accesses) και του μζγιςτου μεγζκουσ μνιμθσ που απαιτείται για κάκε υλοποίθςθ που δοκιμάηετε (memory footprint). d) Βρείτε τθν υλοποίθςθ δομισ δεδομζνων με τθν οποία θ εφαρμογι ζχει τον μικρότερο αρικμό προςβάςεων ςτθ μνιμθ (lowest number of memory accesses). e) Βρείτε τθν υλοποίθςθ δομισ δεδομζνων με τθν οποία θ εφαρμογι ζχει μικρότερεσ απαιτιςεισ ςε μνιμθ (lowest memory footprint). D. Επεξήγηςη όρων Argument Data Structure Operation Functions DDTR (Dynamic Data Type Refinement) Directory DLL (Double Linked List) DRR (Deficit Round Robin) (DYN_ARR) Dynamic Array Όριςμα μιασ ςυνάρτθςθσ Αναφζρεται ςτισ ςυναρτιςεισ που υλοποιοφν τισ λειτουργίασ μιασ δομισ δεδομζνων. Π.χ. enqueue, dequeue, insert, remove, find, etc. Η μεκοδολογία βελτιςτοποίθςθσ δυναμικϊν δομϊν δεδομζνων Κατάλογοσ του Linux Διπλά ςυνδεδεμζνθ λίςτα Αλγόρικμοσ δρομολόγθςθσ πακζτων Πίνακασ που το μζγεκόσ του αυξάνεται κατά τθ διάρκεια εκτζλεςθσ τθσ εκτζλεςθσ τθσ εφαρμογισ, ανάλογα με τον αρικμό δεδομζνων που ζχει αποκθκευμζνα. Function Συνάρτθςθ τθσ γλϊςςασ C. Function Definition Ο οριςμόσ μιασ ςυνάρτθςθσ (π.χ. int myfun(int x) { return x+1; } ) Function Declaration Η διλωςθ μιασ ςυνάρτθςθσ (π.χ. int myfun(int x); ) Initialization Αρχικοποίθςθ. Εδϊ, αναφζρεται ςτθν αρχικοποίθςθ μιασ δομισ δεδομζνων τθσ βιβλιοκικθσ DDTR. Interface Εδϊ, αναφζρεται ςτθν «επικοινωνία» ανάμεςα ςτισ δομζσ δεδομζνων τθσ βιβλιοκικθσ και ςτθν εφαρμογι. Memory Accesses Προςβάςεισ ςτθ μνιμθ Memory Footprint Μζγιςτο μζγεκοσ μνιμθσ που απαιτείται από τθν εφαρμογι SLL (Single Linked List) Απλά ςυνδεδεμζνθ λίςτα