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

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

Download "Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης"

Transcript

1 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Πληροφορικής Περιγραφή του επιστημονικού άρθρου Dissemination-based Data Delivery Using Broadcast Disks Swarup Acharya, Dept. of Computer Science, Brown University, Michael Franklin, Dept. of Computer Science, University of Maryland Stanley Zdonik, Dept. of Computer Science, Brown University & Ανάπτυξη προσομοιωτή της μεθόδου Broadcast Disks - Έρευνα και βελτιώσεις Εργασία για το μάθημα Ανάλυση της Απόδοσης και Προσομοίωση Επικοινωνιακών Συστημάτων Ελευθέριος Τιάκας (ΑΕΜ:80) Στέφανος Ουγιάρογλου (ΑΕΜ:68) Φοιτητές της κατεύθυνσης «Πληροφοριακά Συστήματα» του Μεταπτυχιακού προγράμματος του τμήματος Πληροφορικής Ιανουάριος 2005

2 Περιεχόμενα ΚΕΦΑΛΑΙΟ 1: Dissemination-based Data Delivery Using Broadcast Disks Περίληψη Εισαγωγή Εφαρμογές Broadcast Disks Server Broadcast Program Ιδιότητες των Broadcast Programs Διαδικασία παραγωγής των broadcast δίσκων Client Cache Management Prefetching Η πολιτική Tag Team Η πολιτική PT The Read/Write Case Πειράματα Μελέτη της απόδοσης των Broadcast Disks No caching & 0% Noise No caching & Noise Caching & Noise 18 ΚΕΦΑΛΑΙΟ 2: Περιγραφή του προσομοιωτή Broadcast Disks Εισαγωγή Περιγραφή εικονιδίων της εφαρμογής Οθόνη παραμέτρων προσομοίωσης Οθόνη κατασκευής προγραμμάτων εκπομπής Οθόνη στατιστικά client Οθόνη προσομοίωσης Οθόνη Σχετικά 26-2-

3 ΚΕΦΑΛΑΙΟ 3: Παραδείγματα εκτέλεσης του Broadcast Disks Simulator Αναλυτική παρουσίαση παραδείγματος εκτέλεσης Περισσότερα παραδείγματα εκτέλεσης Πείραμα Πείραμα Πείραμα Πείραμα Πείραμα Πείραμα Πείραμα Πείραμα Σύνοψη αποτελεσμάτων 34 ΚΕΦΑΛΑΙΟ 4: Τεκμηρίωση του κώδικα του Broadcast Disks Simulator Εισαγωγή Περιγραφή δημοσίων μεταβλητών και πινάκων Αλγόριθμος εύρεσης του βέλτιστου αριθμού δίσκων Διαδικασία εισαγωγής πιθανοτήτων προσπέλασης Διαδικασία εύρεσης των διαστημάτων των δίσκων Διαδικασία υπολογισμού συχνοτήτων δίσκων Διαδικασία δημιουργίας Chunks Διαδικασία (Αλγόριθμος) δημιουργίας του προγράμματος chunks Διαδικασία δημιουργίας flat προγράμματος Αλγόριθμος δημιουργίας προγράμματος αποφεύγοντας το βήμα δημιουργίας chunks Συνάρτηση εύρεσης του πλήθους σελίδων που ανήκουν σε ένα δίσκο Διαδικασία δημιουργία προγράμματος indexes σελίδων Βοηθητικές διαδικασίες και συναρτήσεις Διαδικασίες ανάκτησης και αποθήκευσης των παραμέτρων στην Registry των Windows Διαδικασίες αποθήκευσης πληροφοριών σε αρχεία κειμένου Διαδικασία υπολογισμού μέσων καθυστερήσεων Διαδικασία υπολογισμού καθυστέρησης Συνάρτηση εύρεσης του δίσκου όπου βρίσκεται μια σελίδα Αλγόριθμος προσομοίωσης πραγματικού χρόνου Διαδικασίες Interface 60-3-

4 4.21 Διαδικασίες και Συναρτήσεις οθόνης εισαγωγής παραμέτρων Διαδικασίες Οθόνης κατασκευής προγράμματος (Αρχική οθόνη) Διαδικασίες Οθόνης στατιστικών Clients Διαδικασίες οθόνης προσομοιωσης Διαδικασίες δημιουργίας γραφημάτων οθόνης κατασκευής προγράμματος _ Διαδικασίες δημιουργίας γραφημάτων οθόνης προσομοίωσης Διαδικασίες δημιουργίας γραφημάτων οθόνης στατιστικών Clinet 71 Βιβλιογραφικές Αναφορές 73-4-

5 ΚΕΦΑΛΑΙΟ 1: Dissemination-based Data Delivery Using Broadcast Disks 1.1 Περίληψη Η τεχνολογία των φορητών υπολογιστών και των ασυρμάτων δικτύων υπόσχεται ότι στο μέλλον η χρήση των υπολογιστών και η πρόσβαση σε ασύρματα δίκτυα θα μπορεί να γίνεται οπουδήποτε, οποιαδήποτε στιγμή. Για να επιτευχθεί αυτό θα πρέπει οι φορητοί υπολογιστές (clients) να έχουν πρόσβαση στα δεδομένα του δικτύου σε οποιαδήποτε στιγμή και από οποιοδήποτε μέρος. Ωστόσο, για να γίνει αυτό υπάρχουν αντικειμενικές δυσκολίες: Οι φορητοί υπολογιστές πολλές φορές μπορεί, λόγω της θέσης τους ή της μετακίνησης τους, να είναι αποσυνδεμένοι από τον server που τους εξυπηρετούσε μέχρι την στιγμή της αποσύνδεσης. Οι φορητοί υπολογιστές είναι πολύ πιθανό σε κάποια σημεία να έχουν πολύ μικρό bandwidth και έτσι να μην επικοινωνούν με τον server. Ένα τέτοιο περιβάλλον είναι δύσκολο να υποστηρίξει εφαρμογές που απαιτούν συνεχή επικοινωνία με τον server εξαιτίας τριών λόγων: Η αδυναμία πρόβλεψης (με ακρίβεια 100%) των δεδομένων που θα απαιτηθούν μελλοντικά από τον client. Συνήθως οι δίσκοι των φορητών υπολογιστών είναι μικρής χωρητικότητας και έτσι είναι πολυτέλεια να «κατεβούν» στον client δεδομένα που δεν θα χρησιμοποιηθούν μελλοντικά. Η ανάγκη να κατεβάζουμε στους clients νέες εκδόσεις των δεδομένων που βρίσκονται στον server αφού αυτά μπορούν να γράφονται από άλλους clients. Ένας τρόπος για να επιτευχθεί ο παραπάνω στόχος είναι κάθε server του δικτύου να έχει ένα κανάλι επικοινωνίας με τους clients που είναι συνδεμένοι σε αυτόν, ώστε να κάνει broadcast τα δεδομένα στους clients και αυτοί να βρίσκουν κάτι που χρειάζονται σε αυτό το κανάλι. Ένας τέτοιος μηχανισμός, ονομάζεται broadcast disks και έχει στόχο την πρόσβαση από τους clients στις βάσεις δεδομένων του server σε ένα τέτοιο περιβάλλον. 1.2 Εισαγωγή Είναι γνωστό ότι σε πολλά συστήματα client-server, το «κατέβασμα» δεδομένων από τους servers στους clients είναι γρηγορότερο από ότι το «ανέβασμα». Για παράδειγμα ένας server σε ένα ασύρματο δίκτυο μπορεί να έχει ένα κανάλι με μεγάλο bandwidth για broadcast, ενώ οι clients δεν μπορούν να μεταδώσουν δεδομένα ή έχουν πολύ μικρό bandwidth για μετάδοση. Τέτοια συστήματα καλούνται ασύμμετρα περιβάλλοντα επικοινωνίας. Παρακάτω ακολουθούν κάποια παραδείγματα τέτοιων περιβαλλόντων: Ασύρματα δίκτυα με σταθερούς servers και φορητούς clients Πληροφοριακά Συστήματα για ευμετάβλητες, time-sensitive, πληροφορίες όπως τιμές προϊόντων, πληροφορίες καιρικών συνθηκών κ.α. Καλωδιακή ή δορυφορική τηλεόραση όπου οι συσκευές των τηλεθεατών επιτρέπουν την επικοινωνία με τους severs που κάνουν broadcast. Συστήματα ανάκτησης πληροφορίας όπου υπάρχει μεγάλος αριθμός clients (π.χ. υπηρεσίες καταλόγων και ηλεκτρονικού ταχυδρομείου, help-desk λογισμικού κ.α.) Ένα σύστημα Broadcast disks, εκμεταλλεύεται το βασικό πλεονέκτημα των servers σε τέτοια περιβάλλοντα, το οποίο δεν είναι άλλο από τα κανάλια μεγάλου bandwidth που διαθέτουν για να εκτελούν διαδικασίες broadcast. Έτσι, ένα περιβάλλον που χρησιμοποιεί τον μηχανισμό Broadcast disks, επανειλημμένα και συνεχόμενα κάνει broadcast τα δεδομένα στους clients. Σαν αποτέλεσμα, το κανάλι broadcast γίνεται ένας δίσκος από όπου οι clients μπορούν να βρίσκουν τα δεδομένα που χρειάζονται. Στο άρθρο αυτό, προτείνεται μια νέα έκδοση του παραπάνω μηχανισμού broadcast disks. Πιο συγκεκριμένα, η έκδοση αυτή επικεντρώνεται στην αύξηση της διαθεσιμότητας των δεδομένων που βρίσκονται στους servers. Έτσι έχουμε: Πολλούς δίσκους διαφορετικού μεγέθους και ταχύτητας Τα δεδομένα που είναι πιθανό να ζητηθούν από πολλούς clients γίνονται broadcast περισσότερες φορές από άλλα. -5-

6 Τα παραπάνω έχουν σαν αποτέλεσμα τη δημιουργία μιας ιεραρχίας μνήμης, η οποία εξαρτάται από την αναμενόμενη καθυστέρηση για να αποκτηθεί ένα αντικείμενο (δεδομένο) και από το πόσο συχνά αυτό γίνεται broadcast. Επίσης, η μελέτη αυτή επικεντρώνεται στο να αξιοποιείται η δευτερεύουσα μνήμη των clients για την αποθήκευση των δεδομένων και την μείωση της εξάρτησής τους από το τι θα κάνει broadcast ο server, και παράλληλα να επιτυγχάνεται perfecting από τους clients ώστε να μειώνεται η αναμενόμενη καθυστέρηση των αντικειμένων που αιτούνται. 1.3 Εφαρμογές Ένα από τα γνωστά προβλήματα στα ασύρματα περιβάλλοντα είναι η επιλεκτική αποσύνδεση: Πολλοί clients αποσυνδέονται από τον server επειδή το κόστος είναι πολύ μεγάλο ή επειδή δεν υπάρχει δυνατότητα σύνδεσης στην περιοχή προς την οποία κινείται ο χρήστης. Σε περίπτωση που δεν υπάρχει broadcast των δεδομένων από τον server, οι αποσυνδεμένοι χρήστες είναι αναγκασμένοι να εμπιστεύονται τα δεδομένα που βρίσκονται τοπικά στις συσκευές τους. Ωστόσο, τα δεδομένα αυτά μπορεί να είναι ανεπαρκή για διάφορους λόγους: Πολλές φορές δεν είναι εύκολο να προβλεφθεί με ακρίβεια ποια αντικείμενα θα απαιτηθούν στο μέλλον ώστε αυτά να γίνουν prefetching, και έτσι οι χρήστες θα εξακολουθούν μετά από την αποσύνδεση τους να έχουν πρόσβαση σε αυτά. Πολλά από τα δεδομένα που έχουν προβλεφθεί και έχουν γίνει prefetching πριν την αποσύνδεση του χρήστη, μπορεί να μην είναι πλέον έγκυρα αφού σε αυτά θα έχουν πρόσβαση για write πολλοί άλλοι clients. Τέλος, κάποια αντικείμενα που είναι χρήσιμα για έναν client μπορεί να έχουν δημιουργηθεί την στιγμή που ο client αυτός είναι αποσυνδεμένος από τον server. Πρέπει να αναφερθεί ότι η απόδοση του δικτύου που χρησιμοποιεί τον μηχανισμό broadcast disk δεν εξαρτάται από τον αριθμό των clients (όπως και στα τηλεοπτικά δίκτυα). Έτσι, συμπεραίνουμε ότι το broadcast disk είναι ένας μηχανισμός που διαδίδει τα αντικείμενα στους clients. Μια εφαρμογή των broadcast disk θα μπορούσε να είναι στο σύστημα πληροφοριών κίνησης «Advanced Traffic Information System - ATIS». Ένα τέτοιο σύστημα περιλαμβάνει κάποιους hosts σε μια περιοχή, ενώ οι οδηγοί των αυτοκινήτων έχουν στην διάθεση τους μια συσκευή η οποία τους βοηθάει στο να προσεγγίζουν τον προορισμό τους. Το broadcast μπορεί να σχεδιαστεί ώστε να αποστέλλονται στους οδηγούς πληροφορίες όπως οι σχηματισμοί των οδών ή περιοχές όπου υπάρχει μποτιλιάρισμα. Σε ένα τέτοιο σύστημα μπορεί να υπάρχουν αυτοκίνητα, ωστόσο πολλά από αυτά μπορεί να μην είναι συνδεδεμένα με τον server την περισσότερη ώρα. Από την στιγμή που τα δεδομένα τα οποία πιθανόν απαιτούνται από κάποιους clients είναι ευμετάβλητα, δεν μπορούν να γίνουν prefetching στους clients. Για να πάρουν οι clients κάποια δεδομένα που δεν διαθέτουν τοπικά έχουν δύο επιλογές: Να απαιτήσουν με ερώτημα προς τον server να στείλει αυτά τα δεδομένα Να ακούσουν το κανάλι broadcast ώστε να ανακτήσουν τα δεδομένα που χρειάζονται. Εύκολα γίνεται αντιληπτό ότι ένα σύστημα που βασίζεται στην εξυπηρέτηση των αιτήσεων των χρηστών έχει προβλήματα αυξομείωσης (scalability) aαφού όσο αυξάνεται ο αριθμός των αιτήσεων, τόσο η απόδοση του συστήματος χειροτερεύει. Αντίθετα, τέτοια προβλήματα δεν υπάρχουν κάνοντας broadcast. Τέλος, πρέπει να αναφερθεί ότι αν το bandwidth του καναλιού από όπου γίνεται το broadcast είναι περιορισμένο, τότε μόνο δυναμικές πληροφορίες, όπως μποτιλιαρίσματα, ατυχήματα κτλ θα πρέπει να μεταδίδονται από αυτό. Οι στατικές πληροφορίες, όπως ονόματα οδών, μπορούν να ανακτώνται από την τοπική δευτερεύουσα μνήμη της κάθε συσκευής. 1.4 Broadcast Disks Η κύρια πρόκληση στην τεχνική των broadcast disks όσον αφορά τη μεριά του server, είναι το πώς θα οργανωθούν τα δεδομένα στο broadcast, αφού αυτό έχει ως συνέπεια την μεγάλη (ή μικρή) απόδοση του δικτύου. Επιπλέον, εξαιτίας του γεγονότος ότι το bandwidth του καναλιού είναι περιορισμένο, το να αυξήσουμε την συχνότητα broadcast μερικών αντικειμένων συνεπάγεται και τη μείωση της συχνότητας κάποιων άλλων. Από τη μεριά των clients, η κύρια πρόκληση είναι το πώς θα γίνεται η αντικατάσταση σελίδων (page replacement), με ποιο τρόπο θα γίνεται το prefetching καθώς και ποια αντικείμενα θα γίνονται -6-

7 prefetching. Το τι θα γίνει prefetching είναι κρίσιμο αφού κάποια αντικείμενα γίνονται broadcast συχνότερα από κάποια άλλα. Έτσι, η απόφαση στο τι θα αποθηκευτεί τοπικά, θα πρέπει να λαμβάνεται έχοντας υπόψη: το κόστος της πιθανής επανάληψης της ανάκτησης του ίδιου αντικειμένου και την πιθανότητα να απαιτηθεί ξανά το αντικείμενο αυτό. 1.5 Server Broadcast Program Ιδιότητες των Broadcast Programs Πρέπει να αναφερθεί ότι όταν σε κάποιον client εκτελείται μια εφαρμογή η οποία χρειάζεται κάποιο αντικείμενο, τότε αρχικά το αντικείμενο αυτό αναζητείται στην τοπική cache, και στην συνέχεια (αν δεν βρεθεί τοπικά) ανακτάται περιμένοντας το αντικείμενο αυτό να έρθει στο broadcast. Σε ένα broadcast based πληροφοριακό σύστημα, κάθε server πρέπει να κατασκευάζει ένα πρόγραμμα εκπομπής το οποίο να καλύπτει όσο το δυνατόν περισσότερο τις ανάγκες των clients. Π.χ. αν ξέρουμε ότι ένα σύνολο δεδομένων ζητείται από όλους τους clients, τότε απλά ο server αρκεί να ενώσει όλα αυτά τα δεδομένα και να τα εκπέμψει κυκλικά. Ένα τέτοιο flat πρόγραμμα παρουσιάζεται στο παρακάτω σχήμα. Αν χρησιμοποιηθεί ένα τέτοιο flat πρόγραμμα, η αναμονή για ένα αντικείμενο στο broadcast είναι ίδια για όλα τα αντικείμενα και συγκεκριμένα είναι η μισή περίοδος του broadcast. Ωστόσο, το πρόγραμμα αυτό δε λαμβάνει υπόψη το πόσο σημαντικό θεωρείται το κάθε αντικείμενο από τους clients. Σχήμα 1: flat Broadcast Program Στην προσέγγιση των πολλαπλών Broadcast Disks έχουμε διαφορετική οργάνωση στα αντικείμενα που εκπέμπονται. Έτσι, αντί να έχουμε έναν flat δίσκο, έχουμε πολλούς δίσκους διαφορετικού μεγέθους ο καθένας από τους οποίους έχει διαφορετική ταχύτητα περιστροφής. Φτιάχνοντας γρήγορους τους μικρούς δίσκους και αργούς τους μεγάλους δίσκους, έχουμε μια δομημένη ιεραρχία μνήμης. Άρα, τα αντικείμενα τα οποία αιτούνται πιο συχνά από όλα (hot items) θα τοποθετηθούν στον πιο γρήγορο δίσκο, ενώ τα αντικείμενα με τη λιγότερη ζήτηση (cold items) θα τοποθετηθούν στον πιο αργό δίσκο. Αυτή η οργάνωση θα έχει σαν αποτέλεσμα τη μικρότερη δυνατή καθυστέρηση στα δεδομένα που ζητούνται συχνότερα, αυξάνοντας με τον τρόπο αυτό, την απόδοση του δικτύου. Τέλος, η αναμονή για ένα «κρύο» αντικείμενο θα είναι μεγαλύτερη από την αντίστοιχη στο flat πρόγραμμα. Όπως είπαμε μπορούμε να έχουμε non-flat broadcast προγράμματα. Αυτό γίνεται ως εξής: έχοντας τις πιθανότητες πρόσβασης των clients σε κάθε αντικείμενο, ο server καθορίζει με έναν δίκαιο τρόπο, το bandwidth που θα δοθεί σε κάθε ένα από τα αντικείμενα αυτά. Το πρόγραμμα διάδοσης, λαμβάνοντας υπόψη την κατανομή του bandwidth, πρέπει να κατασκευάζεται με τέτοιο τρόπο ώστε ο μέσος χρόνος άφιξης δύο στιγμιότυπων του ιδίου αντικειμένου να αντιστοιχίζεται με τις ανάγκες των clients. Η τυχαία κατασκευή ενός προγράμματος (τέτοιο ώστε να λαμβάνει υπόψη την κατανομή του broadcast στα αντικείμενα σύμφωνα με τη ζήτηση τους) πιθανόν να μην έχει καλά αποτελέσματα, αφού δεν έχει ως σκοπό τη μείωση της αναμενόμενης καθυστέρησης. Τα παραπάνω, γίνονται πιο κατανοητά μελετώντας το παρακάτω: Παράδειγμα: έστω 3 διαφορετικά προγράμματα διάδοσης για ένα σύνολο δεδομένων που περιλαμβάνει 3 αντικείμενα ιδίου μεγέθους (σχήμα 2). Πρόγραμμα a: το πρώτο πρόγραμμα είναι flat. Πρόγραμμα b: το δεύτερο πρόγραμμα επαναλαμβάνει 2 φορές το αντικείμενο Α αφού αυτό έχει μεγαλύτερη πιθανότητα πρόσβασης από τους clients. Η επανάληψη αυτή γίνεται συνεχόμενη δηλαδή τα στιγμιότυπα του αντικειμένου Α ομαδοποιούνται και τοποθετούνται μαζί στο broadcast. -7-

8 Πρόγραμμα c: το τρίτο πρόγραμμα επαναλαμβάνει 2 φορές το αντικείμενο Α αλλά με τέτοιο τρόπο ώστε να μειώνεται η αναμενόμενη καθυστέρηση. Το πρόγραμμα αυτό αναφέρεται και ως multi-disk broadcast αφού είναι σαν να έχουμε το αντικείμενο A σε έναν μικρότερο δίσκο που περιστρέφεται 2 φορές πιο γρήγορα από ότι ο δίσκος με τα αντικείμενα B και C. Παρακάτω δίνονται σχηματικά τα 3 προγράμματα καθώς επίσης και οι πιθανότητες πρόσβασης (πίνακας 1) σε κάθε αντικείμενο. Σχήμα 2: προγράμματα διάδοσης Access probability Περίπτωση A B C Πίνακας 1 Έχοντας τα προγράμματα και τον πίνακα πιθανοτήτων πρόσβασης των αντικειμένων, μπορούμε εύκολα να υπολογίσουμε τις μέσες καθυστερήσεις των αντικείμενων για κάθε πρόγραμμα: Πρόγραμμα a: PB(Α) = ( ) / 3 + 1/2 = 1.5 PB(B) = ( ) / 3 + 1/2 = 1.5 PB(C) = ( ) / 3 + 1/2 = 1.5 Πρόγραμμα b: PB(A) = ( ) / 4 + 1/2 = 1.25 PB(B) = ( ) / 4 + 1/2 = 2 PB(C) = ( ) / 4 + 1/2 = 2 Πρόγραμμα c: PB(A) = ( ) / 4 + 1/2 = 1 PB(B) = ( ) / 4 + 1/2 = 2 PB(C) = ( ) / 4 + 1/2 = 2 A B C a b c Πίνακας 2 Αφού έχουμε υπολογίσει και τις μέσες καθυστερήσεις για κάθε αντικείμενο, μπορούμε να υπολογίσουμε και τις αναμενόμενες καθυστερήσεις και γενικότερα την απόδοση του κάθε προγράμματος: Περίπτωση 1 Delay(a) = * * * 1.5 = 1.5 Delay(b) = * * * 2 = 1.75 Delay(c) = * * * 2 = 1.67 Περίπτωση 2 Delay(a) = 0.5 * * * 1.5 = 1.5 Delay(b) = 0.5 * * * 2 = 1.63 Delay(c) = 0.5 * * * 2 = 1.5 Περίπτωση 3 Delay(a) = 0.75 * * * 1.5 = 1.5 Delay(b) = 0.75 * * * 2 = 1.44 Delay(c) = 0.75 * * * 2 = 1.25 Περίπτωση 4 Delay(a) = 0.9 * * * 1.5 = 1.5 Delay(b) = 0.9 * * * 2 = 1.33 Delay(c) = 0.9 * * * 2 =

9 Περίπτωση 5 Delay(a) = 1 * * * 1.5 = 1.5 Delay(b) = 1 * * 2+0 * 2 = 1.25 Delay(c) = 1 * * * 2 = 1 Expected delay Περίπτωση a (flat program) b (skewed program ) c (broadcast disks) Πίνακας 3: Αναμενόμενη καθυστέρηση - Απόδοση προγραμμάτων Συμπεράσματα - σχολιασμός αποτελεσμάτων Το πρώτο σημείο το οποίο θα πρέπει να υπογραμμίσουμε είναι ότι: για ίδιες πιθανότητες προσπέλασης των αντικειμένων από τους clients, το flat πρόγραμμα έχει την καλύτερη απόδοση δηλαδή την λιγότερη μέση αναμονή. Το γεγονός αυτό είναι αποτέλεσμα του κανόνα που λέει ότι αυξάνοντας τον ρυθμό διάδοσης ενός αντικειμένου, ταυτόχρονα μειώνεται ο ρυθμός διάδοσης των άλλων αντικειμένων. Το δεύτερο σημείο όπου πρέπει να σταθούμε είναι ότι όσο οι πιθανότητες προσπέλασης των αντικειμένων «λοξεύουν», τόσο τα non-flat προγράμματα αποδίδουν καλύτερα. Το τελευταίο σημαντικό συμπέρασμα που βγαίνει μελετώντας τα παραπάνω αποτελέσματα είναι ότι σε καμία περίπτωση το skewed πρόγραμμα δεν αποδίδει καλύτερα από το πρόγραμμα broadcast disks. Επιπρόσθετα, εκτός από την υπεροχή στην απόδοση του προγράμματος broadcast disks σε σχέση με το skewed πρόγραμμα, το broadcast disks έχει και άλλα πλεονεκτήματα. Ένα από αυτά είναι ότι αν χρησιμοποιήσουμε ένα τυχαίο (skewed) πρόγραμμα, δυσκολεύουμε τις τεχνικές prefetching αφού πολλές από αυτές απαιτούν να γνωρίζουν πότε εκπέμπεται ένα αντικείμενο. Επίσης, ένα τέτοιο τυχαίο πρόγραμμα δεν επιτρέπει στους clients να αδρανοποιούνται ώστε να εξασφαλίζουν ενέργεια αφού είναι αναγκασμένοι να «ακούν» το κανάλι broadcast ώστε να βρουν το αντικείμενο που ψάχνουν. Αντίθετα, αν χρησιμοποιηθεί σαν broadcast τεχνική το πρόγραμμα broadcast disks, οι clients μπορούν να ενεργοποιούνται την στιγμή που περνάει το ποθητό αντικείμενο από το κανάλι broadcast. Για τους παραπάνω λόγους καταλήγουμε στο συμπέρασμα ότι το πρόγραμμα διάδοσης πρέπει να έχει τα εξής χαρακτηριστικά: Οι χρόνοι άφιξης των στιγμιότυπων των αντικειμένων στο κανάλι broadcast πρέπει να είναι σταθεροί. Δηλαδή τα αντικείμενα θα περνάνε σε σταθερά χρονικά σημεία στο κανάλι. Πρέπει να υπάρχει μικρός αριθμός ρυθμών μετάδοσης, δηλαδή δίσκων. Πρέπει να υπάρχει μια σταθερή περίοδος μετά την οποία το broadcast πρόγραμμα επαναλαμβάνεται. Προϋπόθεση για τα παραπάνω χαρακτηριστικά είναι ότι όσο γίνεται περισσότερο το διαθέσιμο bandwidth για broadcast, τόσο θα χρησιμοποιείται Διαδικασία παραγωγής των broadcast δίσκων Για να δημιουργήσουμε ένα πρόγραμμα broadcast disks πρέπει να καθορίσουμε τρεις παραμέτρους: Αριθμός των δίσκων: καθορίζει τον αριθμό των διαφορετικών συχνοτήτων κατά τις οποίες τα αντικείμενα εκπέμπονται Αριθμό των σελίδων σε κάθε δίσκο Την συχνότητα κατά την οποία εκπέμπονται τα αντικείμενα. Οι παράμετροι αυτοί καθορίζουν το μέγεθος του broadcast και τον ρυθμό άφιξης των αντικείμενων σε κάθε δίσκο. Για παράδειγμα τοποθετώντας μια σελίδα στον γρήγορο δίσκο θα αυξηθεί ταυτόχρονα η καθυστέρηση των σελίδων που βρίσκονται στους πιο αργούς δίσκους. Το σχήμα 3 παρουσιάζει την διαδικασία παραγωγής ενός προγράμματος διάδοσης broadcast disk. Έστω μια λίστα από σελίδες που διανέμονται σε 3 δίσκους σύμφωνα με τις πιθανότητες προσπέλασης στα αντικείμενα. Συγκεκριμένα οι σελίδες του δίσκου D1 θα εκπέμπονται με διπλάσια συχνότητα από αυτές του δίσκου D2 και τέσσερις φορές από τις σελίδες του δίσκου D3. Επομένως έχουμε: rel_freq(1) = 4, rel_freq(2) = 2, rel_freq(3) = 1. Οι δίσκοι αυτοί χωρίζονται σε έναν αριθμό από block σύμφωνα με τo LCM (Ελάχιστο κοινό πολλαπλάσιο) των συχνοτήτων broadcast των διάφορων δίσκων. -9-

10 Σχήμα 3: Διαδικασία παραγωγής προγράμματος Στο παράδειγμα μας (σχήμα 3) το LCM είναι 4 οπότε: ο δίσκος D3 χωρίζεται σε 4/1 = 4 blocks, ο δίσκος D2 χωρίζεται σε 4/2 = 2 blocks (αφού περιστρέφεται 2 φορές πιο γρήγορα από τον D3) και ο πρώτος δίσκος χωρίζεται σε 4/4 = 1 blocks (αφού αυτός περιστρέφεται 4 φορές πιο γρήγορα από τον D3). Το Broadcast πρόγραμμα είναι αποτέλεσμα τεσσάρων Minor Cycle. Minor cycle είναι η τοποθέτηση ενός block από κάθε δίσκο σε μία ακολουθία. Το πρόγραμμα του παραδείγματος μας, δημιουργεί μια ιεραρχία μνήμης τριών επιπέδων, όπου ο δίσκος D1 είναι το μικρότερο και γρηγορότερο επίπεδο ενώ ο δίσκος D3 είναι το μεγαλύτερο και πιο αργό επίπεδο. Αυτή η τεχνική παραγωγής έχει ως αποτέλεσμα ένα περιοδικό broadcast πρόγραμμα με σταθερούς χρόνους άφιξης. Συμπερασματικά, το πρόγραμμα εκπομπής είναι αποτέλεσμα του παρακάτω αλγόριθμου παραγωγής: 1. Ταξινόμησε τις σελίδες σύμφωνα με την πιθανότητα προσπέλασης (από τις πιο hot στις πιο cold) 2. Χώρισε την ταξινομημένη λίστα των σελίδων σε ομάδες σελίδων έτσι ώστε κάθε ομάδα να έχει όμοια πιθανότητα προσπέλασης. Οι ομάδες αυτές είναι οι δίσκοι εκπομπής. 3. Επίλεξε την συχνότητα (rel_freq) εκπομπής του κάθε δίσκου σύμφωνα με το παρακάτω τρόπο: Έστω οι πιθανότητες προσπέλασης π1,π2,π3, πκ των σελίδων, με π1>π2>π3> >πκ τότε η συχνότητα του j δίσκου για να έχουμε τη βέλτιστη απόδοση θα πρέπει να είναι: Παράδειγμα: d1 με πιθανότητα προσπέλασης 1/2 d2 και d3 πιθανότητα προσπέλασης 1/8 d4 d11 πιθανότητα προσπέλασης 1/32 Άρα έχουμε 3 broadcast disks D1={d1}, D2={d2,d3}, D3={d4,d5,d6,d7,d8,d9,d10,d11} Με συχνότητες: και f 3 = Υπολόγισε το LCM (ελάχιστο κοινό πολλαπλάσιο) των συχνοτήτων 5. Χώρισε των κάθε δίσκο σε έναν αριθμό από chunks (numofchunks = LCM / rel_freq(i)) Παράδειγμα: LCM=4. numofchunks(1)=4/4, numofchunks(2) = 4/2= 2 και numofchunks(3) = 4/1 = 4 6. Κατασκεύασε το πρόγραμμα εκπομπής σύμφωνα με τον παρακάτω αλγόριθμο: Για ι από 0 μέχρι LCM - 1 Για j από 1 μέχρι numofdisks Broadcast chunk (ι mod numofchunk(j)) from disk j Τέλος_επανάληψης Τέλος_Επανάληψης -10-

11 Υπάρχει περίπτωση ένας αριθμός από slots να μην συμπεριληφθούν κατά την διαδικασία παραγωγής, αφού δεν είναι δυνατό να διαιρέσουμε ένα δίσκο στον απαιτούμενο αριθμό blocks. Φυσικά, είναι απαραίτητο αυτά τα slots να μη χαθούν και μπορούν να χρησιμοποιηθούν ώστε: να γίνονται broadcast επιπρόσθετες πληροφορίες όπως indexes, ενημερώσεις κλπ, ή να γίνονται broadcast σελίδες οι οποίες θα ζητούνται από τους clients χρησιμοποιώντας to uplink κανάλι επικοινωνίας με τον server. Επιπλέον, αν είναι μικρός ο αριθμός των δίσκων και ο αριθμός των σελίδων είναι μεγαλύτερος, τότε τα slots που μένουν αχρησιμοποίητα είναι πολύ λίγα (μπορεί και κανένα) 1.6 Client Cache Management Παρόλο που όλα τα αντικείμενα εκπέμπονται από το broadcast, υπάρχει η ανάγκη οι clients να ακούν το κανάλι broadcast ώστε να αποθηκεύουν τοπικά τα αντικείμενα που κρίνουν αυτοί. Έτσι, αν κάποιο αντικείμενο εκπέμπεται σε μεγάλα χρονικά διαστήματα και το αντικείμενο αυτό έχει μεγάλη πιθανότητα προσπέλασης από έναν συγκεκριμένο client, θα είναι σωστό το αντικείμενο αυτό να αποθηκευτεί στην cache του client. Η τεχνική αυτή θα μειώσει και το εξής πρόβλημα: «αν αυξήσουμε το broadcast για ένα αντικείμενο, βλάπτουμε ταυτόχρονα το broadcast των άλλων αντικειμένων». Σε ένα συνηθισμένο μηχανισμό cached based, κάθε client αποθηκεύει στην cache του τα δεδομένα που είναι πιο hot για αυτόν. Μια τέτοια προσέγγιση θα χειροτέρευε την απόδοση ενός προγράμματος broadcast disks. Αυτό συμβαίνει επειδή σε ένα περιβάλλον broadcast disks, τα αντικείμενα δεν ισαπέχουν από τον client. Οι παρακάτω παράγοντες κάνουν ένα πρόγραμμα broadcast disks μη βέλτιστο για συγκεκριμένο client: Οι πιθανότητες προσπέλασης για κάποιο αντικείμενο που δίνει ο client στον server δεν είναι σωστές Οι πιθανότητες προσπέλασης μπορούν να αλλάζουν με την πάροδο του χρόνου O server δίνει υψηλότερη προτεραιότητα στις ανάγκες των άλλων clients Ο server ίσως θα πρέπει να μοιράσει το broadcast για να καλύψει τις ανάγκες ενός μεγάλου αριθμού clients, και έτσι ένας άλλος client να περιμένει ένα μεγάλο χρονικό διάστημα ώστε να βρει το αντικείμενο που χρειάζεται. Για τους παραπάνω λόγους, οι clients δεν πρέπει να αποθηκεύουν απλά μόνο τα πιο hot αντικείμενα, αλλά να αποθηκεύουν τα αντικείμενα για τα οποία η πιθανότητα προσπέλασης τους από τον συγκεκριμένο client να είναι αρκετά μεγαλύτερη από τον ρυθμό εμφάνισης του αντικείμενου στο broadcast. Για παράδειγμα, αν υπάρχει μια σελίδα Π που προσπελάζεται συχνά μόνο από τον client C, τότε η σελίδα αυτή θα κριθεί από τον server σαν μη σημαντική και έτσι ο C για να αποφύγει την μεγάλη καθυστέρηση, θα αποθηκεύσει τοπικά την σελίδα Π. Αντίθετα, μια σελίδα Ρ που προσπελάζεται συχνά από πολλούς clients, θα εκπέμπεται από έναν πολύ γρήγορο δίσκο και έτσι δεν υπάρχει λόγος η σελίδα P να αποθηκευτεί τοπικά. Έτσι, οδηγούμαστε στην ανάγκη υιοθέτησης ενός μοντέλου που βασίζεται στο κόστος αντικατάστασης σελίδων. Μια κλασική πολιτική αντικατάστασης σελίδων (πχ LRU) αντικαθιστά την σελίδα η οποία έχει τη μικρότερη πιθανότητα προσπέλασης και βρίσκεται στην cache. Μια απλή τεχνική αντικατάστασης σελίδων που βασίζεται στο κόστος είναι αυτή που αντικαθιστά την σελίδα η οποία έχει το μικρότερο λόγο μεταξύ της πιθανότητας προσπέλασής της και της συχνότητάς της στο κανάλι του broadcast. Ο λόγος αυτός καλείται PIX. Παράδειγμα PIX: Έστω μια σελίδα Α προσπελάζεται με 1% από έναν συγκεκριμένο client και καταλαμβάνει στο broadcast το 1% του χρόνου. Έστω μια σελίδα Β η οποία προσπελάζεται με 0.5% και η συγκεκριμένη σελίδα καταλαμβάνει το 0.1% του συνολικού χρόνου στο broadcast. Έχουμε PIX(A) = 1 και PIX(Β) = 5. Άρα θα αντικατασταθεί η σελίδα Α αφού έχει μικρότερη τιμή PIX. Αυτό συμβαίνει επειδή δεν έχει αξία να έχουμε τοπικά την σελίδα Α (παρόλο που προσπελάζεται πιο συχνά από ότι η B) αφού αυτή μπορεί να βρεθεί με μικρή καθυστέρηση στο broadcast. Αν και το PIX είναι μια ιδανική πολιτική, δεν είναι πρακτική αφού απαιτεί: α) Επακριβή γνώση σχετικά με τις πιθανότητες προσπέλασης, β) Σύγκριση των τιμών PIX για όλες τις σελίδες που βρίσκονται τοπικά την στιγμή της πιθανής αντικατάστασης. Έτσι, προτείνεται μια άλλη πολιτική που καλείται LIX η οποία είναι μια παραλλαγή της πολιτικής LRU. Θυμίζουμε ότι η πολιτική LRU -11-

12 διατηρεί την cache σαν μια συνδετική λίστα σελίδων και όταν μια σελίδα προσπελάζεται, τότε αυτή πηγαίνει στην κορυφή της λίστας, δηλαδή αντικαθίστανται οι σελίδες που έχουν πολύ ώρα να χρησιμοποιηθούν. Όταν έχουμε κάποιο miss, δηλαδή όταν ψάχνουμε κάτι στην cache και δεν το βρίσκουμε, τότε αντικαθιστούμε την τελευταία σελίδα της λίστας με τη νέα. Η πολιτική LIX διατηρεί έναν αριθμό από λίστες, μία για κάθε δίσκο. Όταν μια σελίδα έρχεται στην cache τότε η σελίδα αυτή εισέρχεται στον αντίστοιχο δίσκο. Η κάθε λίστα ταξινομείται με τρόπο όμοιο με αυτόν της LRU, δηλαδή την πιθανότητα προσπέλασης (L) των σελίδων που υπολογίζεται σύμφωνα με το ιστορικό των προσπελάσεων. Έτσι, όταν έχουμε hit, η σελίδα τοποθετείται στην αρχή της λίστας στην οποία ανήκει, ενώ όταν έχουμε miss, τότε υπολογίζονται οι τιμές lix μόνο για τις σελίδες που βρίσκονται τελευταίες στις λίστες και αντικαθίσταται η σελίδα με τη μικρότερη lix value. Η νέα σελίδα τοποθετείται στην κατάλληλη λίστα. Για το λόγο αυτό οι λίστες της πολιτικής αυτής δεν έχουν σταθερό μήκος. Για τον υπολογισμό των LIX values των υποψήφιων προς αντικατάσταση σελίδων, διαιρούμε το L με το X που είναι η συχνότητα broadcast της σελίδας. Παράδειγμα LIX: Αν έχουμε 2 δίσκους, τότε η cache διατηρείται σαν 2 λίστες. Παρακάτω ακολουθεί σχηματικά ένα παράδειγμα αντικατάστασης (Σχήμα 4): Σχήμα 4: παράδειγμα αντικατάστασης Για την μελέτη της απόδοσης των PIX και LIX πολιτικών, έχει υλοποιηθεί ένα σύστημα προσομοίωσης, το οποίο αποτελείται από έναν server, ο οποίος πραγματοποιεί το broadcast και έναν client, ο οποίος ζητάει σελίδες με τυχαίο τρόπο. Η σύγκριση πραγματοποιήθηκε με τις εξής παραμέτρους: Μέγεθος cache: 500 σελίδες Μέγεθος της βάσης δεδομένων σελίδων του server: 5000 σελίδες Στο σχήμα 5 παρουσιάζεται η σύγκριση της πολιτικής PIX με την πολιτική P η οποία βασίζεται απλά στην πιθανότητα προσπέλασης των σελίδων και όχι στην συχνότητα που αυτές γίνονται broadcast. Το σχήμα αυτό δείχνει τους χρόνους απόκρισης σε μονάδες broadcast, δηλαδή σε χρόνο broadcast μιας σελίδας (οι σελίδες έχουν ίδιο μέγεθος) για μια τυχαία αίτηση σελίδας από τον client. Τα αποτελέσματα της προσομοίωσής μας λαμβάνουν υπόψη τον θόρυβο, δηλαδή την πιθανότητα της σελίδας να τοποθετηθεί σε λάθος δίσκο (μια σελίδα τοποθετήθηκε σε αργό δίσκο ενώ θα έπρεπε να τοποθετηθεί σε ένα γρήγορο 0% θόρυβος όλα τα αντικείμενα έχουν τοποθετηθεί σωστά) και το Δ, το οποίο δείχνει πόσο γρήγορα περιστρέφονται οι δίσκοι. Πιο συγκεκριμένα, αν Δ=0, όλοι οι δίσκοι (D1,D2,D3) περιστρέφονται με την ίδια ταχύτητα (flat πρόγραμμα), αν Δ=5, τότε ο δίσκος D1 περιστρέφεται 2*Δ+1 = 2*5+1 = 11 φόρες πιο γρήγορα από τον D3. Βλέπουμε ότι το μοντέλο PIX έχει καλύτερη απόδοση από τον μοντέλο P όσο ο θόρυβος αυξάνεται, ενώ για Δ=0, το μοντέλα έχουν ίδια απόδοση. Επίσης, για μηδενικό θόρυβο, τα μοντέλα έχουν σχεδόν την ίδια απόδοση. Έτσι συμπεράνουμε ότι το PIX δεν επηρεάζεται τόσο πολύ από τον θόρυβο. Στο σχήμα 6 παρουσιάζεται η -12-

13 κατανομή των προσπελάσεων από τον client. Αξίζει να σημειωθεί ότι ο αργός δίσκος, δηλαδή ο δίσκος D3 προσπελάζεται ελάχιστα όταν χρησιμοποιείται το μοντέλο PIX. Σχήμα 6: Access locations Σχήμα 5: P vs PIX Στο σχήμα 5 παρουσιάζεται συγκριτικά οι αποδόσεις των PIX, LIX, LRU και L. Το μοντέλο L, συμπεριφέρεται ακριβώς όπως το LIX, χωρίς όμως να λαμβάνει υπόψη τις διαφορετικές συχνότητες broadcast των σελίδων. Η παράμετρος του θορύβου είναι 30% και είναι σταθερή. Όπως περιμέναμε, το μοντέλο PIX έχει καλύτερη απόδοση αφού έχει γνώση των πιθανοτήτων προσπέλασης των σελίδων. Επίσης, παρατηρούμε ότι για ένα flat πρόγραμμα (Δ=0), τα 3 μοντέλα έχουν παρόμοια απόδοση. Σε αυτό το σημείο παρατηρούμε ότι το LIX έχει καλύτερη απόδοση από τις άλλες 2 προσεγγίσεις οι οποίες φαίνονται ότι επηρεάζονται πάρα πολύ από τις αυξήσεις του Δ, πράγμα που δεν συμβαίνει με το LIX. Τέλος, στο σχήμα 6 παρατηρούμε την κατανομή προσπελάσεων των σελίδων από των client, δηλαδή από πού ανακτά τις σελίδες ο client. Σχήμα 5: Απόδοση μοντέλων Σχήμα 7: Page access location disk D5 1.7 Prefetching Το περιβάλλον των broadcast disks ευνοεί το prefetching αφού όλες οι σελίδες παρουσιάζονται στους clients μέσω του broadcast. Έτσι οι clients μπορούν να «κατεβάσουν» κάποιες από αυτές τις σελίδες ώστε να τις χρησιμοποιήσουν στο μέλλον. Ωστόσο, το prefetching είναι μια διαδικασία που εμπεριέχει ρίσκο στα παραδοσιακά συστήματα αφού αυτό φορτώνει επιπλέον του διαμοιραζόμενους πόρους και μπορεί να έχει επιπτώσεις στην απόδοση του δικτύου. Αντίθετα, όταν γίνεται prefetching σε ένα σύστημα όπως οι broadcast disks, η απόδοση δεν επηρεάζεται. -13-

14 1.7.1 Η πολιτική Tag Team Σε ένα περιβάλλον Broadcast Disk, ο σκοπός του prefetching είναι η βελτίωση του χρόνου απόκρισης των clients που «κατεβάζουν» αντικείμενα από το broadcast. Η βελτίωση αυτή μπορεί να πραγματοποιηθεί με δύο τρόπους: Βελτιώνοντας το hit rate των client Μειώνοντας το κόστος των cache misses Όπως έχουμε δει ήδη σε προηγούμενη παράγραφο τα μοντέλα PIX και LIX καταφέρνουν να διατηρούν μια ισορροπία σε αυτούς τους δύο παράγοντες. Συγκεκριμένα, και τα δύο μειώνουν το hit rate ώστε να αποφεύγουν την προσπέλαση στους αργούς δίσκους. Ωστόσο, τα PIX και LIX, αν αποθηκεύσουν μια σελίδα στην cache ενός client, τότε αυτό θα είναι αποτέλεσμα ενός miss. Το prefetching έχει ως αποτέλεσμα την αποθήκευση σελίδων στην cache χωρίς να αναζητηθεί το αντικείμενο και απλά αποβλέπει στην μελλοντική χρήση του αντικείμενου. Το όφελος του prefetching φαίνεται από το παρακάτω παράδειγμα: Έστω ότι κάποιος client θέλει πρόσβαση σε δύο σελίδες (x και y) με ίδια πιθανότητα (=0.5) και έχει μόνο ένα cache slot ελεύθερο ώστε να αποθηκεύσει μια από τις δύο σελίδες. Επίσης, υποθέτουμε ότι ο server τοποθετεί τις δυο αυτές σελίδες με 180 μοίρες διαφορά (όπως φαίνεται στο σχήμα 8). Σε μία στρατηγική η οποία αποθηκεύει στη cache σελίδες μόνο κατόπιν miss, μόνο μία σελίδα (για παράδειγμα η x) θα αποθηκευόταν τοπικά. Έτσι, μπορεί να χρησιμοποιηθεί μελλοντικά με μηδενική καθυστέρηση η σελίδα x αφού αυτή βρίσκεται στην cache. Αν κάποια στιγμή στη συνέχεια ο client χρειαστεί την y, τότε θα περιμένει στο broadcast την y και θα αντικαταστήσει την x με την y. Η y θα μείνει στην cache μέχρι να ζητηθεί ξανά η x. Με αυτή τη στρατηγική, η αναμενόμενη καθυστέρηση θα είναι το μισό το συνολικού κύκλου του δίσκου. Μπορούμε να μειώσουμε το παραπάνω κόστος με μια απλή στρατηγική η οποία καλείται tag-team και η οποία λειτουργεί ως εξής: γίνεται prefetching το x στην cache όταν αυτό φτάσει στο broadcast και παραμένει εκεί μέχρι να έρθει το y το οποίο όταν φτάσει αντικαθιστά το x. Αυτή η διαδικασία συνεχίζεται και έχει ως αποτέλεσμα το μέσο κόστος να μειωθεί και να γίνει το 1/8 του κύκλου του δίσκου και έτσι να έχουμε πολύ μεγαλύτερο hit rate. Επίσης, πρέπει να αναφερθεί ότι με την demanddriven στρατηγική, ένα miss μπορεί να γίνει σε οποιοδήποτε σημείο του broadcast. Αντίθετα, χρησιμοποιώντας την tag-team στρατηγική, miss μπορεί να γίνει στο μισό του broadcast. Για παράδειγμα, ένα miss του x μπορεί να συμβεί μόνο από τη στιγμή που έχει φτάσει το y, και έχει αντικαταστήσει το x μέχρι τη στιγμή που θα φτάσει ξανά το x, και θα αντικαταστήσει με την σειρά του το y. Έτσι μειώνεται αρκετά το κόστος του cache miss. Ο μηχανισμός αυτός μπορεί να γενικευτεί σε περισσότερους δίσκους και διαφορετικά μεγέθη cache Η πολιτική PT Σχήμα 8 Μια ακόμη απλή πολιτική (heuristic prefetching) είναι η PT. Το heuristic PT έχει παρόμοια απόδοση με τη στρατηγική tag-team, ωστόσο είναι αρκετά πιο απλή (η πολιτική tag-team είναι δύσκολο να γενικευτεί για περισσότερους δίσκους). Η PT είναι μια δυναμική πολιτική, η οποία εκτελεί έναν υπολογισμό για κάθε σελίδα, όταν αυτή φτάσει στο broadcast. Με τον τρόπο αυτό, θα υπολογίσει αν αυτή η σελίδα έχει μεγαλύτερη αξία από αυτές που βρίσκονται στην cache. Η πολιτική αυτή χρησιμοποιεί μια μέτρηση για την αξιολόγηση των σελίδων η οποία ονομάζεται pt value. Η μέτρηση αυτή είναι αποτέλεσμα της πιθανότητας προσπέλασης της σελίδας σε συνάρτηση με τον χρόνο που θα χρειαστεί ώστε η σελίδα αυτή να εμφανιστεί ξανά στο broadcast. Αν η pt value της σελίδας (Α) που ήρθε στο broadcast είναι μεγαλύτερη από την μικρότερη pt value της σελίδας (Β) που βρίσκεται στην cache, τότε η σελίδα Α θα αντικαταστήσει στην cache την σελίδα B. -14-

15 Η PT value είναι όμοια με την pix value που περιγράφηκε πριν, ωστόσο η pt value αλλάζει δυναμικά μετά από κάθε «tick» του broadcast. Αν χρησιμοποιούσαμε σαν πολιτική prefetching την pix value, τότε η cache θα γέμιζε γρήγορα με τις πιο χρήσιμες σελίδες (σύμφωνα με το pix value) και στη συνέχεια θα παρέμενε αμετάβλητη. Αντίθετα, χρησιμοποιώντας το pt value, η κατάσταση της cache μπορεί να αλλάξει μετά από κάθε εκτέλεση ενός «tick» broadcast. Οι διαφορές μεταξύ του pt value και του pix value θα περιγραφούν καλύτερα με το παράδειγμα που ακολουθεί: Έστω οι σελίδες A,B,C και ότι η σελίδα Α έχει διπλάσια συχνότητα προσπέλασης από τις σελίδες Β και C. Επίσης, έστω ότι οι σελίδες A και Β γίνονται broadcast δύο φορές ανά περίοδο ενώ η σελίδα C μόνο μια φορά ανά περίοδο. Οι σελίδες Α και C θα έχουν ίδια pix value η οποία θα είναι διπλάσια από την pix value της σελίδας B (πίνακας 4). Αντίθετα, η pt value των σελίδων αλλάζει με την πάροδο του χρόνου. Το σχήμα 10 δείχνει τις διακυμάνσεις των pt values για τις τρεις σελίδες, ενώ η γραμμή που υπάρχει στο κάτω μέρος του σχήματος δείχνει το «θύμα» που αποχωρεί από την cache. Πίνακας 4 Σχήμα 10: pt values vs time Εξαιτίας αυτής της λειτουργίας, η πολιτική PT «διώχνει» από την cache τις σελίδες με μεγάλη πιθανότητα προσπέλασης, λίγο πριν αυτές ξαναεμφανιστούν στο broadcast. Στα πειράματα προσομοίωσης που πραγματοποιήθηκαν αποδείχτηκε ότι η πολιτική PT έχει την ίδια απόδοση με αυτή της πολιτικής tag-team. Το σχήμα 11 δείχνει τα αποτελέσματα εκτέλεσης των PIX και PT σε έναν flat disk που περιλαμβάνει 3000 σελίδες, από τις οποίες ο client προσπελάζει τις 1000 σύμφωνα με την κατανομή Zipf. Το μέγεθος της cache αυξάνεται από 1 (δεν μπορεί να γίνει prefetching) μέχρι 1000 σελίδες (δεν χρειάζεται prefetching αφού όλες οι σελίδες χωρούν στην cache). Στο σχήμα παρατηρούμε ότι όταν το μέγεθος της cache είναι 500 σελίδες, ο χρόνος απόκρισης του PT είναι μίσος από αυτόν του PIX Σχήμα 11: PT vs PIX για flat πρόγραμμα -15-

16 1.8 The Read/Write Case Ένα ερώτημα που πρέπει να απαντηθεί είναι το τι γίνεται στην περίπτωση που το broadcast πρέπει να αλλάξει. Έτσι πρέπει να ληφθούν υπόψη οι τρεις παρακάτω αλλαγές: Πιθανές αλλαγές στα αντικείμενα που γίνονται broadcast Αναδιοργάνωση του προγράμματος broadcast, είτε αλλάζοντας την κατανομή των σελίδων στους δίσκους είτε αλλάζοντας το σχήμα του δίσκου Πιθανές αλλαγές στα περιεχόμενα των δίσκων πρόσθεση κάποιων σελίδων, αφαίρεση κάποιον άλλων σελίδων Αλλαγές στα αντικείμενα μπορούν να πραγματοποιηθούν όταν ένας συνδεμένος client ενημερώνει το αντικείμενο (αν υπάρχει uplink κανάλι), ή όταν η εφαρμογή που εκτελεί το Broadcast παράγει νέα δεδομένα. Οι αλλαγές αυτές μπορεί να είναι χρήσιμες για άλλους clients (συνδεμένους και μη) οι οποίοι, στο παρελθόν έχουν αποθηκεύσει τοπικά το αντικείμενο το οποίο έχει ενημερωθεί. Έτσι υπάρχει η περίπτωση κάποιοι clients να έχουν παλιά έκδοση κάποιων αντικειμένων. Οι broadcast disks μπορούν να χρησιμοποιηθούν σαν μέσο διάδοσης των νέων εκδόσεων ή ακύρωσης των παλιών εκδόσεων. Επίσης, είναι πιθανό το περιεχόμενο ενός δίσκου να πρέπει να αλλάξει. Για παράδειγμα, έστω ότι μια τιμή ενός προϊόντος δεν γίνεται broadcast. Όταν η τιμή αλλάξει, είναι πιθανό αυτή να χρειαστεί τοποθέτηση στο broadcast, αφού θεωρείται πλέον πιο ενδιαφέρουσα από τους clients. Αντίστοιχα, αν κάποια τιμή εκπέμπεται ήδη από το broadcast και αυτή αλλάξει, είναι πιθανό να χρειαστεί να αλλάξει σημείο στο broadcast (π.χ. να τοποθετηθεί σε πιο γρήγορο δίσκο) αφού το ενδιαφέρον των clients έχει και αυτό αλλάξει. Επίσης, οι περιπτώσεις read και write εισάγουν ένα επιπλέον πρόβλημα στην συνέπεια των δεδομένων. Συγκεκριμένα, αν οι σελίδες που γίνονται broadcast ενημερώνονται σε ακαθόριστα σημεία του broadcast, πως γίνεται ο client να εγγυηθεί ποια σελίδα είναι έγκυρη από αυτές που βρίσκει στο broadcast; Οι τεχνικές concurrency control που χρησιμοποιούνται DBMSes δεν μπορούν να φανούν χρήσιμες σε ένα περιβάλλον broadcast disks. Έτσι, ανοίγει το θέμα υλοποίησης τεχνικών συνέπειας δεδομένων για δεδομένα που γίνονται broadcast. 1.9 Πειράματα Μελέτη της απόδοσης των Broadcast Disks Σε αυτή την παράγραφο παρουσιάζονται τα πειράματα που πραγματοποιήθηκαν ώστε να μελετηθεί η απόδοση των Broadcast Disks. Η μέτρηση που χρησιμοποιήθηκε στα πειράματα (που είναι και η ιδανική) είναι ο χρόνος απόκρισης των αιτήσεων του client ο οποίος μετριέται σε broadcast units. Πρέπει να αναφερθεί ότι το μέγεθος της βάσης δεδομένων του server ήταν 5000 αντικείμενα, ενώ υπήρχε μόνο ένας client ο οποίος ζητούσε 1000 από αυτά τα αντικείμενα. Επίσης στα πειράματα που έγιναν, χρησιμοποιήθηκε διαφορετικού μεγέθους cache (από 1 έως 500). Οι παράμετροι των πειραμάτων παρουσιάζονται παρακάτω: Think Time: 2.0 ServerDBSize: 5000 Access Range: 1000 Cache size: 50 (5%), 250 (25%), 500 (50%) Δ: 1,2,3,,7 Θ: 0.95 (Παράμετρο κατανομής Zipf) Offset: 0, Cache Size Noise: 0%,15%,30%,45%,60%,75% RegionSize: No caching & 0% Noise Στο πρώτο πείραμα δεν υπήρχε cache στον client και δεν υπήρχε θόρυβος στις πιθανότητες προσπέλασης των αντικειμένων. Στο πείραμα αυτό συγκρίνονται 5 διαφορετικά προγράμματα εκπομπής: το πρώτο έχει 2 δίσκους όπου στον ένα (γρήγορο δίσκο) έχουν τοποθετηθεί τα 500 αντικείμενα ενώ τα υπόλοιπα 4500 αντικείμενα τοποθετήθηκαν στο δεύτερο (αργό) δίσκο (D1(500,4500)). Το δεύτερο πρόγραμμα εκπομπής είχε και αυτό 2 δίσκους με κατανομές αντικειμένων -16-

17 D2(900,4100), το τρίτο πρόγραμμα και αυτό 2 δίσκους με κατανομές αντικειμένων D3(2500, 2500) ενώ το τέταρτο και το 5 πρόγραμμα είχαν 3 δίσκους με κατανομές D4(300, 1200, 3500) και D5(500, 2000, 2500) αντίστοιχα.. Ο χρόνος απόκρισης σε σχέση με την παράμετρο Δ παρουσιάζεται στο σχήμα 12. Παρατηρώντας το σχήμα αυτό φαίνεται ότι το πρόγραμμα D4 έχει την καλύτερη απόδοση, δηλαδή το μικρότερο χρόνο απόκρισης. Επίσης παρατηρούμε ότι για Δ=0 ότι όλα τα προγράμματα έχουν την ίδια απόδοση, πράγμα απόλυτα λογικό αφού στην πραγματικότητα έχουμε μόνο έναν δίσκο (flat πρόγραμμα) Σχήμα 12: Delta vs Response Time No caching & Noise Για αυτό το πείραμα παρουσιάζονται δυο σχήματα (σχήμα 13 & 14). Στο πρώτο σχήμα παρουσιάζεται το πρόγραμμα εκπομπής D3 (βλέπε παράγραφο 1.9.1) με διαφορετικά επίπεδα θορύβου (από 0% μέχρι 75%). Όμοια, στο σχήμα 14 παρουσιάζεται το πρόγραμμα D5. Στα δυο αυτά σχήματα βλέπουμε το πόσο επηρεάζεται η απόδοση αυξάνοντας το ποσοστό του θορύβου και το Δ. Εύκολα καταλαβαίνουμε ότι όταν υπάρχει θόρυβος, η αύξηση του Δ επηρεάζει την απόδοση. Όπως ήταν αναμενόμενο όσο λιγότερος θόρυβος τόσο καλύτερη απόδοση. Σχήμα 13 Σχήμα

18 1.9.3 Caching & Noise Στο πείραμα αυτό χρησιμοποιήθηκε η πολιτική P η οποία αποθηκεύει στην cache τις σελίδες με τη μεγαλύτερη πιθανότητα προσπέλασης. Το μέγεθος της cache ήταν 500. Πρέπει να αναφερθεί ότι η πολιτική P δεν είναι υλοποιήσιμη σε πραγματικά συστήματα αφού απαιτεί γνώση των πιθανοτήτων προσπέλασης, ωστόσο η χρήση της είναι χρήσιμη για την μελέτη της απόδοσης. Η πολιτική P αγνοεί την ύπαρξη των δίσκων και το γεγονός ότι μπορεί να βρει κάτι που ψάχνει στο broadcast πολύ γρήγορα και αποθηκεύει στην cache απλά τις πιο hot σελίδες. Για περισσότερες λεπτομέρειες για την πολιτική P βλέπε παράγραφο 1.6. Στο σχήμα 15 φαίνονται τα αποτελέσματα του πειράματος χρησιμοποιώντας το πρόγραμμα εκπομπής D5. Το σχήμα αυτό έχει σημασία αν συγκριθεί με το σχήμα 14. Αρχικά, παρατηρούμε ότι οι χρόνοι απόκρισης στο σχήμα 15 είναι σε χαμηλότερα επίπεδα (απόλυτα λογικό αφού υπάρχει η cache), ωστόσο, με μια πιο προσεχτική ματιά στα δύο σχήματα, βλέπουμε ότι η περίπτωση χρήσης της cache με την πολιτική P είναι πιο ευαίσθητη στον θόρυβο. Σχήμα 15 Χρησιμοποιώντας την πολίτικη PIX αντί της P στο πείραμα «Caching & Noise» παρατηρούμε ότι τα πράγματα είναι πολύ καλύτερα. Η πολιτική PIX λαμβάνει υπόψη το ότι υπάρχουν σελίδες οι ο οποίες εμφανίζονται πολύ συχνά στο broadcast και έτσι δεν υπάρχει λόγος να τοποθετηθούν στην cache (για περισσότερες λεπτομέρειες βλέπε παράγραφο 1.6). Στο σχήμα 16 παρουσιάζονται τα αποτελέσματα χρησιμοποιώντας την πολίτική PIX. Παρατηρούμε ότι η απόδοση δεν επηρεάζεται από την αύξηση του Δ στις περιπτώσεις που υπάρχει θόρυβος. Φυσικά, σε καμία περίπτωση η ύπαρξη θορύβου δεν έχει σαν αποτέλεσμα την μείωση του χρόνου απόκρισης, ωστόσο το να χειροτερέψει η απόδοση δεν εξαρτάται από την αύξηση του Δ. Σχήμα

19 ΚΕΦΑΛΑΙΟ 2: Περιγραφή του προσομοιωτή Broadcast Disks 2.1 Εισαγωγή Στα πλαίσια αυτής της εργασίας αναπτύχθηκε ένας προσομοιωτής της τεχνικής Broadcast Disks. Αυτή η εφαρμογή προσομοίωσης έχει γραφεί χρησιμοποιώντας τη γλώσσα προγραμματισμού Visual Basic 6 και περιλαμβάνει δύο τμήματα: α. Δημιουργία του προγράμματος εκπομπής και β. τη διαδικασία προσομοίωσης όπου ο client κάνει αιτήσεις προς το server. Στις επόμενες παραγράφους περιγράφονται οι οθόνες της εφαρμογής, έτσι ώστε ο αναγνώστης να είναι σε θέση να εκτελέσει τις δικές του δοκιμές. 2.2 Περιγραφή εικονιδίων της εφαρμογής 1 ο εικονίδιο: Δημιουργία νέας προσομοίωσης 2 ο εικονίδιο: Εισαγωγή των πιθανοτήτων προσπέλασης στο σύστημα. Η κατανομή των πιθανοτήτων προσπέλασης εξαρτάται από την επιλογή του χρήστη στην οθόνη εισαγωγής παραμέτρων 3 ο εικονίδιο: Δημιουργία του προγράμματος (ή προγραμμάτων) εκπομπής 4 ο εικονίδιο: Εμφάνιση της οθόνης εισαγωγής παραμέτρων στο προσκήνιο 5 ο εικονίδιο: Εμφάνιση της οθόνης στατιστικών client στο προσκήνιο 6 ο εικονίδιο: Εμφάνιση της οθόνης της προσομοίωσης στο προσκήνιο 7 ο εικονίδιο: Εμφάνιση των ραβδογραμμάτων της οθόνης κατασκευής προγράμματος 8 ο εικονίδιο: Αποθήκευση των πληροφοριών της οθόνης κατασκευής προγράμματος σε αρχείο 9 ο εικονίδιο: Έξοδος από το πρόγραμμα 2..3 Οθόνη παραμέτρων προσομοίωσης Σχήμα 16 Στην οθόνη εισαγωγής παραμέτρων προσομοίωσης, ο χρήστης του προσομοιωτή μπορεί εισάγει τις παραμέτρους της διαδικασίας δημιουργίας του προγράμματος εκπομπής και της διαδικασίας της προσομοίωσης. Ο χρήστης έχει πρόσβαση στην οθόνη αυτή επιλέγοντας από το βασικό μενού εργαλεία ιδιότητες (Ctrl + A). Συγκεκριμένα ο χρήστης μπορεί από την οθόνη αυτή: Να δηλώσει την κατανομή σύμφωνα με την οποία θα εισάγονται στον προσομοιωτή οι πιθανότητες προσπέλασης των σελίδων. Στην περίπτωση αυτή υπάρχουν τρείς επιλογές: Οι πιθανότητες προσπέλασης ακολουθούν τυχαία κατανομή Οι πιθανότητες προσπέλασης ακολουθούν την κατανομή Zipf. Σε περίπτωση χρήσης της κατανομής αυτής, ο χρήστης πρέπει να εισάγει την παράμετρο θ της συγκεκριμένης κατανομής Οι πιθανότητες προσπέλασης των σελίδων εισάγονται από αρχείο κειμένου. Ο χρήστης επιλέγει από το γνωστό open file dialog των Windows, το αρχείο κειμένου όπου υπάρχουν οι πιθανότητες προσπέλασης των σελίδων (μια σε κάθε γραμμή του αρχείου) Να δηλώσει τον αριθμό σελίδων που θα είναι διαθέσιμες στο πρόγραμμα εκπομπής που θα δημιουργηθεί Να δηλώσει την συχνότητα (ταχύτητα) του πιο αργού δίσκου Να δηλώσει την παράμετρο δέλτα της μεθόδου Broadcast Disks (Βλέπε παράγραφο1.6) Να δηλώσει το ποσοστό θορύβου σύμφωνα με το οποίο ο client, θα κάνει αιτήσεις προς τις σελίδες του προγράμματος. Αν το ποσοστό αυτό είναι 0% τότε οι πιθανότητες αιτήσεις σελίδων θα είναι ίδιες με τις πιθανότητες προσπέλασης των αντικειμένων σύμφωνα με τις οποίες έχει κατασκευαστεί το πρόγραμμα εκπομπής. Να επιλέξει τον αριθμό των δίσκων που θα περιλαμβάνει το πρόγραμμα εκπομπής. Υπάρχουν δύο διαθέσιμοι τρόποι: -19-

20 Ο χρήστης να δηλώσει ότι επιθυμεί την εύρεση του βέλτιστου αριθμού δίσκων. Ο βέλτιστος αριθμός δίσκων υπολογίζεται με έναν νέο αλγόριθμο που δεν περιλαμβάνεται στο paper του πρώτου κεφαλαίου, προέκυψε μετά από έρευνα και παρουσιάζεται αναλυτικά στο κεφάλαιο 4. Ο χρήστης να δηλώσει το πόσους δίσκους επιθυμεί να έχει το πρόγραμμα εκπομπής. Αυτή η περίπτωση περιλαμβάνει το ρίσκο (από τη μεριά του χρήστη), να υπάρχουν δίσκοι οι οποίοι δεν έχουν καμία σελίδα, ή να προκύψουν δίσκοι με την ίδια συχνότητα. Φυσικά μπορεί να μειώσει το πλήθος τους ανάλογα. Να επιλέξει ποια μέθοδος υπολογισμού συχνοτήτων δίσκων θα χρησιμοποιηθεί κατά τη διαδικασία παραγωγής των προγραμμάτων εκπομπής. Συγκεκριμένα υπάρχουν δύο τρόποι υπολογισμού συχνοτήτων: Ο πρώτος είναι ο βέλτιστος και περιγράφεται στην παράγραφο όπου δεν υπήρχε στο ανάλογο paper αλλά είναι η δημοφιλέστερη μέθοδος που εντοπίσαμε σε πολλά άλλα paper συνήθως με το όνομα «Νόμος της Ρίζας». Ο δεύτερος είναι αυτός που χρησιμοποιεί την παράμετρο δέλτα και περιγράφεται στην παράγραφο 1.6. Να επιλέξει αν το πρόγραμμα θα κατασκευαστεί με τον αλγόριθμο που παρουσιάστηκε στην παράγραφο (χρήση chunks) ή θα κατασκευαστεί χρησιμοποιώντας ένα νέο αλγόριθμο παραγωγής (χωρίς τη χρήση chunks) ο οποίος προέκυψε μετά από έρευνα και προτείνεται στο κεφάλαιο 4. Το κίνητρο της κατασκευής του ήταν η αποφυγή της δημιουργίας chunks αφού πολλές φορές αυτό το βήμα έχει ως αποτέλεσμα την δημιουργία chunks με μεγαλύτερο πλήθος σελίδων από τις διαθέσιμες και κατά συνέπεια τη προσθήκη κενών στα προγράμματα εκπομπής. Μάλιστα ο αλγόριθμος με χρήση chunks ακόμα και με λίγους δίσκους διαφορετικών αλλά μη διαιρετών μεταξύ τους συχνοτήτων μπορεί να δώσει πολύ μεγάλο πλήθος κενών. Ο χρήστης μπορεί να δηλώσει την κατασκευή και των δυο προγραμμάτων εκπομπής (με ή χωρίς chunks) Όλες οι παραπάνω παράμετροι αφορούν τη δημιουργία του προγράμματος εκπομπής. Ο χρήστης έχει τη δυνατότητα από την οθόνη αυτή να ορίσει και τις παραμέτρους της προσομοίωσης. Συγκεκριμένα, μπορεί: Να δηλώσει το πόσες φορές επιθυμεί να μεταδοθεί το πρόγραμμα εκπομπής κατά την προσομοίωση. Να δηλώσει το πόσο συχνά ο client θα παράγει αιτήσεις προς τον server. Να δηλώσει το θόρυβο και το ρυθμό αύξησής του στο διάστημα επηρεάζοντας έτσι το πλήθος των καμπυλών που θα κατασκευαστούν στο γράφημα «μέσοι χρόνοι απόκρισης με θόρυβο». Για παράδειγμα αν δηλώσουμε την τιμή 50, η εφαρμογή θα μας δημιουργήσει τρεις καμπύλες για: α. 0% θόρυβο β. 50% θόρυβο γ.100% θόρυβο. Να δηλώσει ποιο πρόγραμμα εκπομπής θα χρησιμοποιηθεί κατά την προσομοίωση. Συγκεκριμένα υπάρχουν τρεις επιλογές: Σχήμα

21 Χρήση του προγράμματος εκπομπής με chunks. Η επιλογή αυτή είναι διαθέσιμή μόνο όταν ο χρήστης έχει επιλέξει τη δημιουργία του προγράμματος εκπομπής με χρήση chunks Χρήση του προγράμματος εκπομπής χωρίς chunks. Η επιλογή αυτή είναι διαθέσιμή μόνο όταν ο χρήστης έχει επιλέξει τη δημιουργία του προγράμματος εκπομπής χωρίς chunks Χρήση flat προγράμματος εκπομπής (Υπάρχει μόνο ένας δίσκος) 2.4 Οθόνη κατασκευής προγραμμάτων εκπομπής Η οθόνη κατασκευής προγραμμάτων εκπομπής αποτελεί τη βασική οθόνη της εφαρμογής της προσομοίωσης. Εδώ υπάρχει το κύριο μενού από όπου ο χρήστης έχει πρόσβαση στις υπόλοιπες οθόνες της εφαρμογής. Για να δημιουργηθεί το πρόγραμμα εκπομπής (ή τα προγράμματα εκπομπής) απαιτούνται δύο βήματα: Την εισαγωγή πιθανοτήτων προσπέλασης επιλέγοντας βασικό μενού Πρόγραμμα εκπομπής Εισαγωγή πιθανοτήτων προσπέλασης (F5). Την κατασκευή του προγράμματος εκπομπής επιλέγοντας βασικό μενού Πρόγραμμα εκπομπής Κατασκευή προγράμματος εκπομπής (F6) Επίσης, αφού έχουμε κατασκευάσει το πρόγραμμα εκπομπής, μπορούμε να αποθηκεύσουμε τις πληροφορίες που παρουσιάζονται στην οθόνη αυτή σε αρχείο κειμένου επιλέγοντας βασικό μενού πρόγραμμα εκπομπής αποθήκευση αποτελεσμάτων (Ctrl + S) Πίνακας πιθανοτήτων προσπέλασης των σελίδων Πίνακας δίσκων εκπομπής Πρόγραμμα εκπομπής με chunks Πρόγραμμα εκπομπής χωρίς chunks Σχήμα 18 Όπως φαίνεται στο σχήμα 18, η οθόνη κατασκευής προγραμμάτων εκπομπής χωρίζεται σε τρία μέρη: -21-

22 Πίνακας πιθανοτήτων προσπέλασης των σελίδων: Στον πίνακα αυτό παρουσιάζεται μια σελίδα σε κάθε γραμμή του πίνακα. Η πρώτη στήλη του πίνακα παρουσιάζει το όνομα της σελίδας, η δεύτερη στήλη περιλαμβάνει τις πιθανότητες προσπέλασης σύμφωνα με τις οποίες θα κατασκευαστεί το πρόγραμμα εκπομπής, η τρίτη στήλη περιλαμβάνει τις κοινωνικοποιημένες πιθανότητες προσπέλασης (το άθροισμα τους δίνει μονάδα) και τέλος η τέταρτη στήλη παρουσιάζει τον δίσκο στον οποίο ανήκει η συγκεκριμένη σελίδα. Πίνακας δίσκων εκπομπής: Ο πίνακας αυτός διαθέτει μια γραμμή για κάθε δίσκο. Η πρώτη στήλη εμφανίζει το όνομα του δίσκου, η δεύτερη στήλη παρουσιάζει σε ποιο διάστημα πιθανοτήτων ανήκουν οι σελίδες αυτού του δίσκου, η τρίτη στήλη παρουσιάζει την συχνότητα (ταχύτητα) του δίσκου, η τέταρτη και η πέμπτη στήλη δείχνει πόσα chunks και πόσες σελίδες αντίστοιχα ανήκουν σε αυτόν το δίσκο και τέλος η τελευταία στήλη παρουσιάζει τα ονόματα των chunks που ανήκουν σε αυτό το δίσκο. Προγράμματα εκπομπής: Στο κάτω μέρος της οθόνης εμφανίζονται τα προγράμματα εκπομπής που έχουν κατασκευαστεί. Το αν θα δημιουργηθεί ένα πρόγραμμα εξαρτάται από τις παραμέτρους του χρήστη στην οθόνη εισαγωγής παραμέτρων. Έτσι, αν ο χρήστης έχει επιλέξει τη δημιουργία του προγράμματος εκπομπής με chunks στο κάτω μέρος της οθόνης εμφανίζονται δύο προγράμματα εκπομπής. Τα δύο αυτά προγράμματα, στην ουσία πρόκειται για το ίδιο πρόγραμμα, απλά το πρώτο είναι το πρόγραμμα των chunks και το δεύτερο είναι το πρόγραμμα των σελίδων που κατανέμονται σε chunks. Αν ο χρήστης έχει επιλέξει τη δημιουργία προγράμματος εκπομπής χωρίς την χρήση chunks, τότε στην οθόνη θα παρουσιαστεί και το πρόγραμμα εκπομπής που κατασκευάζεται με τον αλγόριθμο που αποφεύγει το βήμα δημιουργίας των chunks. Θα πρέπει να αναφερθεί ότι ο χρήστης μπορεί να δηλώσει ότι επιθυμεί τη δημιουργία και των δύο προγραμμάτων εκπομπής και έτσι στην οθόνη αυτή να παρουσιαστούν και τα δύο προγράμματα. Σε αυτό το σημείο πρέπει να αναφέρουμε τα εξής για το πρόγραμμα εκπομπής με chunks: (οι μεθοδολογίες αυτές έχουν προταθεί από διάφορα άρθρα και είναι οι κυρίαρχες για τη χρήση chunks, όμως από ότι παρατηρούμε παρουσιάζουν προβλήματα) Υπάρχει περίπτωση το πλήθος των chunks ενός δίσκου να είναι μεγαλύτερο από το πλήθος των σελίδων. Τότε θα υπάρχουν κάποια chunk τα οποία θα παραμένουν κενά. Ta chunk αυτά σημειώνονται στο πρόγραμμα εκπομπής με «SpcX» Όταν οι σελίδες είναι περισσότερες από τα chunks, τότε υπάρχει πάλι περίπτωση να υπάρχουν κενά chunk. Τα κενά αυτά είναι αποτέλεσμα της διαίρεσης του αριθμού των σελίδων με τον αριθμό των chunks η οποία απαιτείται για να βρούμε πόσες σελίδες θα καταχωρηθούν σε ένα chunk. Ωστόσο, η διαίρεση αυτή μπορεί να μην έχει αποτέλεσμα ακέραιο αριθμό. Έτσι, σε περίπτωση που δίνει δεκαδικό αριθμό, παίρνουμε το άνω όριο, πράγμα που συνεπάγεται και την ύπαρξη κάποιων κενών σελίδων σε κάποια chunks. Το άνω όριο μας εξασφαλίζει ότι όλες οι σελίδες θα καταχωρηθούν σε κάποιο chunk. Για παράδειγμα, αν έχουμε 50 chunks και 24 σελίδες, το αποτέλεσμα της διαίρεσης είναι 2,033. Επειδή, δε μπορούμε να καταχωρήσουμε 2,033 σελίδες σε ένα chunk, καταχωρούμε 3 σελίδες σε ένα chunk αλλά θα παραμείνουν 7 chunk κενά. Αυτού του είδους τα κενά σημειώνονται με «SpcY» Τέλος, επιλέγοντας βασικό μενού πρόγραμμα εκπομπής ραβδογράμματα, ο χρήστης μπορεί να δει με μορφή ραβδογραμμάτων τις πληροφορίες που παρουσιάζονται στον πίνακα των δίσκων Σχήμα 19

23 Σχήμα 20 Σχήμα Οθόνη στατιστικά client Αφού έχουμε δημιουργήσει το πρόγραμμα εκπομπής στη βασική οθόνη, επιλέγοντας βασικό μενού simulation Στατιστικά client (F3), ο χρήστης έχει τη δυνατότητα να μελετήσει αποτελέσματα όμοια με αυτά που παρουσιάστηκαν στην παράγραφο Η οθόνη «στατιστικά client» παρουσιάζεται στο σχήμα 22. Στην οθόνη αυτή, όπως φαίνεται και στο σχήμα 22, παρουσιάζεται ένας πίνακας που περιέχει τόσες γραμμές όσες και το πλήθος των σελίδων. Οι τρεις πρώτες στήλες αυτού του πίνακα είναι ίδιες με αυτές που παρουσιάζονται στον πίνακα πιθανοτήτων προσπέλασης της οθόνης της δημιουργίας του προγράμματος. Η τέταρτη στήλη, εμφανίζει τις πιθανότητες προσπέλασης των σελίδων μετά την επίδραση του θορύβου. Αν δεν υπάρχει θόρυβος στις αιτήσεις, κάθε κελί αυτής της στήλης θα έχει την ίδια τιμή με πριν και αυτό γιατί οι πιθανότητες προσπέλασης δεν επηρεάζονται. Αν το ποσοστό θορύβου που έχει δηλώσει ο χρήστης στην οθόνη εισαγωγής παραμέτρων είναι μεγαλύτερο του μηδέν, τότε στην τέταρτη στήλη παρουσιάζονται οι πιθανότητες προσπέλασης μετά την επίδραση του θορύβου αυτού. Πατώντας το κουμπί «Νέα επίδραση θορύβου» οι τιμές αυτής της στήλης αλλάζουν κάνοντας νέα -23-

24 εφαρμογή του αλγορίθμου. Το κατά πόσο θα επηρεαστούν οι πιθανότητες προσπέλασης εξαρτάται από το ποσοστό που επιλέγει ο χρήστης στην οθόνη εισαγωγής παραμέτρων. Σχήμα 22 Τέλος, από την οθόνη αυτή έχουμε την δυνατότητα να αποθηκεύσουμε τις πληροφορίες που παρουσιάζονται στον πίνακα σε αρχείο κειμένου. Η αποθήκευση του αρχείου γίνεται με την βοήθεια του γνωστού Save Dialog των Windows. Επίσης, ο χρήστης πατώντας το κουμπί «γραφήματα» μπορεί να δει τις καμπύλες που δημιουργούν οι μέσες καθυστερήσεις και οι πιθανότητες προσπέλασης (Σχήμα 23 και 24). 2.6 Οθόνη προσομοίωσης Σχήμα 23 Σχήμα 24 Η προσομοίωση και η μελέτη της απόδοσης της τεχνικής Broadcast disks γίνεται στην οθόνη της προσομοίωσης. Ο χρήστης έχει πρόσβαση στην οθόνη αυτή επιλέγοντας βασικό μενού simulation Time simulation (F4). Η προσομοίωση εκτελείται τόσες φορές όσες έχει δηλώσει ο χρήστης στην οθόνη εισαγωγής παραμέτρων. Η οθόνη της προσομοίωσης φαίνεται στο σχήμα

25 Συγκεκριμένα, στην οθόνη αυτή υπάρχει ένας πίνακας όπου κάθε γραμμή του είναι μια χρονική στιγμή της προσομοίωσης. Οι χρονικές στιγμές της προσομοίωσης παρουσιάζονται στην πρώτη στήλη. Στην δεύτερη στήλη φαίνεται ποια σελίδα του προγράμματος εκπομπής εκπέμπεται την συγκεκριμένη χρονική στιγμή. Στην τρίτη στήλη φαίνονται οι αιτήσεις του client. Το ανά πόσες χρονικές στιγμές ο client ζητάει μια σελίδα εξαρτάται από την τιμή που έχει δηλώσει ο χρήστης στην οθόνη εισαγωγής παραμέτρων. Στην περίπτωση του σχήματος 25, ο client ζητάει μια σελίδα ανά δύο χρονικές στιγμές. Σχήμα 25 Στην τέταρτη στήλη του πίνακα φαίνεται σε ποιο δίσκο απευθύνεται η συγκεκριμένη αίτηση, στην πέμπτη στήλη φαίνεται ο χρόνος απόκρισης του αντίστοιχου δίσκου και τέλος στην πέμπτη στήλη παρουσιάζεται το πόσες αιτήσεις έχουν γίνει μέχρι τη συγκεκριμένη χρονική στιγμή στον αντίστοιχο δίσκο. Επίσης, στην οθόνη αυτή υπάρχει και ένας δεύτερος πίνακας που στην ουσία αποτελεί μια σύνοψή του πρώτου πίνακα. Σε αυτό το δεύτερο πίνακα υπάρχουν τόσες γραμμές όσες και οι δίσκοι. Στην πρώτη στήλη υπάρχει το όνομα του δίσκου, στη δεύτερη στήλη φαίνεται το πόσες αιτήσεις έχει δεχτεί κάθε δίσκος. Στην τρίτη στήλη του πίνακα παρουσιάζεται ο χρόνος απόκρισης του κάθε δίσκου. Τέλος στην τέταρτη και τελευταία στήλη φαίνεται ο μέσος χρόνος απόκρισης. Στην πραγματικότητα, οι τιμές της στήλης αυτής είναι το αποτέλεσμα της διαίρεσης των τιμών της τρίτης στήλης με αυτές της δεύτερης στήλης. Όπως είναι φυσιολογικό, ο δίσκος D1 έχει το μικρότερο χρόνο απόκρισης ενώ ο πιο αργός δίσκος (στην περίπτωση του σχήματος 25 ο δίσκος D3) έχει τον μεγαλύτερο χρόνο απόκρισης. Τέλος, όπως και στις προηγούμενες οθόνες έτσι και εδώ υπάρχει η δυνατότητα αποθήκευσης των πληροφοριών των πινάκων σε αρχείο κειμένου, ενώ τα περιεχόμενα των πινάκων μπορούν να εμφανιστούν και με τη μορφή γραφημάτων. Συγκεκριμένα από την οθόνη αυτή είναι διαθέσιμα τρία γραφήματα: -25-

26 Το πρώτο γράφημα (σχήμα 27) παρουσιάζει για κάθε δίσκο το σύνολο των αιτήσεων που έχει δεχτεί και τον αντίστοιχο χρόνο απόκρισης. Το δεύτερο γράφημα παρουσιάζει τους μέσους χρόνους απόκρισης των δίσκων Σχήμα 27 Το τρίτο γράφημα παρουσιάζει τόσες καμπύλες όσες έχει δηλώσει ο χρήστης στην οθόνη εισαγωγή παραμέτρων. Στην περίπτωση του σχήματος 29, ο χρήστης έχει δηλώσει ότι επιθυμεί την εμφάνιση έντεκα γραφημάτων, ένα για κάθε ποσοστό θορύβου από 0% μέχρι 100%. Οι καμπύλες αυτές παρουσιάζουν το πόσο επηρεάζονται οι χρόνοι απόκρισης του κάθε δίσκου από την αύξηση του θορύβου. Σχήμα 28 Σχήμα Οθόνη Σχετικά Από την επιλογή βασικό μενού Σχετικά, στο προσκήνιο εμφανίζεται μια οθόνη η οποία περιλαμβάνει κάποιες πληροφορίες σχετικά με την εφαρμογή και τους συγγραφείς της. Σχήμα

27 ΚΕΦΑΛΑΙΟ 3: Παραδείγματα εκτέλεσης του Broadcast Disks Simulator 3.1 Αναλυτική παρουσίαση παραδείγματος εκτέλεσης Τιμές παραμέτρων Τρόπος εισαγωγής πιθανοτήτων προσπέλασης: Κατανομή Zipf με Θ=0.95 Αριθμός σελίδων που θα γίνονται broadcast: 50 Ποσοστό θορύβου: 10% Πλήθος δίσκων: Αυτόματη εύρεση του βέλτιστου αριθμού Τρόπος υπολογισμού των συχνοτήτων των δίσκων: Υπολογισμός των βέλτιστων συχνοτήτων Προγράμματα εκπομπής: Δημιουργία του προγράμματος εκπομπής με χρήση Chunks Δημιουργία του προγράμματος εκπομπής χωρίς chunks Αριθμός επαναλήψεων του προγράμματος: 10 Ρυθμός παραγωγής αιτήσεων από τον client: 2 Ρυθμός αύξησης θορύβου στο διάστημα 0-100: 10 Χρησιμοποίηση του προγράμματος εκπομπής με chunks κατά την προσομοίωση Εκτελώντας τη διαδικασία δημιουργίας των προγραμμάτων εκπομπής έχουμε ως αποτέλεσμα την δημιουργία 3 δίσκων. Ο ταχύτερος (D1) δίσκος έχει τρεις φορές μεγαλύτερη ταχύτητα από αυτή του πιο αργού δίσκου, ενώ ο δίσκος D2, έχει την διπλάσια ταχύτητα από τον πιο αργό δίσκο που είναι ο D3. Σχήμα 31 Στον δίσκο D1 έχει τοποθετηθεί μια σελίδα, στον δίσκο D2 έχουν τοποθετηθεί 2 σελίδες, ενώ οι υπόλοιπες 47 σελίδες έχουν τοποθετηθεί στο δίσκο D1. Αυτή η «περίεργη» κατανομή είναι αποτέλεσμα της χρησιμοποίησης της κατανομής Zipf. O δίσκος D1, παρόλο που έχει μόνο μια σελίδα, έχει δυο Chunks. Κάτι ανάλογο ισχύει και στο δίσκο D2. Αυτό είναι αποτέλεσμα της χρήσης του αλγορίθμου που περιγράφηκε στην παράγραφο και συγκεκριμένα του σημείου όπου υπολογίζεται το ελάχιστο κοινό πολλαπλάσιο των συχνοτήτων των δίσκων ώστε να χρησιμοποιηθεί στην εύρεση του αριθμού chunks που θα χωριστεί ο κάθε δίσκος. Ο αλγόριθμος αυτός θα έχει ως αποτέλεσμα την εμφάνιση κενών στο πρόγραμμα broadcast. Σύμφωνα με το paper που παρουσιάστηκε στο πρώτο κεφάλαιο, αυτές οι κενές σελίδες μπορούν να χρησιμοποιηθούν για να γίνονται broadcast άλλου είδους πληροφορίες, ωστόσο αυτό δεν πείθει ότι δεν αποτελεί ένα μειονέκτημα της μεθοδολογίας κατασκευής του προγράμματος. Παρατηρώντας το κάτω μέρος της οθόνης, βλέπουμε ότι ο αλγόριθμος κατασκευής προγράμματος με χρήση chunks έχει ως αποτέλεσμα τη δημιουργία ενός προγράμματος που περιέχει πέντε κενά (συνολικό μέγεθος 59 σελίδες). Αντίθετα, η χρήση του αλγόριθμου εκπομπής που αποφεύγει τη -27-

28 δημιουργία των chunks, έχει ως αποτέλεσμα ένα πρόγραμμα που δεν περιέχει καμία κενή σελίδα (συνολικό μέγεθος 54 σελίδες). Τα ραβδογράμματα που εμφανίζονται επιλέγοντας Βασικό μενού πρόγραμμα εκπομπής ραβδογράμματα, είναι αυτά των σχημάτων 19,20,21. Επιλέγοντας Βασικό μενού πρόγραμμα εκπομπής στατιστικά client στο προσκήνιο έρχεται η οθόνη του σχήματος 32. Στην οθόνη αυτή βλέπουμε ότι ο συνολικός μέσος χρόνος καθυστέρησης του προγράμματος εκπομπής με θόρυβο 10% είναι 23,02. Ενώ βλέπουμε ότι η σελίδα P1 που ανήκει στον δίσκο D1 έχει μέση καθυστέρηση 10,110169, οι σελίδες P2 και P3 που ανήκουν στον δίσκο D2, έχουν μέση καθυστέρηση 14, ενώ οι υπόλοιπες 47 σελίδες που είναι τοποθετημένες στο δίσκο D1 έχουν μέση καθυστέρηση 29,5. Τα γραφήματα αυτής της οθόνης φαίνονται στα σχήματα 33 και 34. Σχήμα 32 Σχήμα 33 Σχήμα 34 Εκτελώντας την προσομοίωση χρόνου επιλέγοντας Βασικό μενού Simulation Time Simulation, εμφανίζεται η οθόνη του σχήματος 35. Όπως έχουμε ήδη αναφέρει στο προηγούμενο κεφάλαιο, η οθόνη αυτή περιλαμβάνει πληροφορίες της προσομοίωσης ανά χρονική στιγμή. -28-

29 Σχήμα 36: Αιτήσεις Αποκρίσεις Σχήμα 35 Στην οθόνη της προσομοίωσης βλέπουμε ότι για την συγκεκριμένη προσομοίωση, ο δίσκος D1 δέχτηκε 122 αιτήσεις, ο D2 78 αιτήσεις και ο D3 95 αιτήσεις. Επίσης παρατηρούμε ότι ο D1 έχει μέσο χρόνο απόκρισης μικρότερο από τους άλλους δύο δίσκους. Συγκεκριμένα ο δίσκος D1 έχει μέσο χρόνο απόκρισης 8,557377, ο D2 14, και ο D3 32, Σχήμα 37: Μέση χρόνοι απόκρισης Τα γραφήματα αυτής της οθόνης φαίνονται στα σχήματα 36,37,38. Αν επιστρέψουμε στην οθόνη εισαγωγής παραμέτρων και δηλώσουμε ότι επιθυμούμε την χρησιμοποίηση του προγράμματος εκπομπής που δημιουργείται με τον Σχήμα 37: Χρόνος απόκρισης - Θόρυβος αλγόριθμο που αποφεύγει τη χρήση των chunks τα αποτελέσματα της προσομοίωσης θα είναι διαφορετικά (σχήματα 38, 39, 40). Συγκεκριμένα, στην οθόνη στατιστικά client παρατηρούμε ότι οι μέσες καθυστερήσεις είναι μικρότερες από τι στην περίπτωση της χρήσης του προγράμματος με chunks. Σε αυτή την περίπτωση η σελίδα του D1 έχει μέση καθυστέρηση 9, οι σελίδες του D2 έχουν μέση καθυστέρηση 13, και τέλος ο D3 έχει μέση καθυστέρηση 27. Τα αποτελέσματα αυτά έχουν σημασία αν συγκριθούν με αυτά του σχήματος 32. Τα αποτελέσματα της προσομοίωσης χρόνου χρησιμοποιώντας το πρόγραμμα εκπομπής χωρίς chunks, φαίνονται στο σχήμα 41. Τα αποτελέσματα αυτά είναι επίσης καλύτερα από αυτά του σχήματος 35 (τα αποτελέσματα του time simulation εξαρτώνται από τις τυχαίες αιτήσεις του client). Είναι προφανές ότι η ύπαρξη κενών σελίδων στο πρόγραμμα εκπομπής εισάγει επιπρόσθετη καθυστέρηση χωρίς λόγο και έτσι ο αλγόριθμος κατασκευής προγράμματος χωρίς chunks έχει ως αποτέλεσμα τις περισσότερες φορές, (αν όχι όλες) μικρότερο πρόγραμμα εκπομπής. -29-

30 Σχήμα 39 Σχήμα 38 Σχήμα 40 Σχήμα

31 3.2 Περισσότερα παραδείγματα εκτέλεσης Όπως έχουμε ήδη αναφέρει, κατά τη διάρκεια της εκπόνησης της εργασίας αυτής, αναπτύχθηκε μια νέα μέθοδος κατασκευής προγράμματος εκπομπής. Η μέθοδο αυτή έχει ως αποτέλεσμα την κατασκευή προγράμματος εκπομπής χωρίς κενά. Το γεγονός αυτό σημαίνει ότι το πρόγραμμα εκπομπής που προκύπτει από τη νέα μέθοδο είναι βέλτιστο αφού έχει το ελάχιστο μέγεθος. Έτσι, όπως φαίνεται και στα πειράματα που ακολουθούν, το πρόγραμμα που προκύπτει από την νέα μέθοδο έχει πάντα μικρότερο ή ίσο μέγεθος από αυτό που κατασκευάζεται με την μέθοδο που παρουσιάζεται στην παράγραφο Στην παράγραφο αυτή παρουσιάζονται μερικά από τα πειράματα που εκτελέστηκαν. Ο αναγνώστης μπορεί να έχει και προσωπική άποψη για τις δύο μεθόδους κατασκευής προγραμμάτων εκπομπής εκτελώντας τα δικά του πειράματα μέσω του λογισμικού που συνοδεύει αυτή την εργασία Πείραμα 1 Τυχαία κατανομή Πλήθος σελίδων 50 Πλήθος δίσκων 3 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού συχνοτήτων δίσκων με την παράμετρο δέλτα (Δ=2) Θόρυβος: 0% Χρήση προγράμματος με chunks: Μέγεθος προγράμματος: 159 Μέση καθυστέρηση 40, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 150 Μέση καθυστέρηση: 38, Πείραμα 2 Τυχαία κατανομή Πλήθος σελίδων 100 Πλήθος δίσκων 4 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού συχνοτήτων δίσκων με την παράμετρο δέλτα (Δ=2) Θόρυβος: 0% Χρήση προγράμματος με chunks: μέγεθος προγράμματος: 590 μέση καθυστέρηση 111, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 394 Μέση καθυστέρηση: 81, Πείραμα 3 Τυχαία κατανομή Πλήθος σελίδων 150 Πλήθος δίσκων 5 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού συχνοτήτων δίσκων με την παράμετρο δέλτα (Δ=2) Θόρυβος: 0% -31-

32 Χρήση προγράμματος με chunks: Μέγεθος προγράμματος: 4725 Μέση καθυστέρηση 802, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 394, Μέση καθυστέρηση: 103, Πείραμα 4 Τυχαία κατανομή Πλήθος σελίδων 100 Εύρεση του βέλτιστου αριθμού δίσκων Ο αλγόριθμος εύρεσης πλήθος δίσκων επιστρέφει την τιμή 5 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού βέλτιστων συχνοτήτων δίσκων Θόρυβος: 0% Χρήση προγράμματος με chunks: Μέγεθος προγράμματος: 660 Μέση καθυστέρηση 121, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 336 Μέση καθυστέρηση: 78, Πείραμα 5 Τυχαία κατανομή Πλήθος σελίδων 200 Εύρεση του βέλτιστου αριθμού δίσκων Ο αλγόριθμος εύρεσης πλήθος δίσκων επιστρέφει την τιμή 6 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού βέλτιστων συχνοτήτων δίσκων Θόρυβος: 0% Χρήση προγράμματος με chunks: Μέγεθος προγράμματος: 4320 Μέση καθυστέρηση 601, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 336 Μέση καθυστέρηση: 164, Πείραμα 6 Κατανομή Zipf με παράμετρο θ = 0,95 Πλήθος σελίδων 100 Εύρεση του βέλτιστου αριθμού δίσκων Ο αλγόριθμος εύρεσης πλήθος δίσκων επιστρέφει την τιμή 4 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού συχνοτήτων δίσκων με την παράμετρο δέλτα (Δ=2) Θόρυβος: 0% Χρήση προγράμματος με chunks: -32-

33 Μέγεθος προγράμματος: 420 Μέση καθυστέρηση 148, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 114 Μέση καθυστέρηση: 40, Πείραμα 7 Κατανομή Zipf με παράμετρο θ = 0,95 Πλήθος σελίδων 100 Εύρεση του βέλτιστου αριθμού δίσκων Ο αλγόριθμος εύρεσης πλήθος δίσκων επιστρέφει την τιμή 4 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού βέλτιστων συχνοτήτων δίσκων Θόρυβος: 0% Χρήση προγράμματος με chunks: Μέγεθος προγράμματος: 192 Μέση καθυστέρηση 71, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 108 Μέση καθυστέρηση: 40, Πείραμα 8 Κατανομή Zipf με παράμετρο θ = 0,95 Πλήθος σελίδων 50 Εύρεση του βέλτιστου αριθμού δίσκων Ο αλγόριθμος εύρεσης πλήθος δίσκων επιστρέφει την τιμή 3 Ελάχιστη συχνότητα δίσκων: 1 Μέθοδος υπολογισμού βέλτιστων συχνοτήτων δίσκων Θόρυβος: 10% Χρήση προγράμματος με chunks: Μέγεθος προγράμματος: 59 Μέση καθυστέρηση 23, Χρήση προγράμματος χωρίς chunks: Μέγεθος προγράμματος: 54 Μέση καθυστέρηση: 20,

34 3.2.9 Σύνοψη αποτελεσμάτων Αριθμός πειράματος Πρόγραμμα εκπομπής με chunks Νέα μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Μέγεθος Μέση Μέγεθος Μέση καθυστέρηση προγράμματος καθυστέρηση προγράμματος , , , , , , , , , , , , , , , , Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα 42 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα

35 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα 44 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα 45 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα

36 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα 47 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα 48 Πείραμα Μέγεθος προγράμματος Μέση καθυστέρηση Μέγεθος προγράμματος Μέση καθυστέρηση Πρόγραμμα εκπομπής με Chunks Μέθοδος βέλτιστου μεγέθους προγράμματος εκπομπής Σχήμα

37 ΚΕΦΑΛΑΙΟ 4: Τεκμηρίωση του κώδικα του Broadcast Disks Simulator 4.1 Εισαγωγή Στο κεφάλαιο αυτό περιγράφονται οι διαδικασίες και οι συναρτήσεις που δημιουργήθηκαν με σκοπό την ανάπτυξη του προσομοιωτή της μεθόδου Broadcast Disks. Ο προσομοιωτής που κατασκευάστηκε στα πλαίσια αυτής της εργασίας αναλύεται στα ακόλουθα στάδια εκτέλεσης τα οποία αποτελούν τμήματα του κώδικα: Τοποθέτηση και έλεγχος παραμέτρων Κεντρικό παράθυρο Κατασκευή της κατανομής και των πιθανοτήτων των σελίδων - στατιστικά Εύρεση δίσκων-συχνοτήτων, κατανομή σελίδων, κατασκευή chunks και broadcast προγράμματος - στατιστικά Στατιστικά και γραφήματα Server Στατιστικά και γραφήματα Client Σχήμα 50 Time Simulator Client Υποθέσεις για την προσομοίωση: 1) Η βάση δεδομένων μεταδίδεται ολόκληρη στις σελίδες του προγράμματος. 2) Δεν χρησιμοποιείται cashing ή άλλες παρόμοιες μέθοδοι. 3) Υπάρχει ένας client μόνο (δεν υπάρχει στατιστική διαφορά εάν έχουμε περισσότερους). 4) Ο client ζητά όλες τις σελίδες με πιθανότητες ανάλογες των τιμών των access probabilities τους. 5) Ο χρόνος μετάδοσης είναι σταθερός για κάθε σελίδα και εκφράζει την μονάδα του χρόνου (broadcast time unit). 6) Ο client παράγει αιτήσεις σελίδων στο σύστημα σε σταθερό χρόνο ανάλογο της μονάδας χρόνου. 7) Δεν έχουμε αλλαγή στην μορφή του προγράμματος (διάταξη σελίδων, προσθήκες-διαγραφές) κατά την προσομοίωση. 4.2 Περιγραφή δημοσίων μεταβλητών και πινάκων 'Γενικές βασικές μεταβλητές Public numofpages As Long Public N As Long Public AccessProbabilitiesArray() As Double Public RelFreqArray() As Long Public PR As Long Public program() As Long Public NumChunksArray() As Long Public BroadcastProgram() As String Public DiskRangeArray() As Double Public BelongsToDiskArray() As String Public program2() As String 'Πίνακες labels Public NameOfPagesArray() As String Public DiskNameArray() As String Public chunknamearray() As String 'αριθμός σελίδων 'αριθμός δίσκων 'πίνακας των access probabilities 'πίνακας σχετικών συχνοτήτων δίσκων 'μεγάλη περίοδος προγράμματος 'πίνακας index σελίδων προγράμματος σε μία μεγάλη περίοδο 'πίνακας αριθμού chunks ανά δίσκο 'πίνακας προγράμματος chunks που παράγονται 'πίνακας διαστημάτων κατανομής δίσκων 'πίνακας αντιστοιχίας σελίδων σε δίσκους 'πίνακας σελίδων προγράμματος χρησιμοποιώντας chunks 'πίνακας ονομάτων σελίδων 'πίνακας ονομάτων δίσκων 'πίνακας ονομάτων των chunks -37-

38 Public cpagesarray() As String 'πίνακας κατανομής σελίδων σε chunks 'Παράμετροι κατανομών Public theta As Double 'Παράμετροι προσομοίωσης client Public delta As Long 'παράμετρος αλλοίωσης συχνοτήτων δίσκων Public e As Byte 'παράμετρος προσθήκης θορύβου σε ποσοστό % Public bdtimes As Long 'πόσες φορές θα μεταδοθεί το πρόγραμμα Public ThinkTime As Long 'χρόνος σε στιγμές που μεσολαβεί μεταξύ αιτήσεων του client Public noiserate As Long 'ρυθμός αύξησης θορύβου στο διάστημα για την προσομοίωση 'Γενικές μεταβλητές επιλογών (registry) Public zipfflag As Boolean 'χρήση ή όχι της κατανομής zipf Public uniflag As Boolean 'χρήση ή όχι της κανονικής κατανομής Public fileflag As Boolean 'ανάγνωση ή όχι πιθανοτήτων από αρχείο Public fmin As Long 'συχνότητα του πιο αργού δίσκου Public FreqMethod As Byte 'χρήση ή όχι τυχαίας κατανομής Public NDisk As Long 'επιλογή αριθμού δίσκων από χρήστη Public DiskFlag As Boolean 'επιλογή αυτόματου ή μη αλγορίθμου εύρεσης αρ. δίσκων Public programflag As Byte 'επιλογή προγράμματος στο simulation '1-πρόγραμμα με chunks, 2-προγραμμα χωρίς chunks, 3-flat πρόγραμμα Public fpr1 As Boolean 'Δημιουργία προγράμματος εκπομπής με chunks Public fpr2 As Boolean 'Δημιουργία προγράμματος εκπομπής χωρίς chunks 'Γενικές μεταβλητές στατιστικών αποτελεσμάτων Public delay As Double 'συνολική καθυστέρηση προγράμματος Public PB() As Double 'μέσες καθυστερήσεις σελίδων Public pe() As Double 'access probabilities αλλοιωμένες από το θόρυβο Public NormalizedAPArray() As Double 'πίνακας κανονικοποιημένων access probabilities Public avgrtime() As Double 'μέσος χρόνος απόκρισης κάθε δίσκου Public reqcounter() As Long 'πλήθος αιτήσεων που έγιναν σε κάθε δίσκο Public responcetime() As Long 'χρόνος απόκρισης κάθε δίσκου σε στιγμές Public Sub InitializeVars() ReDim PB(numOfPages) ReDim pe(numofpages) 4.3 Αλγόριθμος εύρεσης του βέλτιστου αριθμού δίσκων Ο αλγόριθμος αυτόματης εύρεσης του βέλτιστου αριθμού δίσκων αναζητά τον κατάλληλο αριθμό Ν δίσκων οι οποίοι θα εφαρμοστούν ώστε η κατανομή των πιθανοτήτων προσπέλασης στη διαμέριση των διαστημάτων τους (access ranges) να εξασφαλίζει την ύπαρξη τουλάχιστον μίας τιμής πιθανότητας σε αυτά. Έτσι εξασφαλίζουμε ότι δεν θα υπάρχει δίσκος στον οποίο να μην γίνει τοποθέτηση έστω και μίας σελίδας: Ν=7 Ν=8 Δίσκος χωρίς σελίδα Αφού εντοπίστηκε το κατάλληλο πλήθος δίσκων που εξυπηρετεί τις συνθήκες της Α φάσης, υπολογίζουμε όλες τις σχετικές συχνότητές τους και ελέγχουμε αν αυτές ικανοποιούν την: F(D1) > F(D2) > F(D3) > > F(DN) Δηλαδή εάν έχουν καταταχθεί κατά αυστηρά φθίνουσα σειρά. Αν υπάρχει έστω και ένα ζεύγος ίσων συχνοτήτων ή συχνοτήτων που προκύψαν ίσες με την ελάχιστη συχνότητα του τελευταίου δίσκου (Fmin) τότε μειώνουμε το πλήθος των δίσκων Ν κατά 1 και υπολογίζουμε ξανά τις νέες συχνότητες που προκύπτουν μέχρι να βρεθεί το κατάλληλο Ν. -38-

39 Public Sub DefineNumberOfDisks() 'Υπολογισμός αριθμού δίσκων ανάλογα με την επιλογή Dim i As Long Dim f As Boolean 'σημαία ελέγχου ίσων συχνοτήτων If DiskFlag Then N = findn() 'αυτόματος υπολογισμός Call RedimsArraysOfDisks(N) 'έλεγχος υπολογισμένων συχνοτήτων στην αυτόματη εύρεση δίσκων 'αν βρέθηκαν σε δίσκους ίδιες συχνότητες τότε Do f = False For i = 1 To N - 1 If (RelFreqArray(i) = RelFreqArray(i + 1)) Or (RelFreqArray(i) = fmin) Then f = True Exit For If f = True Then N = N - 1 'μειώνουμε το πλήθος των δίσκων κατά 1 Call RedimsArraysOfDisks(N) Loop Until (N <= 1 Or f = False) Else N = NDisk 'δήλωση του χρήστη Call RedimsArraysOfDisks(N) Public Function findn() As Long 'Αλγόριθμος εύρεσης του βέλτιστου αριθμού δίσκων 'Δηλώσεις βοηθητικών μεταβλητών Dim i, j, NDisks As Long Dim tmpflag As Boolean findn = numofpages 'αρχικά δίνουμε μέγιστη τιμή το πλήθος των σελίδων For NDisks = 1 To numofpages 'για κάθε τιμή από 1 έως αυτήν For j = 1 To NDisks 'χωρίζουμε σε ίσα διαστήματα πλάτους 1/NDisks tmpflag = False 'και ελέγχουμε αν For i = 1 To numofpages 'υπάρχει έστω και μία πιθανότητα προσπέλασης If (AccessProbabilitiesArray(i) >= ((j - 1) / NDisks)) And _ (AccessProbabilitiesArray(i) <= (j / NDisks)) Then tmpflag = True 'που δεν κατανέμεται στα διαστήματα Exit For If tmpflag = False Then 'αν βρέθηκε έστω και μία που δεν κατανεμήθηκε findn = NDisks 1 'επιστρέφεται η προηγούμενη τιμή πλήθους δίσκων Exit Function 'και σταματά η διαδικασία Next j 'αλλιώς συνεχίζουμε να αυξάνουμε το πλήθος δίσκων μέχρι να βρεθεί Next NDisks 'η κατάλληλη κατανομή End Function -39-

40 4.4 Διαδικασία εισαγωγής πιθανοτήτων προσπέλασης Επιλογή κατανομής που θα ακολουθούν οι πιθανότητες προσπέλασης των σελίδων Κατανομή ZIPF Τυχαία κατανομή Αναγνωση πιθανοτήτων προσπέλασης από αρχείο κειμμένου Υπολογισμός των πιαθανοτήτων προσπέλασης χρησιμοποιώντας την κατανομή ZIPF Παραγωγή τυχαίων πιθανότητων προσπέλασης Εμφάνιση του Open dialog των Windows ώστε ο χρήτης να επιλέξει το αρχείο των πιθανότητων προσπέλασης αναγνωση του αρχείου. Ταξινόνηση των σελίδων σύμφωνα με την πιθανότητα προσπέλασης τους Υπολογισμός των κανονικοποιημένων πιθανοτήτων προσπέλασης των σελίδων Εμφάνιση των σελίδων στο Grid του Interface Public Sub InsertProbabilities() Dim a As Double, sum As Double Dim i As Long Σχήμα 51 If fileflag = True Then 'εισαγωγή των πιθανοτήτων προσπέλασης απο αρχείο κειμένου MainForm.CDialog.DialogTitle = "Επιλέξτε το αρχείο με τις πιθανότητες" MainForm.CDialog.ShowOpen If MainForm.CDialog.FileName = "" Then Exit Sub numofpages = LinesOfFile(MainForm.CDialog.FileName) Call RedimsSub Open MainForm.CDialog.FileName For Input As #1 sum = 0 'Διαβασμα των πιθανοτήτων προσπέλασης απο το αρχείο For i = 1 To numofpages Input #1, a NameOfPagesArray(i) = "P" + CStr(i) AccessProbabilitiesArray(i) = a sum = sum + AccessProbabilitiesArray(i) Call SortArray Close #1 Else 'εισαγωγή πιθανοτήτων προσπέλασης είτε σύμφωνα με την κανονική κατανομή -40-

41 'είτε σύμφωνα με την κατανομή Zipf Call RedimsSub sum = 0 For i = 1 To numofpages NameOfPagesArray(i) = "P" + CStr(i) If uniflag Then 'Κανονική κατανομή AccessProbabilitiesArray(i) = Round(CDbl(Rnd), 6) If zipfflag Then 'Κατανομή zipf AccessProbabilitiesArray(i) = Round(1 / (Exp(theta * Log(i))), 6) sum = sum + AccessProbabilitiesArray(i) If Not (zipfflag) Then 'Αν έχουμε επιλέξει την κατανομή zipf οι πίνακες είναι ήδη ταξινομημένοι 'Σε περίπτωση που έχει επιλεγεί η κανονική κατανομή Call SortArray 'κάλεσε την sub ταξινόμησης For i = 1 To numofpages NormalizedAPArray(i) = Round((AccessProbabilitiesArray(i) / sum), 6) Call FillGrid 'Γέμισε το grid των σελίδων στην main form Call Prep2 4.5 Διαδικασία εύρεσης των διαστημάτων των δίσκων Private Sub ComputeDiskRanges() Dim sep As Double Dim c As Long, i As Long, j As Long, PFReq() As Long, FRange As Long, pt1 As Long, pt2 As Long Dim minp As Single Dim Dim s1 As String, s2 As String, s As String If FreqMethod <> 2 Or zipfflag = True Then 'Βέλτιστη μέθοδος υπολογιμού συχνοτήτων και 'χρήση της κατανομής zipf sep = Round((1 / N), 6) c = 0 'Εύρεση των διαστημάτων των δίσκων For i = 1 To N 'Για κάθε δίσκο DiskNameArray(i) = "D" + CStr(i) DiskRangeArray(1, i) = Round((1 - c * sep), 6) c = c + 1 DiskRangeArray(2, i) = Round((1 - c * sep), 6) DiskRangeArray(2, N) = 0 For i = 1 To numofpages 'Για κάθε σελίδα For j = 1 To N 'Για κάθε δίσκο If AccessProbabilitiesArray(i) > DiskRangeArray(2, j) And _ AccessProbabilitiesArray(i) <= DiskRangeArray(1, j) Then 'αν η σελίδα i ανήκει στον δίσκο j τότε στον πίνακα 'BelongsToDiskArray δηλώνεται ότι η σελίδα ανήκει σε αυτό τον πίνακα BelongsToDiskArray(i) = DiskNameArray(j) Next j Else 'Υπολογισμός των συχνοτήτων κάθε μίας σελίδας με βάση τον κανόνα της ρίζας 'Αρχικά υπολογίζεται η ελάχιστη συχνότητα minp = NormalizedAPArray(1) For i = 2 To numofpages If NormalizedAPArray(i) < minp Then minp = NormalizedAPArray(i) -41-

42 If minp = 0 Then minp = 'Κατόπιν υπολογίζονται οι συχνότητες κάθε σελίδας με τον νόμο της ρίζας ReDim PFReq(numOfPages) 'πίνακας ακεραίων συχνοτήτων For i = 1 To numofpages PFReq(i) = Int(Sqr(NormalizedAPArray(i) / minp)) 'βρίσκεται το εύρος τιμών FRange = PFReq(1) - PFReq(numOfPages) 'και κατανέμονται οι σελίδες στους δίσκους ανάλογα με τις ακέραιες συχνότητες και το πλήθος των δίσκων If N > 1 Then For i = 0 To N - 1 DiskNameArray(i + 1) = "D" + CStr(i + 1) pt1 = PFReq(1) - i * Int(FRange / N) If i < N - 1 Then pt2 = PFReq(1) - (i + 1) * Int(FRange / N) Else pt2 = PFReq(numOfPages) For j = 1 To numofpages If PFReq(j) <= pt1 And PFReq(j) > pt2 Then BelongsToDiskArray(j) = DiskNameArray(i + 1) Next j For j = 1 To numofpages - 1 s1 = BelongsToDiskArray(j) s2 = BelongsToDiskArray(j + 1) If s2 = "" Then BelongsToDiskArray(j + 1) = s1 Next j 'κατόπιν καταγράφονται τα διαστήματα πιθανοτήτων όπου έγινε η κατανομή DiskRangeArray(1, 1) = NormalizedAPArray(1) i = 0 For j = 1 To numofpages - 1 s1 = BelongsToDiskArray(j) s2 = BelongsToDiskArray(j + 1) If s1 <> s2 Then i = i + 1 DiskRangeArray(2, i) = NormalizedAPArray(j) If i < N Then DiskRangeArray(1, i + 1) = NormalizedAPArray(j + 1) Next j DiskRangeArray(2, N) = NormalizedAPArray(numOfPages) Else DiskNameArray(1) = "D" + CStr(1) pt1 = PFReq(1) pt2 = PFReq(numOfPages) For j = 1 To numofpages BelongsToDiskArray(j) = DiskNameArray(1) Next j DiskRangeArray(1, 1) = NormalizedAPArray(1) DiskRangeArray(2, 1) = NormalizedAPArray(numOfPages) 4.6 Διαδικασία υπολογισμού συχνοτήτων δίσκων Στη διαδικασία αυτή υλοποιούνται δύο μέθοδοι υπολογισμού των συχνοτήτων των δίσκων. Το ποια από τις δύο θα χρησιμοποιηθεί εξαρτάται από την επιλογή του χρήστη στην οθόνη εισαγωγής παραμέτρων. Οι τύποι υπολογισμού των συχνοτήτων των δύο μεθόδων δίνονται παρακάτω: Πρώτη μέθοδος: Η μέθοδος αυτή χρησιμοποιεί την παράμετρο Δέλτα (βλέπε παράγραφο 1.5.2) -42-

43 Σχετ.Συχν.Δίσκου(i) = fmin ((N-i)Δ + 1) Όπου i το index του δίσκου και όπου N το index του πιο αργού δίσκου Δεύτερη μέθοδος: Η μέθοδος αυτή αποτελεί το βέλτιστο τρόπο υπολογισμού των συχνοτήτων των δίσκων αλλα απαιτεί τη γνώση των πιθανοτήτων προσπέλασης της κάθε σελίδας. Είναι η πλέον χρησιμοποιούμενη μέθοδος και προτείνεται από πολλά άρθρα: Σχετ.Συχν.Δίσκου(i) = fmin j D j D Private Sub ComputeRelFrequencies() 'Υπολογισμός των συχνοτήτων των δίσκων Dim PminDisk As Double, PDisk_i As Double Dim i, j As Long, c As Long, sum As Double sum = 0 c = 0 For i = 1 To numofpages 'Για κάθε σελίδα If BelongsToDiskArray(i) = DiskNameArray(N) Then 'η σελίδα i ανήκει στον τελευταίο δίσκο sum = sum + NormalizedAPArray(i) c = c + 1 If c <> 0 Then PminDisk = sum / c 'Μέση καθυστέρηση του πιο αργού δίσκου Else PminDisk = 0 i N normalized _ p( j) / D normalized _ p( j) / D i N For i = 1 To N 'γιά κάθε δίσκο If FreqMethod = 3 Then 'Υπολογίζονται οι συχνότητες χρησιμοποιώντας την μέθοδο με την παράμετρο Δέλτα (πρώτη μέθοδο) RelFreqArray(i) = fmin * ((N - i) * delta + 1) ElseIf FreqMethod = 2 Then 'Υπολογίζονται οι συχνότητες χρησιμοποιώντας την βέλτιστη μέθοδο (δεύτερη μέθοδο) sum = 0 c = 0 For j = 1 To numofpages 'Για κάθε σελίδα If BelongsToDiskArray(j) = DiskNameArray(i) Then 'Η σελίδα j ανήκει στον δίσκο i sum = sum + NormalizedAPArray(j) c = c + 1 Next j If c <> 0 Then PDisk_i = sum / c 'Μέση πιθανότητα του δίσκου Else PDisk_i = 0 'Υπολογισμός της συχνότητας του δίσκου If PDisk_i <> 0 And PminDisk <> 0 Then RelFreqArray(i) = fmin * Int(Sqr(PDisk_i / PminDisk)) Else 'Αποφεύγεται ο μηδενισμός της συχνότητας RelFreqArray(i) = fmin -43-

44 4.7 Διαδικασία δημιουργίας Chunks Σε αυτή τη διαδικασία αρχικοποιούνται τρεις βασικές δομές δεδομένων (πίνακες). Συγκεκριμένα, αυτές οι δομές δεδομένων είναι ο μονοδιάστατος πίνακας NumChunkArray, ο οποίος αποθηκεύει το πόσα chunks έχει ένας δίσκος, ο πίνακας δυο διαστάσεων chunknamearray όπου καταχωρούνται τα ονόματα των chunks των δίσκων και τέλος, ο πίνακας δύο διαστάσεων cpagesarray ο οποίος καταχωρεί σε κάθε κελί του τα ονόματα των σελίδων που περιέχει κάθε chunk. Για παράδειγμα έστω: Πλήθος δίσκων: 3 (D1,D2,D3) Chunks Chunks D1: C11, C12 Chunks D2: C21, C22, C23 Chunks D3: C31, C32, C33, C34, C34, C35, C36 Pages Pages C11: P1 Pages C12: Κενό Pages C21:P2 Pages C22: P3 Pages:C23: Κενό Pages C31: P4,P5,P6,P7,P8,P9,P10,P11 Pages C32: P12,P13,P14,P15,P16,P17,P18,P19 Pages C33: P20,P21,P22,P23,P24,P25,P26.P27 Pages C34: P28,P29,P30,P31,P32,P33.P34,P36 Pages C35: P37,P38,P39,P40,P41,P42,P43,P44 Pages C36: P45,P47,P47,P48,P49,P50 NumChunksArray ChunkNameArray C11 C12 C21 C22 C23 C31 C32 C33 C34 C35 C36 cpagesarray P1 SpcY P2 P3 SpcY P4 P5 P6 P7 P8 P12 P13 P14 P15 P9 P10 P11 P16 P17 P18 P19 P20 P21 P22 P23 P24 P25 P26 P27 P28 P29 P30 P31 P32 P33 P34 P36 P37 P38 P39 P40 P41 P42 P43 P44 P45 P47 P47 P48 P49 P50 Τα ονόματα των σελίδων σε κάθε κελί του cpagesarray είναι διαχωρισμένα με κενό. Οι πίνακες που δημιουργούνται από τη διαδικασία CreateChunks χρησιμοποιούνται στη διαδικασία που έχει ως στόχο την κατασκευή του προγράμματος εκπομπής. Η διαδικασία κατασκευής του προγράμματος εκπομπής παρουσιάζεται στην παράγραφο 4.8. Όπως έχει ήδη ειπωθεί, υπάρχει περίπτωση ένας δίσκος να περιέχει περισσότερα chunks από ότι σελίδες. Αυτό συνεπάγεται με την ύπαρξη κενών στο πρόγραμμα εκπομπής. Σύμφωνα με το άρθρο που παρουσιάστηκε στο πρώτο κεφάλαιο αυτής της εργασίας, τα κενά chunks που προκύπτουν από τον αλγόριθμο κατασκευής του προγράμματος εκπομπής (βλέπε παράγραφο 1.5.2) μπορούν να χρησιμοποιηθούν ώστε να γίνονται broadcast άλλου είδους πληροφορίες (π.χ. δείκτες βάσεων δεδομένων). Τα κενά αυτά σημειώνονται στον πίνακα του προγράμματος εκπομπής με SpcX Όπως καταλαβαίνουμε, τα κενά αυτά αποτελούν μειονέκτημα της μεθόδου κατασκευής του προγράμματος εκπομπής. Στην παράγραφο 4.10 παρουσιάζεται ένας νέος αλγόριθμος ο οποίος έχει ως αποτέλεσμα την δημιουργία προγράμματος εκπομπής χωρίς τέτοιου είδους κενά. Τέλος, υπάρχει περίπτωση η ύπαρξη κενών που προκύπτουν από το εξής φαινόμενο: Ύπαρξη κενών που είναι αποτέλεσμα της διαίρεσης του αριθμού των σελίδων με τον αριθμό των chunks η οποία απαιτείται για να βρούμε πόσες σελίδες θα καταχωρηθούν σε ένα chunk. Ωστόσο, η διαίρεση αυτή μπορεί να μην έχει αποτέλεσμα ακέραιο αριθμό. Έτσι, στην περίπτωση του δεκαδικού αριθμού, παίρνουμε το άνω όριο, πράγμα που συνεπάγεται με την ύπαρξη κενών chunks. Το άνω όριο μας εξασφαλίζει ότι όλες οι σελίδες θα -44-

45 καταχωρηθούν σε κάποιο chunk. Για παράδειγμα, αν έχουμε 50 chunks και 24 σελίδες, το αποτέλεσμα της διαίρεσης είναι 2,033. Επειδή, δε μπορούμε να καταχωρήσουμε 2,033 σελίδες σε ένα chunk, καταχωρούμε 3 σελίδες σε ένα chunk αλλά θα παραμείνουν 7 chunk κενά. Αυτού του είδους τα κενά σημειώνονται με «SpcY» (Επανάληψη παραγράφου κεφαλαίου 2) Public Sub CreateChunks() 'Διαδικασία τοποθέτησης σελίδων σε chunks Dim i As Long, j As Long, csep As Long Dim max As Long, c As Long, LCM As Long Dim v As Long, aa As Long Dim s As String LCM = findlcm 'Βρες το LCM 'Υπολόγισε πόσα chunk θα έχει κάθε δίσκος και εκχώρησε το αποτέλεσμα στο grid των δίσκων For i = 1 To N NumChunksArray(i) = LCM / RelFreqArray(i) MainForm.Grid2.TextMatrix(i, 3) = CStr(NumChunksArray(i)) max = findmax 'βρες το μεγαλύτερο αριθμό chunks ώστε να οριστούν 'οι διαστάσεις των πινάκων των chunks ReDim chunknamearray(n, max) ReDim cpagesarray(n, max) 'Αρχικοποίηση των πινάκων των chunks For i = 1 To N For j = 1 To max chunknamearray(i, j) = "X" cpagesarray(n, max) = "" Next j For i = 1 To N 'Για κάθε δίσκο s = "[" For j = 1 To NumChunksArray(i) chunknamearray(i, j) = "C" + CStr(i) + CStr(j) 'όνομασε το κάθε chunk του δίσκου i s = s + chunknamearray(i, j) + "," Next j If fpr1 = True Then 'Αν έχει επιλεγεί η δημιουργία του προγράμματος σελίδων με chunks If NumChunksArray(i) >= pagesnumberofdisk(disknamearray(i)) Then 'Υπάρχουν περισσότερα chunks από ότι σελίδες v = 0 For j = 1 To numofpages If BelongsToDiskArray(j) = DiskNameArray(i) Then 'Βάλε μια σελίδα σε ένα chunk v = v + 1 cpagesarray(i, v) = NameOfPagesArray(j) Next j 'αν υπάρχουν chunks που δεν χρειάζονται γέμισε τα με "spcx" For j = v + 1 To NumChunksArray(i) cpagesarray(i, j) = "spcx" Next j Else 'Οι σελίδες είναι περισσότερες από τα chunks 'Βρες το πάνω όριο της Διαίρεσης του αριθμού των σελίδων με τον αριθμό των chunks, ώστε να 'χωρέσουν όλες οι σελίδες. Υπάρχει περίπτωση να μείνουν κενά chunk αν π.χ. έχουμε '50/24 = => 3. Άρα θα μπουν 3 σελίδες σε κάθε chunk άλλα 7 chunk θα μείνουν κενά aa = pagesnumberofdisk(disknamearray(i)) / NumChunksArray(i) aa = aa + 1 aa = Int(aa) v = 0 c = 1 'Βάλε aa σελίδες σε κάθε chunk -45-

46 For j = 1 To numofpages If BelongsToDiskArray(j) = DiskNameArray(i) Then If v >= aa Then c = c + 1 v = 0 v = v + 1 'Οι σελίδες που ανήκουν στο ίδιο chunk χωρίζονται με κενό cpagesarray(i, c) = cpagesarray(i, c) + NameOfPagesArray(j) + " " Next j 'Τσέκαρε τα κενά chunk με "spcy" For j = c + 1 To max cpagesarray(i, j) = "spcy" Next j MainForm.Grid2.TextMatrix(i, 5) = Mid(s, 1, Len(s) - 1) + "]" 4.8 Διαδικασία (Αλγόριθμος) δημιουργίας του προγράμματος chunks Στην παράγραφό αυτή θα παρουσιαστεί συνοπτικά ένα παράδειγμα δημιουργίας προγράμματος εκπομπής και στην συνέχεια θα παρουσιαστεί η διαδικασία τοποθέτησης των chunks στο πρόγραμμα. Θα πρέπει να αναφερθεί ότι για τη δημιουργία του προγράμματος εκπομπής είναι υπεύθυνες και η διαδικασία αυτής της παραγράφου και η διαδικασία της παραγράφου 4.7. Παράδειγμα διαδικασίας δημιουργίας του προγράμματος εκπομπής: Έστω μια λίστα 11 σελίδων που είναι ταξινομημένη από την πιο hot σελίδα στην πιο cold σύμφωνα με την πιθανότητα προσπέλασής τους από τους clients. Πιθανότητες προσπέλασης: P(1)=1/2, P(2),P(3)=1/8, P(4),P(5),P(6),P(7),P(8),P(9),P(10),P(11) = 1/32 Οι 11 σελίδες κατανέμονται σύμφωνα με τις πιθανότητες προσπέλασης τους από τους clients, σε 3 δίσκους. Χρησιμοποιώντας την βέλτιστη μέθοδο υπολογισμού συχνοτήτων των δίσκων Έχουμε τις εξής συχνότητες: Σχετική_Συχνότητα (Δίσκος_1) = 4 Σχετική_Συχνότητα (Δίσκος_2) = 2 Σχετική_Συχνότητα (Δίσκος_3) = 1 Άρα οι δίσκοι που προκύπτουν είναι οι εξής: Δίσκος_1 1 Δίσκος_2 2 3 Δίσκος_ Ο κάθε δίσκος χωρίζεται σε chunks ως εξής: Αριθμός _ Chunks (Δίσκος _ i) = ΕΚΠ / Σχετική _ Συχνότητα (Δίσκος _ i) ΕΚΠ (4,2,1) = 4 Αριθμός _ Chunks (Δίσκος _ 1) = 4 / 4 = 1 Αριθμός _ Chunks (Δίσκος _ 2) = 4 / 2 = 2-46-

47 Αριθμός _ Chunks (Δίσκος _ 3) = 4 / 1 = 4 C10: 1 C20: 2 C21: 3 C30: 4, 5 C31: 6,7 C32: 8,9 C33: 10,11 Αλγόριθμος τοποθέτησης των chunks στο πρόγραμμα εκπομπής: Πρόγραμμα εκπομπής: Στην διαδικασία που παρουσιάζεται παρακάτω, αρχικοποιούνται δύο πίνακες οι οποίοι αντιπροσωπεύουν το πρόγραμμα εκπομπής. Συγκεκριμένα ο πίνακας BroadcastProgram καταχωρούνται τα ονόματα των chunks του προγράμματος εκπομπής. Δηλαδή, για το παραπάνω παράδειγμα: BroadcastProgram C10 C20 C30 C10 C21 C31 C10 C20 C32 C10 C21 C33 Ενώ στον πίνακα program2 καταχωρούνται οι σελίδες που γίνονται broadcast (πρόγραμμα εκπομπής) Public Sub createchunkprogram() 'Δημιουργία των προγραμματων chunk και των προργαμμάτων σελιδων με chunk 'Δηλώσεις βοηθητικών μεταβλητών Dim i As Long, j As Long, c As Long, p As Long, k As Long, t As Long Dim tfl As Boolean c = 0 For i = 1 To findlcm() For j = 1 To N c = c + 1 Next j ReDim BroadcastProgram(c) ReDim program2(20) 'Ορισμός του μεγέθους του προγράμματος σε 20 σελίδες 'ώστε να αποφεύγονται τα πολλά redims c = 0 p = 0 'αρχικοποίηση του μετρητή μεγέθους προγράμματος 'Αλγόριθμος τοποθέτησης των chunks στο πρόγραμμα For i = 0 To findlcm() - 1 For j = 1 To N 'Για κάθε δίσκο c = c + 1 BroadcastProgram(c) = chunknamearray(j, 1 + (i Mod NumChunksArray(j))) If fpr1 = True Then 'Αν έχει επιλεγεί η δημιουργία προγράμματος σελίδων τότε k = 1 tfl = False For t = 1 To Len(cPagesArray(j, 1 + (i Mod NumChunksArray(j)))) 'Για κάθε chunk σελίδων που γίνεται broadcast If Mid(cPagesArray(j, 1 + (i Mod NumChunksArray(j))), t, 1) = " " Then 'Τσέκαρε αν υπάρχουν περισσότερες από μια σελίδες στο chunk αν υπάρχουν τότε p = p + 1 Για i από 0 μέχρι LCM - 1 Για j από 1 μέχρι Αριθμός _ δίσκων Broadcast chunk (i mod Αριθμός _ Chunks(Δίσκος _ j)) from Δίσκο j Τέλος_επανάληψης Τέλος_Επανάληψης 'Αύξησε τον μετρητή μεγέθους προγράμματος και τοποθέτησε 'μια σελίδα του chunk στο πρόγραμμα program2(p) = Mid(cPagesArray(j, 1 + (i Mod NumChunksArray(j))), k, t - k) k = t + 1 tfl = True If p >= UBound(program2) Then 'Αύξησε το μέγεθος του πίνακα σε περίπτωση που δεν υπάρχει αρκετός χώρος ReDim Preserve program2(p + 20) -47-

48 Next t If Not (tfl) Then p = p + 1 'σε περίπτωση που το chunk έχει μια σελίδα 'αύξησε το μετρητή μεγέθους προγράμματος και κάνε τοποθέτηση 'της σελίδας στο πρόγραμμα program2(p) = cpagesarray(j, 1 + (i Mod NumChunksArray(j))) If p >= UBound(program2) Then 'Αύξησε το μέγεθος του πίνακα σε περίπτωση που δεν υπάρχει αρκετός χώρος ReDim Preserve program2(p + 20) 'Εμφάνιση του προγράμματος chunks στο grid της φόρμας MainForm.grid3.FormatString = MainForm.grid3.FormatString + " <" MainForm.grid3.TextMatrix(1, c - 1) = BroadcastProgram(c) Next j If fpr1 = True Then c = 0 'αν λόγω των redims έχουν διαγραφεί περιττά κενά, διέγραψε τα For i = 1 To UBound(program2) If program2(i) = "" Then c = c + 1 ReDim Preserve program2(ubound(program2) - c) 4.9 Διαδικασία δημιουργίας flat προγράμματος Ένα πρόγραμμα εκπομπής που δε λαμβάνει υπόψη πόσο σημαντικό είναι κάθε αντικείμενο και απλά εκπέμπει τα αντικείμενα με ίδια συχνότητα, ονομάζεται flat program και διαθέτει έναν δίσκο. P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Sub makeflatprogram() Dim i As Long PR = numofpages ReDim program(numofpages) For i = 1 To numofpages program(i) = i 4.10 Αλγόριθμος δημιουργίας προγράμματος αποφεύγοντας το βήμα δημιουργίας chunks Βήματα αλγορίθμου Αρχικά υπολογίζουμε το μέγεθος του προγράμματος σε πλήθος σελίδων που θα μεταδίδονται περιοδικά (η μεγάλη περίοδός του). Αυτό δίνεται από την σχέση: Μέγεθος-PR = για _ κά θε _ δίσκο _ I Σχετ.Συχν.(I) x Αρ.Σελίδων (I) -48-

49 Κατόπιν, κάνουμε κατανομή των σελίδων έτσι ώστε η κάθε μία να εμφανίζεται τόσες φορές όσες είναι και η συχνότητα του δίσκου που ανήκει. Για να πετύχει αυτό τοποθετούμε τις επαναλήψεις κάθε σελίδας σε απόσταση d: d = Απόσταση επανάληψης(σελίδα_ι) = PR Σ χετ. Συχν.( Ι) Εάν όμως κατά την τοποθέτηση προκύψει μη κενή θέση τότε μετατοπίζεται ο δείκτης σάρωσης κατά 1 θέση δεξιότερα μέχρι να βρεθεί κενή θέση και να τοποθετηθεί η σελίδα: Στο παράδειγμα που βλέπουμε στο σχήμα έχει προκύψει ότι PR=21 (μέγεθος προγράμματος από τις συχνότητες) και ότι η γαλάζια και η πράσινη σελίδα πρέπει να τοποθετηθεί 2 φορές (βρίσκονται σε δίσκο συχνότητας 2) και κατόπιν η κόκκινη 5 φορές (βρίσκεται σε δίσκο συχνότητας 5). Τότε: Η γαλάζια τοποθετείται στην πρώτη θέση και μετά σε απόσταση d=int(21/2)=10 (μετά από 10 θέσεις). Κατόπιν τοποθετείται η πράσινη στην δεύτερη θέση και με ανάλογο τρόπο μετά από 10 θέσεις. Η κόκκινη τοποθετείται στην τρίτη θέση και μετά σε απόσταση d=int(21/5)=4 (μετά από 4 θέσεις). Στην επόμενη όμως τοποθέτησή της υπάρχει ήδη η γαλάζια, οπότε μετακινείται ο δείκτης μέχρι την επόμενη κενή θέση προς τα δεξιά και τελικά τοποθετείται μετά από 6 θέσεις. Στη συνέχεια επαναλαμβάνεται το ίδιο και τοποθετούνται οι 5 κόκκινες σελίδες. Public Sub ComputePageProgram() Dim i As Long, j As Long, d As Long, k As Long Dim sm As Long, pageno As Long, progindex As Long 'υπολογισμός μεγέθους του προγράμματος σε αριθμό σελίδων sm = 0 For i = 1 To N sm = sm + RelFreqArray(i) * pagesnumberofdisk(disknamearray(i)) PR = sm ReDim program(pr) 'αρχικοποίηση πίνακα προγράμματος σελίδων For i = 1 To PR program(i) = 0 'κατανομή των σελίδων στο πρόγραμμα pageno = 0 For i = 1 To N 'για κάθε δίσκο που υπάρχει For j = 1 To pagesnumberofdisk(disknamearray(i)) 'και για κάθε σελίδα που βρίσκεται σε αυτόν 'υπολογίζεται η απόσταση επανάληψης της σελίδας στο πρόγραμμα d = Int(PR / RelFreqArray(i)) 'σημειώνεται ποια σελίδα θα τοποθετηθεί pageno = pageno + 1 'και τοποθετείται σε θέσεις ίσων αποστάσεων d στο πρόγραμμα 'τόσες φορές όσες είναι και η συχνότητα εμφάνισής της σ'αυτό For k = 1 To RelFreqArray(i) progindex = d * (k - 1) + 1 'βρίσκεται ο δείκτης τοποθέτησης If program(progindex) <> 0 Then 'και αν υπάρχει ήδη άλλη σελίδα εκεί τότε Do progindex = progindex + 1 'μετατοπίζουμε τον δείκτη κατά 1 δεξιότερα 'μέχρι να βρούμε άδεια θέση ή να ξεπεράσουμε το μέγεθος του προγράμματος Loop Until (program(progindex) = 0 Or progindex > PR) If progindex > PR Then MsgBox "Προσοχή, κάποιος δείκτης τοποθέτησης ξεπερνά το μέγεθος του προγράμματος.", vbcritical -49-

50 'τοποθετείται η σελίδα στη θέση που βρέθηκε program(progindex) = Val(Right(NameOfPagesArray(pageno), Len(NameOfPagesArray(pageno)) - 1)) Next k Next j 4.11 Συνάρτηση εύρεσης του πλήθους σελίδων που ανήκουν σε ένα δίσκο Public Function pagesnumberofdisk(nd As String) As Long 'Επιστρέφει το πόσες σελίδες βρίσκονται στο δίσκο nd Dim i As Long, j As Long, Counter As Long Counter = 0 For j = 1 To numofpages If BelongsToDiskArray(j) = nd Then Counter = Counter + 1 Next j pagesnumberofdisk = Counter End Function 4.12 Διαδικασία δημιουργία προγράμματος indexes σελίδων Sub MakeNewIndexProgram() 'Διαδικασία δημιουργίας προράμματος με indexes σελίδων. Η διαδικασία αυτή είναι απαραίτητη επειδή η 'διαδιακασία του time simulation απαιτεί index σελίδων και όχι ονόματα σελίδων Dim i As Long PR = UBound(program2) ReDim program(pr) For i = 1 To PR If program2(i) <> "spcx" And program2(i) <> "spcy" Then program(i) = Val(Mid(program2(i), 2, Len(program2(i)) - 1)) Else program(i) = Βοηθητικές διαδικασίες και συναρτήσεις Public Sub SortArray() 'Διαδικασία ταξινόμησης των πινάκων των πιθανοτήτων προσπέλασης 'χρησιμοποιώντας τον αλγόριθμο BubbleSort Dim i, j As Long Dim temp1 As Double Dim temp2 As String For i = 2 To numofpages For j = numofpages To i Step -1 If AccessProbabilitiesArray(j - 1) < AccessProbabilitiesArray(j) Then temp1 = AccessProbabilitiesArray(j - 1) AccessProbabilitiesArray(j - 1) = AccessProbabilitiesArray(j) AccessProbabilitiesArray(j) = temp1 temp1 = NormalizedAPArray(j - 1) NormalizedAPArray(j - 1) = NormalizedAPArray(j) NormalizedAPArray(j) = temp1 temp2 = NameOfPagesArray(j - 1) NameOfPagesArray(j - 1) = NameOfPagesArray(j) NameOfPagesArray(j) = temp2 Next j Public Function findmax() As Long -50-

51 'Βρίσκει και επιστρέφει το μέγιστο αριθμό chunks Dim max As Long, i As Long max = NumChunksArray(1) For i = 2 To N If NumChunksArray(i) > max Then max = NumChunksArray(i) findmax = max End Function Function LinesOfFile(path As String) As Long 'Επιστρέφει τον αριθμό γραμμών ενος αρχείο κειμένου Dim i As Long, a As String i = 0 Open path For Input As #1 Do While Not EOF(1) Input #1, a i = i + 1 Loop Close #1 LinesOfFile = i End Function Public Function findlcm() As Long 'Επιστρέφει το ελάχιστο κοινό πολλαπλάσιο (LCM) των συχνοτήτων των δίσκων Dim i As Long, MKD As Long, M As Long Dim tmpflag As Boolean MKD = RelFreqArray(1) M = RelFreqArray(1) For i = 2 To N M = M * RelFreqArray(i) If RelFreqArray(i) < MKD Then MKD = RelFreqArray(i) tmpflag = True While tmpflag tmpflag = False For i = 1 To N If (RelFreqArray(i) Mod MKD) <> 0 Then tmpflag = True Exit For If tmpflag Then MKD = MKD - 1 Wend findlcm = M / MKD End Function Public Sub RedimsArraysOfDisks(N As Long) ReDim DiskRangeArray(2, N) ReDim NumChunksArray(N) ReDim DiskNameArray(N) ReDim RelFreqArray(N) ComputeDiskRanges 'Υπολογισμός διαστημάτων δίσκων ComputeRelFrequencies 'υπολογίζουμε τις συχνότητές τους Public Function NumStateInt(alpha As String) As Boolean 'Δέχεται ως παράμετρο ένα string και επιστρέφει false αν ο το string αυτό δεν είναι αριθμός integer Dim i As Integer If alpha = "" Then NumStateInt = False: Exit Function For i = 1 To Len(alpha) If (Asc(Mid(alpha, i, 1)) < 48 Or Asc(Mid(alpha, i, 1)) > 57) Then NumStateInt = False Exit Function -51-

52 NumStateInt = True End Function Public Function NumStateReal(alpha As String) As Boolean 'Δέχεται ως παράμετρο ένα string και επιστρέφει false αν ο το string αυτό δεν είναι αριθμός real Dim mi As Long Dim i As Integer If alpha = "" Then NumStateReal = False: Exit Function If alpha = "," Then NumStateReal = False Exit Function mi = 0 Dim Temp As String For i = 1 To Len(alpha) Temp = Mid(alpha, i, 1) If (Asc(Temp) < 48 Or Asc(Temp) > 57) And Temp <> "," Then NumStateReal = False Exit Function If Temp = "," Then mi = mi + 1 If mi > 1 Then NumStateReal = False Exit Function NumStateReal = True End Function 4.14 Διαδικασίες ανάκτησης και αποθήκευσης των παραμέτρων στην Registry των Windows Sub setregvalues() 'Αποθήκευση των παραμέτρων στην registry των windows SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_1a", setting:=cstr(uniflag) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_1b", setting:=cstr(zipfflag) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_1c", setting:=cstr(fileflag) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_2", setting:=cstr(theta) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_4", setting:=cstr(numofpages) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_5", setting:=cstr(delta) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_6", setting:=cstr(freqmethod) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_7", setting:=cstr(fmin) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_8", setting:=cstr(diskflag) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_9", setting:=cstr(ndisk) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_10", setting:=cstr(e) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_11", setting:=cstr(bdtimes) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_12", setting:=cstr(thinktime) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_13", setting:=cstr(noiserate) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_14", setting:=cstr(programflag) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_15", setting:=cstr(fpr1) SaveSetting APPNAME:="SimNetValues", Section:="Settings", Key:="option_16", setting:=cstr(fpr2) Sub getregvalues() 'Ανάκτηση των παραμέτρων απο την registry των windows uniflag = CBool(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_1a", Default:="False")) zipfflag = CBool(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_1b", Default:="True")) fileflag = CBool(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_1c", Default:="False")) theta = CDbl(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_2", Default:="0,95")) numofpages = CInt(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_4", Default:="50")) delta = CInt(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_5", Default:="2")) FreqMethod = CByte(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_6", Default:="2")) fmin = CInt(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_7", Default:="1")) DiskFlag = CBool(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_8", Default:="True")) NDisk = CLng(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_9", Default:="3")) e = CByte(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_10", Default:="0")) bdtimes = CLng(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_11", Default:="10")) -52-

53 ThinkTime = CLng(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_12", Default:="2")) noiserate = CLng(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_13", Default:="10")) programflag = CByte(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_14", Default:="1")) fpr1 = CBool(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_15", Default:="True")) fpr2 = CBool(GetSetting(APPNAME:="SimNetValues", Section:="Settings", Key:="option_16", Default:="True")) 4.15 Διαδικασίες αποθήκευσης πληροφοριών σε αρχεία κειμένου Public Sub SaveFromMainForm() 'Αποθήκευση σε αρχείο των πινάκων της mainform Dim i As Long With MainForm.CDialog.DialogTitle = "Επιλέξτε αρχείο για αποθήκευση των αποτελεσμάτων".cdialog.showsave If.CDialog.FileName = "" Then Exit Sub Open.CDialog.FileName For Output As #1 Print #1, "Παράμετροι" Print #1, "" If zipfflag Then Print #1, "Κατανομή πιθανοτήτων προσπέλασης: Zipf" Print #1, "Παράμετρος Θ:", theta Else Print #1, "Κατανομή πιθανοτήτων προσπέλασης: Τυχαία κατανομή" Print #1, "Σύνολο σελίδων: ", numofpages Print #1, "Ελάχιστη συχνότητα δίσκων: ", fmin Print #1, "Παράμετρος Δ: ", delta If DiskFlag Then Print #1, "Εύρεση του βέλτιστου αριθμού δίσκων (αυτόματα)" Else Print #1, "Αριθμός δίσκων: ", CStr(NDisk) Print #1, "Μέθοδος υπολογισμού συχνοτήτων δίσκου: ", PropertiesForm.Option2(FreqMethod - 1).Caption Print #1, " " Print #1, "Πληροφορίες Παραγόμενων Σελίδων" Print #1, "Όνομα Σελίδας" + vbtab + "Πιθανότητα Προσπέλασης" + vbtab + "Κανονικοποιημένη Πιθ. Προσπελ." + vbtab + "Δίσκος" For i = 1 To.Grid.Rows - 1 Print #1, vbtab +.Grid.TextMatrix(i, 0) + vbtab + vbtab +.Grid.TextMatrix(i, 1) + vbtab + vbtab + vbtab +.Grid.TextMatrix(i, 2) + vbtab + vbtab + vbtab +.Grid.TextMatrix(i, 3) Print #1, " " Print #1, "Πληροφορίες Παραγόμενων δίσκων" If DiskFlag Then Print #1, "Βέλτιστος αριθμός δίσκων (αυτόματη εύρεση)", N Print #1, "Δίσκος" + vbtab + "Διάστημα πιθανοτήτων" + vbtab + "Συχνότητα" + vbtab + "Αριθμός Chunks" + vbtab + "Αριθμός Σελίδων" + vbtab + "Chunks" For i = 1 To.Grid2.Rows - 1 Print #1,.Grid2.TextMatrix(i, 0) + vbtab +.Grid2.TextMatrix(i, 1) + vbtab + vbtab +.Grid2.TextMatrix(i, 2) + vbtab + vbtab + vbtab +.Grid2.TextMatrix(i, 3) + vbtab + vbtab +.Grid2.TextMatrix(i, 4) + vbtab +.Grid2.TextMatrix(i, 5) Print #1, " " Print #1, "Προγράμμα εκπομπής" Print #1,.Label1.Caption Dim s As String s = "" For i = 0 To.grid3.Cols - 1 s = s +.grid3.textmatrix(1, i) + ", " Print #1, s If fpr1 Then Print #1,.Label4.Caption s = "" For i = 0 To.Grid5.Cols - 1 s = s +.Grid5.TextMatrix(1, i) + ", " Print #1, s If fpr2 Then -53-

54 Print #1,.Label3.Caption s = "" For i = 0 To.Grid4.Cols - 1 s = s +.Grid4.TextMatrix(1, i) + ", " Print #1, s Close #1 End With Public Sub SaveFromClientForm() 'Αποθήκευση του πίνακα της φόρμας clientstatsform Dim i As Long MainForm.CDialog.DialogTitle = "Επιλέξτε αρχείο για αποθήκευση των αποτελεσμάτων" MainForm.CDialog.ShowSave If MainForm.CDialog.FileName = "" Then Exit Sub Open MainForm.CDialog.FileName For Output As #1 Print #1, "Παράμετροι" If zipfflag Then Print #1, "Κατανομή πιθανοτήτων προσπέλασης: Zipf" Print #1, "Παράμετρος Θ:", theta Else Print #1, "Κατανομή πιθανοτήτων προσπέλασης: Τυχαία κατανομή" Print #1, "Σύνολο σελίδων: ", numofpages Print #1, "Ελάχιστη συχνότητα δίσκων: ", fmin Print #1, "Παράμετρος Δ: ", delta If DiskFlag Then Print #1, "Εύρεση του βέλτιστου αριθμού δίσκων (αυτόματα)" Else Print #1, "Αριθμός δίσκων: ", CStr(NDisk) Print #1, "Μέθοδος υπολογισμού συχνοτήτων δίσκου: ", PropertiesForm.Option2(FreqMethod - 1).Caption Print #1, " " Print #1, "Πληροφορίες Παραγώμενων Σελίδων" Print #1, "Όνομα Σελίδας" + vbtab + "Πιθανότητα Προσπέλασης" + vbtab + "Κανονικοποιημένη Πιθ. Προσπελ." + vbtab + "Noised Πιθανότητες" + vbtab + "Μέση Καθυστέρηση" For i = 1 To ClientStatsForm.Grid.Rows - 1 Print #1, vbtab + ClientStatsForm.Grid.TextMatrix(i, 0) + vbtab + vbtab + ClientStatsForm.Grid.TextMatrix(i, 1) + vbtab + vbtab + vbtab + ClientStatsForm.Grid.TextMatrix(i, 2) + vbtab + vbtab + vbtab + vbtab + ClientStatsForm.Grid.TextMatrix(i, 3) + vbtab + vbtab + vbtab + ClientStatsForm.Grid.TextMatrix(i, 4) Print #1, " " Print #1, ClientStatsForm.Label2.Caption Close #1 Public Sub SaveFromSimForm() 'Αποθήκευση των πινάκων της φόρμας TimeSimForm Dim i As Long MainForm.CDialog.DialogTitle = "Επιλέξτε αρχείο για αποθήκευση των αποτελεσμάτων" MainForm.CDialog.ShowSave If MainForm.CDialog.FileName = "" Then Exit Sub Open MainForm.CDialog.FileName For Output As #1 Print #1, "Παράμετροι" If zipfflag Then Print #1, "Κατανομή πιθανοτήτων προσπέλασης: Zipf" Print #1, "Παράμετρος Θ:", theta Else Print #1, "Κατανομή πιθανοτήτων προσπέλασης: Τυχαία κατανομή" Print #1, "Σύνολο σελίδων: ", numofpages Print #1, "Ελάχιστη συχνότητα δίσκων: ", fmin Print #1, "Παράμετρος Δ: ", delta If DiskFlag Then Print #1, "Εύρεση του βέλτιστου αριθμού δίσκων (αυτόματα)" Else Print #1, "Αριθμός δίσκων: ", CStr(NDisk) Print #1, "Μέθοδος υπολογισμού συχνοτήτων δίσκου: ", PropertiesForm.Option2(FreqMethod).Caption Print #1, " " Print #1, "Πληροφορίες προσομοίωσης ανά χρονική στιγμή" -54-

55 Print #1, "Χρ. Στιγμή" + vbtab + "Πρόγραμμα" + vbtab + "Αίτηση" + vbtab + "Δίσκος" + vbtab + "Χρόνος Απόκρισης" + vbtab + "Συνολικός Χρόνος Απόκρισης" For i = 1 To TimeSimForm.Grid.Rows - 1 Print #1, TimeSimForm.Grid.TextMatrix(i, 0) + vbtab + vbtab + TimeSimForm.Grid.TextMatrix(i, 1) + vbtab + vbtab + TimeSimForm.Grid.TextMatrix(i, 2) + vbtab + TimeSimForm.Grid.TextMatrix(i, 3) + vbtab + vbtab + TimeSimForm.Grid.TextMatrix(i, 4) + vbtab + vbtab + TimeSimForm.Grid.TextMatrix(i, 5) Print #1, " " Print #1, "Πληροφορίες εξυπηρέτησης αιτήσεων απο τους δίσκους" Print #1, "Δίσκος" + vbtab + "Σύνολο αιτήσεων" + vbtab + "Συνολικός χρόνος απόκρισης" + vbtab + "Μέσος χρόνος απόκρισης" For i = 1 To TimeSimForm.Grid2.Rows - 1 Print #1, TimeSimForm.Grid2.TextMatrix(i, 0) + vbtab + TimeSimForm.Grid2.TextMatrix(i, 1) + vbtab + vbtab + TimeSimForm.Grid2.TextMatrix(i, 2) + vbtab + vbtab + vbtab + TimeSimForm.Grid2.TextMatrix(i, 3) Close # Διαδικασία υπολογισμού μέσων καθυστερήσεων Public Sub ComputePB() 'Διαδικασία υπολογισμού μέσων καθυστερήσεων για κάθε σελίδα που υπάρχει Dim i As Long, j As Long, k As Long, c As Long 'για κάθε σελίδα που υπάρχει For j = 1 To numofpages 'αρχικοποιείται η μέση καθυστέρησή της PB(j) = 0 'εντοπίζεται η πρώτη φορά που εμφανίζεται στο πρόγραμμα από την αρχή του (δείκτης k) For i = 1 To PR If program(i) = j Then k = i Exit For 'μηδενίζεται ο μετρητής απόστασης c = 0 'διασχίζεται το πρόγραμμα από το σημείο k μέχρι το τέλος και αν υπάρχει η σελίδα μηδενίζεται ο μετρητής ενώ 'αν δεν υπάρχει προστίθεται η τρέχουσα απόσταση στη μέση καθυστέρησή της For i = k To PR If program(i) <> j Then c = c + 1 PB(j) = PB(j) + c Else c = 0 'διασχίζεται το πρόγραμμα από την αρχή του έως το σημείο k-1 και αν υπάρχει η σελίδα 'μηδενίζεται ο μετρητής ενώ αν δεν υπάρχει προστίθεται η τρέχουσα απόσταση στη μέση καθυστέρησή της For i = 1 To k - 1 If program(i) <> j Then c = c + 1 PB(j) = PB(j) + c Else c = 0 'υπολογίζουμε την μέση καθυστέρηση όταν διαιρέσουμε και με το μέγεθος του προγράμματος 'και προσθέσουμε το 1/2 που είναι η μέση καθυστέρηση όταν έχουμε σύνδεση εντός της 'μετάδοσης μίας σελίδας και όχι ακριβώς από την αρχή της PB(j) = PB(j) / PR PB(j) = PB(j) + 1 / 2 Next j -55-

56 4.17 Διαδικασία υπολογισμού καθυστέρησης Public Sub ComputeDelay() 'υπολογισμός της συνολικής καθυστέρησης που είναι και το μέτρο της απόδοσης του συστήματος Dim d As Double, j As Long, k As Long, l As Long, h As Long, cn As Long 'εάν δεν υπάρχει θόρυβος τότε If e = 0 Then 'αρχικοποίηση του αθροίσματος d = 0 'για κάθε σελίδα που υπάρχει υπολογίζεται το άθροισμα των γινομένων των μέσων καθυστερήσεών 'της με τις αντίστοιχες πιθανότητες προσπέλασής της For j = 1 To numofpages d = d + PB(j) * NormalizedAPArray(j) Next j Else 'εάν όμως υπάρχει θόρυβος τότε 'αρχικοποιούνται οι νέες πιθανότητες προσπέλασης στις κανονικές τους τιμές For j = 1 To numofpages pe(j) = NormalizedAPArray(j) Next j 'για κάθε σελίδα που υπάρχει For h = 1 To numofpages 'γίνεται εκλογή ενός τυχαίου αριθμού στο [0,1] 'και εάν πέσει στο [0,e/100] (δηλαδή έχουμε πιθανότητα εκλογής e%) If Rnd <= e / 100 Then 'τότε η σελίδα αυτή επιλέγεται για να αλλοιωθεί η πιθανότητα προσπέλασής της k = h 'εάν έχουμε 2 ή περισσότερους δίσκους If N > 1 Then 'επιλέγεται και μία άλλη (l) έτσι ώστε να μην ανήκει στον ίδιο δίσκο διότι εάν επιλεχθεί από 'τον ίδιο δίσκο η συνολική απόδοση του δίσκου δεν πρόκειται να αλλοιωθεί. cn = 0 'θα γίνουν numofpages προσπάθειες Do l = Int(Rnd * numofpages + 1) cn = cn + 1 Loop Until PB(l) <> PB(k) Or cn > numofpages If cn > numofpages Then 'αν δεν πέτυχαν οι προσπάθειες τότε επιλέγεται απλά μία άλλη σελίδα Do l = Int(Rnd * numofpages + 1) Loop Until l <> k Else 'εάν όμως έχουμε 1 μόνο δίσκο τότε επιλέγεται μία άλλη (l) τυχαία εκτός της k Do l = Int(Rnd * numofpages + 1) Loop Until l <> k 'αλλοιώνεται αφαιρετικά η αντίστοιχη πιθανότητα προσπέλασης της k κατά το 'ανάλογο ποσοστό θορύβου της k pe(k) = pe(k) - pe(k) * e / 100 'αλλοιώνεται προσθετικά η αντίστοιχη πιθανότητα προσπέλασης της l κατά το ανάλογο ποσοστό 'θορύβου της k οπότε είναι σαν να έδωσε η k στην l το e/100 της προσπέλασής της pe(l) = pe(l) + pe(k) * e / 100 Next h 'αρχικοποίηση του αθροίσματος d = 0 'για κάθε σελίδα που υπάρχει υπολογίζεται το άθροισμα των γινομένων των μέσων καθυστερήσεών της 'με τις αντίστοιχες νέες πιθανότητες προσπέλασής της For j = 1 To numofpages d = d + PB(j) * pe(j) Next j 'αποτυπώνεται το αποτέλεσμα -56-

57 delay = d 4.18 Συνάρτηση εύρεσης του δίσκου όπου βρίσκεται μια σελίδα Public Function FindDiskOfPage(pageID As Long) As Long 'Συνάρτηση εύρεσης του δίσκου που βρίσκεται μία σελίδα Dim s As String Dim i As Long Dim p As Long s = "P" + CStr(pageID) For i = 1 To numofpages If NameOfPagesArray(i) = s Then p = i Exit For s = BelongsToDiskArray(p) FindDiskOfPage = Val(Mid(s, 2, Len(s) - 1)) End Function -57-

58 4.19 Αλγόριθμος προσομοίωσης πραγματικού χρόνου Το πρόγραμμα ξεκινά τη μετάδοσή του κυκλικά για (bdtimes) φορές. Αυξηση του timeunit Ελέγχουμε αν γίνεται παραγωγή νέας αίτησης από τον client ΝΑΙ ThinkTime / TimeUnit ΟΧΙ Εκλέγεται σελίδα (J) ανάλογα με την πιθανότητα της κατανομής της (Zipf ή τυχαία) Εάν υπάρχει θόρυβος (e>0) τότε ΝΑΙ Με πιθανότητα e% εκλέγεται μία άλλη σελίδα από άλλο δίσκο (αν είναι εφικτό) αντί της (J) ΟΧΙ Καταγράφεται η νέα αίτηση σε λίστα εξυπηρέτησης (requests) και γίνονται στατιστικές μετρήσεις Μεταδίδεται η τρέχουσα σελίδα του προγράμματος (pageno) Ελέγχουμε αν την στιγμή αυτή μεταδίδεται κάποια σελίδα που αιτήθηκε διασχίζοντας την λίστα εξυπηρέτησης (requests) ΝΑΙ Εξυπηρετείται ο client και ακυρώνεται η αίτηση από τη λίστα ΟΧΙ Αυξάνεται ο χρόνος απόκρισης του δίσκου που έχει την σελίδα Καταγράφονται στατιστικές μετρήσεις και γίνεται επανάληψη μετάδοσης μέχρι να ολοκληρωθεί η διαδικασία Υπολογισμός τελικών στατιστικών (μέσοι χρόνοι κλπ.) Σχήμα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

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

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μιας προσαρμοστικής πολιτικής αντικατάστασης αρχείων, με χρήση

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

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

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

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access...9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 18 Άνοιγμα και κλείσιμο βάσης δεδομένων... 21 Ερωτήσεις ανακεφαλαίωσης... 22 Πρακτική εξάσκηση...

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering Οργάνωση και Σχεδίαση Η/Y (HY232) Εργαστήριο 8 Χειμερινό Εξάμηνο 2016-2017 1. Προσομοίωση λειτουργίας ιεραρχίας

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΑΡΧΙΤΕΚΤΟΝΙΚΗ

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

Ασκήσεις Caches

Ασκήσεις Caches Ασκήσεις Caches 1 Άσκηση 1η Θεωρήστε ένα σύστημα μνήμης με μία cache: 4-way set associative μεγέθους 256ΚΒ, με cache line 8 λέξεων. Χαρακτηριστικά συστήματος μνήμης: μέγεθος της λέξης είναι 32 bits. 1

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

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

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης

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

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy) Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy) 1 Συστήματα Μνήμης Η οργάνωση του συστήματος μνήμης επηρεάζει τη λειτουργία και απόδοση ενός μικροεπεξεργαστή: Διαχείριση μνήμης και περιφερειακών (Ι/Ο) απότολειτουργικόσύστημα

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

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

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

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

Β Γραφικές παραστάσεις - Πρώτο γράφημα Σχεδιάζοντας το μήκος της σανίδας συναρτήσει των φάσεων της σελήνης μπορείτε να δείτε αν υπάρχει κάποιος συσχετισμός μεταξύ των μεγεθών. Ο συνήθης τρόπος γραφικής

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

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015 Λύσεις 2η σειράς ασκήσεων Προθεσμία παράδοσης: 18 Μαίου 2015 Πρόβλημα 1. (14

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

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

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

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

Κατακερματισμός (Hashing)

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

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

Κεφάλαιο 3 Πολυπλεξία

Κεφάλαιο 3 Πολυπλεξία Κεφάλαιο 3 Πολυπλεξία Μάθημα 3.1: Μάθημα 3.2: Μάθημα 3.3: Πολυπλεξία επιμερισμού συχνότητας χρόνου Συγκριτική αξιολόγηση τεχνικών πολυπλεξίας Στατιστική πολυπλεξία Μετάδοση Δεδομένων Δίκτυα Υπολογιστών

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

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

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

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

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

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

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

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ, Ασκήσεις Caches Άσκηση 1η Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ, με cache line 8 λέξεων. Χαρακτηριστικά συστήματος μνήμης: μέγεθος της λέξης είναι 32 bits. 1 byte

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

Η εντολή «επανέλαβε Χ»

Η εντολή «επανέλαβε Χ» Η εντολή «επανέλαβε Χ» Όπως είδαμε πιο πάνω, η εντολή για πάντα είναι χρήσιμη σε διάφορα προγράμματα όταν π.χ. θέλουμε να δείξουμε την κίνηση της γης γύρω από τον ήλιο ή για να αναπαραστήσουμε το δίλημμα

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

Μια από τις σημαντικότερες δυσκολίες που συναντά ο φυσικός στη διάρκεια ενός πειράματος, είναι τα σφάλματα.

Μια από τις σημαντικότερες δυσκολίες που συναντά ο φυσικός στη διάρκεια ενός πειράματος, είναι τα σφάλματα. Εισαγωγή Μετρήσεις-Σφάλματα Πολλές φορές θα έχει τύχει να ακούσουμε τη λέξη πείραμα, είτε στο μάθημα είτε σε κάποια είδηση που αφορά τη Φυσική, τη Χημεία ή τη Βιολογία. Είναι όμως γενικώς παραδεκτό ότι

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

Προγραμματιστικό Περιβάλλον

Προγραμματιστικό Περιβάλλον Προγραμματιστικό Περιβάλλον Προγραμματίζοντας τις βασικές αριθμητικές πράξεις 2 ο Γυμνάσιο Παλλήνης Καθηγήτρια: Ευφροσύνη Σκιαδά Πρόσθεση Αφαίρεση Πολλαπλασιασμός Σύμβολα αριθμητικών πράξεων Διαίρεση Τι

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

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

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

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

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

ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ

ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ Tel.: +30 2310998051, Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Φυσικής 541 24 Θεσσαλονίκη Καθηγητής Γεώργιος Θεοδώρου Ιστοσελίδα: http://users.auth.gr/theodoru ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ

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

Ασκήσεις Caches

Ασκήσεις Caches Ασκήσεις Caches 1 Άσκηση 1η Θεωρήστε ένα σύστημα μνήμης με μία cache: 4-way set associative μεγέθους 256ΚΒ, με cache line 8 λέξεων. Χαρακτηριστικά συστήματος μνήμης: μέγεθος της λέξης είναι 32 bits. 1

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

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

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

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

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ 3.1 Τυχαίοι αριθμοί Στην προσομοίωση διακριτών γεγονότων γίνεται χρήση ακολουθίας τυχαίων αριθμών στις περιπτώσεις που απαιτείται η δημιουργία στοχαστικών

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

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

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

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

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) SMPcache Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) 1. Βασικές ρυθμίσεις του συστήματος: δημιουργία μια δικής μας σύνθεσης συστήματος. Το SMPcache είναι ένα εργαλείο με το οποίο μπορούμε

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

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος ΑΣΚΗΣΗ Δημιουργία Ευρετηρίων Συλλογής Κειμένων Σκοπός της άσκησης είναι η υλοποίηση ενός συστήματος επεξεργασίας

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

Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης

Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης Πρωτόκολλα Τυχαίας Προσπέλασης (Random Access Protocols) Αρχές Πρωτοκόλλων RA Όταν υπάρχει πακέτο προς αποστολή, αποστέλλεται με μέγιστο ρυθμό μετάδοσης

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΣΤΑΤΙΣΤΙΚΗ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ. Κεφάλαιο 7. Τυχαίες Μεταβλητές και Διακριτές Κατανομές Πιθανοτήτων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΣΤΑΤΙΣΤΙΚΗ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ. Κεφάλαιο 7. Τυχαίες Μεταβλητές και Διακριτές Κατανομές Πιθανοτήτων ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΤΡΑΣ Εργαστήριο Λήψης Αποφάσεων & Επιχειρησιακού Προγραμματισμού Καθηγητής Ι. Μητρόπουλος ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΣΤΑΤΙΣΤΙΚΗ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εργαστήριο 8 ο. Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εργαστήριο 8 ο. Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα Τμήμα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ ΨΗΦΙΑΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ Εργαστήριο 8 ο Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα Βασική Θεωρία Σε ένα σύστημα μετάδοσης

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

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

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

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

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης

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

Δίκτυα Υπολογιστών I Εργαστήρια

Δίκτυα Υπολογιστών I Εργαστήρια Δίκτυα Υπολογιστών I Εργαστήρια Άσκηση 7 η Υποεπίπεδο ελέγχου λογικής σύνδεσης Έλεγχος Σφαλμάτων Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Διδάσκων: Παπαπέτρου Ευάγγελος 2 1 Εισαγωγή

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

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ 2.1 Εισαγωγή Η μέθοδος που θα χρησιμοποιηθεί για να προσομοιωθεί ένα σύστημα έχει άμεση σχέση με το μοντέλο που δημιουργήθηκε για το σύστημα. Αυτό ισχύει και

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

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

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

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

Δίκτυα Υπολογιστών Εργαστήρια

Δίκτυα Υπολογιστών Εργαστήρια Δίκτυα Υπολογιστών Εργαστήρια Άσκηση 6 η Πολλαπλή Πρόσβαση με Ακρόαση Φέροντος (CSMA-CD) Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Διδάσκων: Παπαπέτρου Ευάγγελος 2 1 Εισαγωγή Σκοπός της

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

Τεχνολογία μνημών Ημιαγωγικές μνήμες Μνήμες που προσπελαύνονται με διευθύνσεις:

Τεχνολογία μνημών Ημιαγωγικές μνήμες Μνήμες που προσπελαύνονται με διευθύνσεις: Σύστημα μνήμης Ο κύριος σκοπός στο σχεδιασμό ενός συστήματος μνήμης είναι να προσφέρουμε επαρκή χωρητικότητα αποθήκευσης διατηρώντας ένα αποδεκτό επίπεδο μέσης απόδοσης και επίσης χαμηλό μέσο κόστος ανά

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

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

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

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

ΤΕΙ Κρήτης, Παράρτηµα Χανίων ΠΣΕ, Τµήµα Τηλεπικοινωνιών & ικτύων Η/Υ Εργαστήριο ιαδίκτυα & Ενδοδίκτυα Η/Υ ( ηµιουργία συστήµατος µε ροint-tο-ροint σύνδεση) ρ Θεοδώρου Παύλος Χανιά 2003 Περιεχόµενα 1 ΕΙΣΑΓΩΓΗ...2 2 ΤΟ ΚΑΝΑΛΙ PΟINT-TΟ-PΟINT...2

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

Γ ΛΥΚΕΙΟΥ ΚΥΜΑΤΑ ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ. Επιμέλεια: ΑΓΚΑΝΑΚΗΣ A.ΠΑΝΑΓΙΩΤΗΣ, Φυσικός.

Γ ΛΥΚΕΙΟΥ ΚΥΜΑΤΑ ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ. Επιμέλεια: ΑΓΚΑΝΑΚΗΣ A.ΠΑΝΑΓΙΩΤΗΣ, Φυσικός. ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Γ ΛΥΚΕΙΟΥ ΚΥΜΑΤΑ Επιμέλεια: ΑΓΚΑΝΑΚΗΣ A.ΠΑΝΑΓΙΩΤΗΣ, Φυσικός / Βασικές Έννοιες Η επιστήμη της Φυσικής συχνά μελετάει διάφορες διαταραχές που προκαλούνται και διαδίδονται στο χώρο.

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

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 - 2 - Κεφάλαιο 2 ο Δευτερεύουσα μνήμη Οι εύκαμπτοι μαγνητικοί δίσκοι (floppy disks) ή δισκέτες Οι σκληροί μαγνητικοί δίσκοι (hard disks) Οι

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

Μεταπτυχιακό Πρόγραμμα Φυσικού Τμήματος «Υπολογιστική Φυσική» Θέμα εργασίας στο A Μέρος του μαθήματος «Προσομοίωση Χαοτικών Συστημάτων»

Μεταπτυχιακό Πρόγραμμα Φυσικού Τμήματος «Υπολογιστική Φυσική» Θέμα εργασίας στο A Μέρος του μαθήματος «Προσομοίωση Χαοτικών Συστημάτων» Μεταπτυχιακό Πρόγραμμα Φυσικού Τμήματος «Υπολογιστική Φυσική» Θέμα εργασίας στο A Μέρος του μαθήματος «Προσομοίωση Χαοτικών Συστημάτων» Οδηγίες: Σχετικά με την παράδοση της εργασίας θα πρέπει: Το κείμενο

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

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

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

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

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

ΔΕΟ13 - Επαναληπτικές Εξετάσεις 2010 Λύσεις

ΔΕΟ13 - Επαναληπτικές Εξετάσεις 2010 Λύσεις ΔΕΟ - Επαναληπτικές Εξετάσεις Λύσεις ΘΕΜΑ () Το Διάγραμμα Διασποράς εμφανίζεται στο επόμενο σχήμα. Από αυτό προκύπτει καταρχήν μία θετική σχέση μεταξύ των δύο μεταβλητών. Επίσης, από το διάγραμμα φαίνεται

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

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

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

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

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

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

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

Πρωτόκολλα Ελέγχου προσπέλασης μέσου

Πρωτόκολλα Ελέγχου προσπέλασης μέσου Πρωτόκολλα Ελέγχου προσπέλασης μέσου Πρόβλημα: ταυτόχρονη μετάδοση δύο ή περισσότερων κόμβων στο ίδιο κανάλι (μήκος κύματος). Ένα τέτοιο γεγονός ονομάζεται σύγκρουση. Ένα πρωτόκολλο MAC έχει συνήθως ως

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

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 7ο μάθημα: Κρυφές μνήμες (cache) - εισαγωγή Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου Σύστημα μνήμης! Η μνήμη είναι σημαντικό

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Κατακερματισμός 1 Αποθήκευση εδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων

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

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

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

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ: ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ονοματεπώνυμο: ΑΜ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (τμήμα Μ - Ω) Κανονική εξεταστική Φεβρουαρίου

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

Κεφάλαιο 9. Έλεγχοι υποθέσεων

Κεφάλαιο 9. Έλεγχοι υποθέσεων Κεφάλαιο 9 Έλεγχοι υποθέσεων 9.1 Εισαγωγή Όταν παίρνουμε ένα ή περισσότερα τυχαία δείγμα από κανονικούς πληθυσμούς έχουμε τη δυνατότητα να υπολογίζουμε στατιστικά, όπως μέσους όρους, δειγματικές διασπορές

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

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

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

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ. ΤΡΙΤΗ ΔΙΑΛΕΞΗ Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.): Σύνταξη τύπος όνομαα; τύπος όνομαβ{όνομαα}; όνομαβ

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 8 «Ιδεατή Μνήμη» Διδάσκων: Δ. Λιαροκαπης Διαφάνειες: Π. Χατζηδούκας Ιδεατή Μνήμη Οργάνωση. Εισαγωγή. Ιδεατές και πραγματικές διευθύνσεις. Λογική οργάνωση. Τμηματοποίηση

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

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

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

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

Οργάνωση Υπολογιστών

Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Επιμέλεια: Γεώργιος Θεοδωρίδης, Επίκουρος Καθηγητής Ανδρέας Εμερετλής, Υποψήφιος Διδάκτορας Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών 1 Άδειες Χρήσης Το παρόν υλικό

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

Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ. (Power of a Test) ΚΕΦΑΛΑΙΟ 21

Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ. (Power of a Test) ΚΕΦΑΛΑΙΟ 21 ΚΕΦΑΛΑΙΟ 21 Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ (Power of a Test) Όπως είδαμε προηγουμένως, στον Στατιστικό Έλεγχο Υποθέσεων, ορίζουμε δύο είδη πιθανών λαθών (κινδύνων) που μπορεί να συμβούν όταν παίρνουμε αποφάσεις

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Οι σημειώσεις, αν και βασίζονται στο διδακτικό πακέτο, αποτελούν προσωπική θεώρηση της σχετικής ύλης και όχι επίσημο

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

Υπόστρωμα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer.

Υπόστρωμα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer. Υπόστρωμα Ελέγχου Πρόσβασης Μέσου Medium Access Control Sub-layer. Πρόβλημα Υπάρχει ένα κανάλι το οποίο «μοιράζονται» πολλοί κόμβοι. Πρόβλημα: Ποίος μεταδίδει και πότε; Περίληψη Κανάλια πολλαπλής πρόσβασης

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΑΤΙΣΤΙΚΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΑΤΙΣΤΙΚΗ Ακαδ. Έτος 06-07 Διδάσκων: Βασίλης ΚΟΥΤΡΑΣ Λέκτορας v.koutras@fme.aegea.gr Τηλ: 7035468 Εκτίμηση Διαστήματος

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

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

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

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

Μάθημα 8: Διαχείριση Μνήμης

Μάθημα 8: Διαχείριση Μνήμης Μάθημα 8: Διαχείριση Μνήμης 8.1 Κύρια και δευτερεύουσα μνήμη Κάθε μονάδα ενός υπολογιστή που χρησιμεύει για τη μόνιμη ή προσωρινή αποθήκευση δεδομένων ανήκει στην μνήμη (memory) του υπολογιστή. Οι μνήμες

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΙΣΤΟΤΟΠΟΣ ΕΡΓΑΣΤΗΡΙΟΥ http://www.mech.upatras.gr/~adamides/dpe ΠΡΟΣΟΜΟΙΩΣΗ Η τεχνική

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

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω:

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω: Σημειώσεις Δικτύων Αναλογικά και ψηφιακά σήματα Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω: Χαρακτηριστικά

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

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής... 13. Πρόλογος... 11

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής... 13. Πρόλογος... 11 Περιεχόμενα Πρόλογος... 11 Μέρος 1: Βασικές έννοιες της πληροφορικής... 13 1.1 Windows XP... 15 1.2 Επιφάνεια εργασίας... 19 1.3 Γραμμή εργασιών... 24 1.4 Χειρισμός παραθύρων... 30 1.5 Μενού... 36 1.6

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

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ Οι Μεταβλητές στον Προγραμματισμό Οι μεταβλητές είναι θέσεις μνήμης που έχουν κάποιο όνομα. Όταν δίνω τιμή σε μία μεταβλητή, ουσιαστικά, αποθηκεύουμε στη μνήμη αυτή τον αριθμό που

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

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ. ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ Ηλεκτρονική Υποβολή Α.Π.Δ. ΠΕΡΙΕΧΟΜΕΝΑ 1) Είσοδος στην εφαρμογή 2) Δημιουργία Περιόδου Υποβολής 2.α) Ακύρωση Περιόδου Υποβολής 3) Μέθοδος Υποβολής: Συμπλήρωση Φόρμας 3.α) Συμπλήρωση

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

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

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

Γραμμικός Προγραμματισμός Μέθοδος Simplex

Γραμμικός Προγραμματισμός Μέθοδος Simplex ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Επιχειρησιακή Έρευνα Γραμμικός Προγραμματισμός Μέθοδος Simplex Η παρουσίαση προετοιμάστηκε από τον Ν.Α. Παναγιώτου Περιεχόμενα Παρουσίασης 1. Πρότυπη Μορφή ΓΠ 2. Πινακοποίηση

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

Η ιεραρχία της μνήμης

Η ιεραρχία της μνήμης Η ιεραρχία της μνήμης Οι περιορισμοί στο σχεδιασμό της μνήμης συνοψίζονται σε τρεις ερωτήσεις : 1) Πόση 2) Πόσο γρήγορη 3) Πόσο ακριβή Ερωτήματα-Απαντήσεις Ερώτημα πόση μνήμη. Είναι ανοικτό. Αν υπάρχει

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση : Λυμένες Ασκήσεις Έστω ένα σύστημα μνήμης, στο οποίο έχουμε προσθέσει μια κρυφή μνήμη θυμάτων 6 θέσεων

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: 2014-2015 Νεκ. Κοζύρης nkoziris@cslab.ece.ntua.gr Ασκήσεις Caches http://www.cslab.ece.ntua.gr/courses/comparch/ Άδεια Χρήσης Το παρόν εκπαιδευτικό

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

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

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

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

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

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

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

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

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS Ακαδημαϊκό Έτος 2016-2017, Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS A. Εισαγωγή στις βάσεις δεδομένων - Γνωριμία με την ACCESS B. Δημιουργία Πινάκων 1. Εξήγηση των

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

Συνοπτική Μεθοδολογία Ασκήσεων IP Fragmentation. Ασκήσεις στο IP Fragmentation

Συνοπτική Μεθοδολογία Ασκήσεων IP Fragmentation. Ασκήσεις στο IP Fragmentation Συνοπτική Μεθοδολογία Ασκήσεων IP Fragmentation Οι σημειώσεις που ακολουθούν περιγράφουν τις ασκήσεις IP Fragmentation που θα συναντήσετε στο κεφάλαιο 3. Η πιο συνηθισμένη και βασική άσκηση αναφέρεται

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

ΔΙΟΙΚΗΣΗ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ

ΔΙΟΙΚΗΣΗ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ ΤΕΙ ΛΑΡΙΣΑΣ- ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ (ΔΔΕ) ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ (MASTER) ΣΤΗΝ «ΔΙΟΙΚΗΣΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΕΡΓΩΝ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΩΝ» ΔΙΟΙΚΗΣΗ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ Αντικατάσταση Μηχανημάτων

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

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7 Οι σημειώσεις που ακολουθούν περιγράφουν τις ασκήσεις που θα συναντήσετε στο κεφάλαιο 7. Η πιο συνηθισμένη και βασική άσκηση αναφέρεται στο IP Fragmentation,

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

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

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

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

Τηλεπικοινωνιακά Συστήματα ΙΙ

Τηλεπικοινωνιακά Συστήματα ΙΙ Τηλεπικοινωνιακά Συστήματα ΙΙ Διάλεξη 11: Κωδικοποίηση Πηγής Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα 1. Αλγόριθμοι κωδικοποίησης πηγής Αλγόριθμος Fano Αλγόριθμος Shannon Αλγόριθμος Huffman

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

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

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

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

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A

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

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

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium iv

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium iv Σ ΤΑΤ Ι Σ Τ Ι Κ Η i Statisticum collegium iv Στατιστική Συμπερασματολογία Ι Σημειακές Εκτιμήσεις Διαστήματα Εμπιστοσύνης Στατιστική Συμπερασματολογία (Statistical Inference) Το πεδίο της Στατιστικής Συμπερασματολογία,

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