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

Σχετικά έγγραφα
Κεφάλαιο 5: Εισαγωγή στην Προσομοίωση

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 5: Εισαγωγή στην Προσομοίωση

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

3. Προσομοίωση ενός Συστήματος Αναμονής.

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

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 1: Προσομοίωση ενός συστήματος αναμονής

ΠΡΟΣΟΜΟΙΩΣΗ. Προσομοίωση είναι η μίμηση της λειτουργίας ενός πραγματικού συστήματος και η παρακολούθηση της εξέλιξης του μέσα στο χρόνο.

ιπλωµατική Εργασία Επιµέλεια Συγγραφή: ΗΜΗΤΡΙΑ ΟΥ ΣΟΦΙΑ 891 Υπεύθυνη Καθηγήτρια Καρατζά Ελένη

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

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

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

Εργαστήριο Διοίκησης Παραγωγής & Έργων. Εισαγωγή στην προσομοίωση διεργασιών χρησιμοποιώντας το λογισμικό Extend

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

Υπάρχουν τρεις εναλλακτικές τεχνικές για την ανάλυση της απόδοσης ενός συστήµατος:

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 7: Η επιλογή των πιθανοτικών κατανομών εισόδου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΑΡΑ ΕΙΓΜΑ ΠΡΟΣΟΜΕΙΩΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΑΡΑΓΩΓΗΣ. Καθηγητής Γ: Χρυσολούρης και ρ.. Μούρτζης ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ & ΑΕΡΟΝΑΥΠΗΓΩΝ ΜΗΧΑΝΙΚΩΝ

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Ανάλυση Δεδοµένων µε χρήση του Στατιστικού Πακέτου R

«ΧΡΟΝΟΔΡΟΜΟΛΟΓΗΣΗ ΕΡΓΑΣΙΩΝ ΣΕ

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Κεφάλαιο 10 ο Υποπρογράµµατα

Στοιχεία Θεωρίας Αριθμών Και Εφαρμογές Στην Κρυπτογραφία. Linux Random Number Generator

2. Missing Data mechanisms

ΜΟΝΤΕΛΑ ΙΑΚΡΙΤΩΝΣΥΣΤΗΜΑΤΩΝ

Ελεγκτικής. ΤΕΙ Ηπείρου (Παράρτηµα Πρέβεζας)

ΕΡΓΑΣΤΗΡΙΟ ΠΙΘΑΝΟΤΗΤΩΝ

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

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

υναµικές οµές εδοµένων

Κεφάλαιο 5ο: Εντολές Επανάληψης

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

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

Προσομοίωση Βιομηχανικής Παραγωγής & Επιχειρήσεων

Πανεπιστήµιο Θεσσαλίας

4.3. Γραµµικοί ταξινοµητές

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

Ορισµός. (neighboring) καταστάσεων. ηλαδή στην περίπτωση αλυσίδας Markov. 1.2 ιαµόρφωση µοντέλου

οµή δικτύου ΣΧΗΜΑ 8.1

Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R

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

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

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

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Μεθόδων Επίλυσης Προβλημάτων

Περίληψη ιπλωµατικής Εργασίας

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Μεταπτυχιακό Πληροφορικής Προσοµοίωση ηµοσθένης Αναγνωστόπουλος Επ. Καθηγητής Χαροκόπειο Πανεπιστήµιο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ

Υπολογιστικό Πρόβληµα

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Α. Ερωτήσεις Ανάπτυξης

Αδιέξοδα (Deadlocks)

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

ΠΡΟΣΟΜΟΙΩΣΗ & ΣΥΣΤΗΜΑΤΑ ΣΤΗΡΙΞΗΣ ΑΠΟΦΑΣΕΩΝ. Διδάσκων: Γεώργιος Γιαγλής. Παράδειγμα Μπαρ

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

Συστήματα Αναμονής. Ενότητα 1: Εισαγωγή. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μηχανική ΙI Ταλαντωτής µε µεταβλητή συχνότητα

Μεθοδολογίες παρεµβολής σε DTM.

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο 1 : Εισαγωγή

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 1: Εισαγωγή. Γαροφαλάκης Ιωάννης Πολυτεχνική Σχολή Τμήμα Μηχ/κών Η/Υ & Πληροφορικής

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

Κεφάλαιο 5: Στρατηγική χωροταξικής διάταξης

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

Μοντελοποίηση, Ανάλυση και Σχεδιασμός Στοχαστικών Συστημάτων

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Επώνυµη ονοµασία. Ενότητα 13 η Σχεδίαση,Επιλογή, ιανοµή Προϊόντων 1

Στατιστική για Πολιτικούς Μηχανικούς Λυμένες ασκήσεις μέρους Β

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Search and Replication in Unstructured Peer-to-Peer Networks

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

Πληροφοριακά Συστήματα Διοίκησης. Προσομοίωση Simulation

που αντιστοιχεί στον τυχαίο αριθμό 0.6 δίνει ισχύ P Y Να βρεθεί η μεταβλητή k 2.

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Επιµέλεια Θοδωρής Πιερράτος

Κασταλία Σύστηµα στοχαστικής προσοµοίωσης υδρολογικών µεταβλητών

Χρησιμοποιούμε από το Λογισμικό Προσομοίωσης AnyLogic το αρχείο-μοντέλο Call Center.alp που υπάρχει στο φάκελο \models\call Center\

Πανεπιστήµιο Κρήτης - Τµήµα Επιστήµης Υπολογιστών. ΗΥ-217: Πιθανότητες-Χειµερινό Εξάµηνο ιδάσκων : Π. Τσακαλίδης

o AND o IF o SUMPRODUCT

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Επιστηµονικός Υπολογισµός Ι Ενότητα 1 - Εισαγωγή. Ευστράτιος Γαλλόπουλος

ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΙΑΤΑΞΗΣ ΤΩΝ ΑΡΙΘΜΩΝ ΚΑΙ ΧΡΗΣΗ ΤΗΣ ΑΠΟΛΥΤΗΣ ΤΙΜΗΣ ΣΤΟΝ ΑΞΟΝΑ ΤΩΝ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ ΠΕΡΙΛΗΨΗ. Εισαγωγή

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Σύγχρονα συστήµατα προβλέψεων και µοντελοποίησης. Τµήµα Στατιστικής και Αναλογιστικών Χρηµατοοικονοµικών Μαθηµατικών

Transcript:

ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : ΠΡΟΣΟΜΟΙΩΣΗ ΚΑΙ ΜΕΛΕΤΗ ΤΗΣ ΑΠΟ ΟΣΗΣ ΚΑΤΑΝΕΜΗΜΕΝΟΥ ΣΥΣΤΗΜΑΤΟΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ.. Μαλιούφα Αικατερίνη Α.Ε.Μ : 633 Τµήµα Πληροφορικής Α.Π.Θ. Επιβλέπουσα Καθηγήτρια : Καρατζά Ελένη Θεσσαλονίκη, Ιούλιος 2005

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ...2 ΠΡΟΛΟΓΟΣ...3 ΜΕΡΟΣ 1ο : Θεωρητικό Υπόβαθρο...4 1.1 Εισαγωγή στην έννοια της προσοµοίωσης...5 1.2 Τρόποι µελέτης ενός συστήµατος...6 1.3 Συστατικά και Οργάνωση ενός µοντέλου προσοµοίωσης διακριτών γεγονότων...10 1.4 Πλεονεκτήµατα, µειονεκτήµατα και δυσκολίες της προσοµοίωσης...13 ΜΕΡΟΣ 2ο : Προσέγγιση προβλήµατος...16 2.1 Κατανεµηµένα συστήµατα...17 2.2 Συστήµατα πραγµατικού χρόνου...17 2.3 Επιθυµητά χαρακτηριστικά των συστηµάτων πραγµατικού χρόνου...18 2.4 Περιγραφή Μοντέλου και Μεθοδολογίας...19 2.4.1 Περιγραφή συστήµατος...19 2.4.1 ιαδικασία Αφίξεων...20 2.4.2 ιαδικασία Εξυπηρετήσεων...20 2.5 Παράµετροι...21 2.5.1 Παράµετροι Συστήµατος...21 2.5.2 Παράµετροι Απόδοσης...23 ΜΕΡΟΣ 3ο : Υλοποίηση Προγράµµατος...25 3.1 Βασικές οµές Κώδικα...26 3.1.1 Γενικά για την υλοποίηση...26 3.1.2 Σταθερές του προγράµµατος...27 3.1.3 Μεταβλητές του προγράµµατος...28 3.1.4 Κλάσεις του προγράµµατος...30 3.1.5 Συναρτήσεις του προγράµµατος...36 ΜΕΡΟΣ 4ο : Μελέτη της Απόδοσης...40 4.1 ιεξαγωγή Πειραµάτων...41 4.1.1 1 η Σειρά Πειραµάτων...43 4.1.2 2 η Σειρά Πειραµάτων...47 4.1.3 3 η Σειρά Πειραµάτων...51 4.1.4 4 η Σειρά Πειραµάτων...55 ΒΙΒΛΙΟΓΡΑΦΙΑ...59 ΜΕΡΟΣ 5ο : Παραρτήµατα...60 5.1 ΠΑΡΑΡΤΗΜΑ Ι...61 5.1.1 Αρχεία Προγράµµατος...61 5.1.1 Κώδικας Βασικών οµών Προγράµµατος...64 2

ΠΡΟΛΟΓΟΣ Η παρούσα εργασία αποτελεί την τεκµηρίωση της ιπλωµατικής Εργασίας που µου ανατέθηκε από την αναπληρώτρια καθηγήτρια κ. Ελένη Καρατζά κατά τη διάρκεια των προπτυχιακών µου σπουδών στο Τµήµα Πληροφορικής του Α.Π.Θ. Νιώθω την ανάγκη να την ευχαριστήσω για την πολύτιµη συνεργασία µας και για την βοήθεια που µου προσέφερε καθώς και για την εµπιστοσύνη που έδειξε στο πρόσωπό µου. Επίσης θα ήθελα να την αφιερώσω στους δικούς µου εκφράζοντας έτσι την ευγνωµοσύνη µου για τις θυσίες που έχουν κάνει για µένα. Θεσσαλονίκη, Ιούλιος 2005 3

ΜΕΡΟΣ 1ο : Θεωρητικό Υπόβαθρο 4

1.1 Εισαγωγή στην έννοια της προσοµοίωσης Προσοµοίωση είναι η µίµηση της λειτουργίας µιας διαδικασίας ή συστήµατος του πραγµατικού κόσµου κατά τη διάρκεια του χρόνου. Είτε γίνει «µε το χέρι» είτε µε έναν υπολογιστή, η προσοµοίωση εµπεριέχει την παραγωγή κάποιου τεχνητού ιστορικού ενός συστήµατος, και την παρατήρηση αυτού του τεχνητού ιστορικού για να εξαχθούν συµπεράσµατα που αφορούν τα λειτουργικά χαρακτηριστικά του πραγµατικού συστήµατος. Η συµπεριφορά ενός συστήµατος καθώς αυτό εξελίσσεται στο χρόνο µπορεί να µελετηθεί µε την ανάπτυξη ενός µοντέλου προσοµοίωσης. Αυτό το µοντέλο παίρνει συνήθως τη µορφή ενός συνόλου υποθέσεων που αφορούν τη λειτουργία του συστήµατος. Αυτές οι υποθέσεις εκφράζονται σε µαθηµατικές, λογικές και συµβολικές σχέσεις µεταξύ των οντοτήτων ή των αντικειµένων ενδιαφέροντος του συστήµατος. Μόλις αναπτυχθεί και εγκριθεί, ένα µοντέλο µπορεί να χρησιµοποιηθεί για να ερευνήσει µια ποικιλία αποριών σχετικά µε το πραγµατικό σύστηµα. Ενδεχόµενες αλλαγές στο σύστηµα µπορούν πρώτα να προσοµοιωθούν έτσι ώστε να προβλεφθεί η επίδρασή τους στην απόδοση του συστήµατος. Ωστόσο, η µοντελοποίηση µπορεί να χρησιµοποιηθεί εξίσου, και ως ένα εργαλείο ανάλυσης για την πρόβλεψη της επίδρασης αλλαγών σε υπάρχοντα συστήµατα και ως ένα εργαλείο σχεδίασης για την πρόβλεψη της απόδοσης νέων συστηµάτων κάτω από διάφορες περιστάσεις. 5

1.2 Τρόποι µελέτης ενός συστήµατος Ένα σύστηµα ορίζεται ως µία συλλογή οντοτήτων (π.χ. άνθρωποι ή µηχανές) που ενεργούν και αλληλεπιδρούν, µε στόχο κάποιο λογικό τερµατισµό. Στην πράξη, η έννοια του συστήµατος εξαρτάται από τους στόχους της συγκεκριµένης µελέτης. Η συλλογή οντοτήτων που συγκροτούν ένα σύστηµα για µία µελέτη, µπορεί να είναι µόνο ένα υποσύνολο του συνολικού συστήµατος για µία άλλη µελέτη. Ορίζουµε την κατάσταση ενός συστήµατος, ως τη συλλογή των µεταβλητών που είναι απαραίτητες για την περιγραφή του συστήµατος σε µια χρονική στιγµή, αναφορικά µε τους στόχους της µελέτης. Τα συστήµατα µπορούν να είναι διακριτά ( discrete ) ή συνεχή ( continuous ). ιακριτό σύστηµα είναι αυτό στο οποίο οι µεταβλητές κατάστασης µπορούν να αλλάξουν σε διακεκριµένες στιγµές του χρόνου. Συνεχές είναι το σύστηµα του οποίου οι µεταβλητές κατάστασης αλλάζουν συνεχώς στο χρόνο. Λίγα συστήµατα στην πράξη είναι εξ ολοκλήρου διακριτά ή συνεχή, αλλά επειδή συνήθως µία από τις δύο ιδιότητες κυριαρχεί, µπορούµε τις περισσότερες φορές να χαρακτηρίσουµε το σύστηµα ως διακριτό ή συνεχές. Κατά τη διάρκεια της ζωής ενός συστήµατος, παρουσιάζεται η ανάγκη µελέτης του, ώστε να αποκτήσουµε γνώση για τις σχέσεις µεταξύ των διαφόρων τµηµάτων του, ή για να προβλέψουµε την απόδοσή του κάτω από νέες, πιθανόν, συνθήκες. Το Σχήµα 1 παρουσιάζει τους διαφορετικούς τρόπους µε τους οποίους µπορεί να µελετηθεί ένα σύστηµα. 6

Πείραµα µε το Πραγµατικό Σύστηµα ή Πείραµα µε Μοντέλο του Συστήµατος : Αν είναι δυνατόν (και οικονοµικά αποδεκτό) να έχουµε φυσική πρόσβαση στο σύστηµα και να το λειτουργήσουµε κάτω από τις νέες συνθήκες, ίσως είναι προτιµότερο να το κάνουµε, αφού στην περίπτωση αυτή δεν υπάρχει αµφισβήτηση για την ακρίβεια της µελέτης. Πάντως, σπάνια µας δίνεται αυτή η ευκαιρία, είτε γιατί κοστίζει, ή γιατί θα προκαλέσει προβλήµατα στην κανονική λειτουργία του συστήµατος. Επίσης, στη φάση σχεδιασµού, το σύστηµα δεν υπάρχει, οπότε αν θέλουµε να µελετήσουµε τις διάφορες εναλλακτικές προτάσεις υλοποίησής του, είναι αναγκαίο να κατασκευάσουµε ένα µοντέλο, το οποίο θα αναπαριστά το σύστηµα και θα το αντικαθιστά κατά τη µελέτη. Όταν χρησιµοποιούµε ένα µοντέλο, η εγκυρότητά του, δηλαδή ο βαθµός ακρίβειας µε τον οποίο αναπαριστά το σύστηµα, είναι πάντα ένα κρίσιµο ερώτηµα. Σύστηµα Πείραµα µε το Πραγµατικό Σύστηµα Πείραµα µε Μοντέλο του Συστήµατος Φυσικό Μοντέλο Μαθηµατικό Μοντέλο Αναλυτική Λύση Προσοµοίωση ΣΧΗΜΑ 1. Τρόποι Μελέτης ενός Συστήµατος. 7

Φυσικό Μοντέλο ή Μαθηµατικό Μοντέλο : Οι περισσότεροι άνθρωποι, µε τη λέξη "µοντέλο" αντιλαµβάνονται ένα φυσικό µοντέλο, όπως για παράδειγµα τη µινιατούρα ενός πλοίου που δοκιµάζεται σε µια δεξαµενή νερού, για τη µελέτη των υδροδυναµικών ιδιοτήτων του πραγµατικού συστήµατος (πλοίου). Όµως, η µεγάλη πλειοψηφία των µοντέλων και ιδιαίτερα αυτά που χρησιµοποιούνται για τη µελέτη υπολογιστικών συστηµάτων, είναι µαθηµατικά. Ένα µαθηµατικό µοντέλο αναπαριστά το σύστηµα µε βάση λογικές και ποσοτικές σχέσεις οι οποίες χειριζόµενες και µεταβαλλόµενες κατάλληλα, επιτρέπουν να δούµε πώς αντιδρά το µοντέλο και κατά συνέπεια πώς θα αντιδρούσε το σύστηµα, αν το µαθηµατικό µοντέλο είναι έγκυρο. Ένα παράδειγµα µαθηµατικού µοντέλου είναι η γνωστή σχέση d = rt, όπου r είναι η ταχύτητα ταξιδίου, t είναι ο χρόνος ταξιδίου και d είναι η απόσταση που έχει διανυθεί. Αναλυτική Λύση ή Προσοµοίωση : Από τη στιγµή που έχει δηµιουργηθεί ένα µαθηµατικό µοντέλο, θα πρέπει να εξετασθεί ο τρόπος χρήσης του ώστε να µπορεί να απαντήσει στα ερωτήµατα που µας ενδιαφέρουν για το σύστηµα που υποτίθεται ότι αντιπροσωπεύει. Αν το µοντέλο είναι αρκετά απλό, είναι δυνατό να πάρουµε µία ακριβή, αναλυτική λύση. Στο παράδειγµα της προηγούµενης παραγράφου, αν γνωρίζουµε την απόσταση που θα διανυθεί και την ταχύτητα, µπορούµε από το µοντέλο να πάρουµε t = d r για το χρόνο που θα χρειασθεί για το ταξίδι. Το µοντέλο αυτό είναι πολύ απλό, πράγµα που δεν συµβαίνει βέβαια στις περισσότερες περιπτώσεις, στις οποίες η αναλυτική λύση µπορεί να είναι αρκετά πολύπλοκη και να απαιτεί µεγάλη υπολογιστική ισχύ. Πάντως, αν υπάρχει αναλυτική λύση στο µαθηµατικό µοντέλο και είναι υπολογιστικά αποδοτική, συνήθως την προτιµούµε από την προσοµοίωση. 8

Όµως πολλά συστήµατα είναι πολύπλοκα, όπως και τα µαθηµατικά µοντέλα που τα αναπαριστούν, έτσι ώστε να αποκλείουν κάθε πιθανότητα αναλυτικής λύσης. Στην περίπτωση αυτή το µοντέλο πρέπει να µελετηθεί µε τη χρήση προσοµοίωσης, δηλαδή µε την εκτέλεση αριθµητικών πειραµάτων στο µοντέλο για τις εισόδους (δεδοµένα) που µας ενδιαφέρουν, για να δούµε πως αυτά επηρεάζουν τις εξόδους (µέτρα απόδοσης) του συστήµατος. Η προσοµοίωση είναι επίσης πολύ χρήσιµη στις περιπτώσεις που µπορούµε να πάρουµε µόνο προσεγγιστική αναλυτική λύση, οπότε θέλουµε να επιβεβαιώσουµε την προσέγγιση, να βρούµε το σχετικό λάθος κ.λ.π. 9

1.3 Συστατικά και Οργάνωση ενός µοντέλου προσοµοίωσης διακριτών γεγονότων Τα περισσότερα µοντέλα προσοµοίωσης διακριτών γεγονότων που χρησιµοποιούν τη µέθοδο εξέλιξης µε βάση το χρόνο του εποµένου γεγονότος, περιλαµβάνουν τα παρακάτω τµήµατα: Κατάσταση Συστήµατος (system state) Η συλλογή των µεταβλητών κατάστασης που είναι απαραίτητες για την περιγραφή του συστήµατος σε µία χρονική στιγµή Ρολόι Προσοµοίωσης (simulation clock) Μία µεταβλητή που περιέχει την τρέχουσα τιµή του προσοµοιωµένου χρόνου Λίστα Γεγονότων (event list) Μία λίστα που περιέχει την επόµενη χρονική στιγµή εµφάνισης κάθε τύπου γεγονότος Μετρητές Στατιστικών (statistical counters) Μεταβλητές που χρησιµοποιούνται για την αποθήκευση στατιστικών µετρήσεων της απόδοσης του συστήµατος 10

Ρουτίνα Αρχικοποίησης (initialization routine) Ένα υποπρόγραµµα που αρχικοποιεί το µοντέλο προσοµοίωσης τη χρονική στιγµή µηδέν Ρουτίνα Χρονισµού (timing routine) Ένα υποπρόγραµµα που αναγνωρίζει το επόµενο γεγονός από τη λίστα γεγονότων και ακολούθως αυξάνει το ρολόι προσοµοίωσης στη χρονική στιγµή που το γεγονός αυτό θα εµφανισθεί Ρουτίνες Γεγονότων (event routines) Υποπρογράµµατα που ενηµερώνουν την κατάσταση συστήµατος όταν εµφανίζεται ένα συγκεκριµένο είδος γεγονότος (υπάρχει µία τέτοια ρουτίνα για κάθε είδος γεγονότος) Ρουτίνες Βιβλιοθήκης (library routines) Σύνολο υποπρογραµµάτων που δηµιουργούν τυχαίες εµφανίσεις τιµών από πιθανοτικές κατανοµές, που έχουν ορισθεί ως µέρος του µοντέλου προσοµοίωσης Γεννήτρια Αναφορών (report generator) Υποπρόγραµµα που υπολογίζει εκτιµήσεις των επιθυµητών µέτρων απόδοσης από τους µετρητές στατιστικών και παράγει αναφορές όταν τελειώσει η εκτέλεση του προσοµοιωτή Κυρίως Πρόγραµµα (main program) Το πρόγραµµα που καλεί τη ρουτίνα χρονισµού για να καθοριστεί το επόµενο γεγονός και µετά µεταφέρει τον έλεγχο στην αντίστοιχη ρουτίνα γεγονότος για να ενηµερωθεί κατάλληλα η κατάσταση του συστήµατος. Ελέγχει επίσης αν πρέπει να τερµατισθεί η προσοµοίωση και καλεί τότε τη γεννήτρια αναφορών 11

Οι λογικές σχέσεις ανάµεσα στα παραπάνω τµήµατα φαίνονται στο Σχήµα 2. ΑΡΧΗ Ρουτίνα Αρχικοποίησης 1. Θέσε Ρολόι = 0 2. Αρχικοποίησε την κατάσταση συστ. & στατιστ. µετρητές 3. Αρχικοποίησε τη λίστα γεγονότων 0 Κυρίως Πρόγραµµα 0. Κάλεσε τη ρουτίνα αρχικοποίησης 1. Κάλ. ρουτ. χρονισµού 2. Κάλεσε ρουτίνα γεγονότος i 1 Ρουτίνα Χρονισµού 1. Καθόρισε τον επόµενο τύπο γεγονότος, έστω i 2. Αύξησε το ρολόι προσοµοίωσης i Ρουτίνα Γεγονότος i 2 1. Ενηµέρωσε κατάσταση συστήµατος 2. Ενηµέρωσε µετρητές στατιστικών 3. ηµιούργησε µελοντικά γεγονότα & πρόσθεσέ τα στη λίστα γεγονότων Ρουτίνες Βιβλιοθήκης ηµιούργησε τυχαίες τιµές από πιθανοτικές κατανοµές Τέλος Προσοµοίωσης? ΟΧΙ Γεννήτρια Αναφορών ΝΑΙ 1. Υπολόγισε εκτιµήσεις µέτρων απόδοσης 2. Γράψε την αναφορά ΤΕΛΟΣ ΣΧΗΜΑ 2. ιάγραµµα Ροής για την Εξέλιξη µε βάση το Χρόνο Εποµένου Γεγονότος. 12

1.4 Πλεονεκτήµατα, µειονεκτήµατα και δυσκολίες της προσοµοίωσης Η προσοµοίωση είναι µια ευρέως χρησιµοποιούµενη και όλο και πιο δηµοφιλής µέθοδος για τη µελέτη πολύπλοκων συστηµάτων. Έχει φυσικά τα πλεονεκτήµατα, τα µειονεκτήµατά της, αλλά υπάρχουν και πολλές αιτίες εξαιτίας των οποίων ορισµένες προσοµοιώσεις δεν καταλήγουν στο επιθυµητό αποτέλεσµα. Ορισµένα πλεονεκτήµατα της χρήσης της µεθόδου της προσοµοίωσης είναι τα παρακάτω: Τα περισσότερα σύνθετα συστήµατα του πραγµατικού κόσµου µε "τυχαίες" παραµέτρους, δεν µπορούν να περιγραφούν ικανοποιητικά µε κάποιο µαθηµατικό µοντέλο που µπορεί να λυθεί αναλυτικά. Έτσι, η προσοµοίωση είναι συχνά η µόνη διαθέσιµη µέθοδος µελέτης Η προσοµοίωση επιτρέπει την εκτίµηση της απόδοσης ενός υπάρχοντος συστήµατος, κάτω από κάποιο προβλεπόµενο σύνολο λειτουργικών συνθηκών Μπορούν να συγκριθούν µέσω της προσοµοίωσης, εναλλακτικές προτεινόµενες σχεδιάσεις ή εναλλακτικές πολιτικές λειτουργίας του συστήµατος, ώστε να προσδιορισθεί η βέλτιστη λύση που ικανοποιεί τις προδιαγραφές που έχουν ορισθεί Σε ένα µοντέλο προσοµοίωσης µπορούµε να έχουµε καλύτερο έλεγχο στις συνθήκες των πειραµάτων, σε σχέση µε πιθανό πειραµατισµό µε το πραγµατικό σύστηµα Η προσοµοίωση επιτρέπει τη µελέτη ενός συστήµατος που έχει µακρόχρονη εξέλιξη (π.χ. ένα οικονοµικό σύστηµα), σε πολύ µικρότερο χρόνο, ή τη µελέτη της λεπτοµέρειάς του σε περισσότερο χρόνο 13

Είναι µια µέθοδος οικονοµική, αφού είναι δυνατό να υλοποιηθεί πλέον σε µικρούς υπολογιστές µε τη χρήση γλωσσών προγραµµατισµού γενικού σκοπού όπως η C, η Pascal και η BASIC Η προσοµοίωση µπορεί να υλοποιηθεί από µηχανικούς που δεν είναι απαραίτητο να έχουν εκτεταµένες µαθηµατικές γνώσεις, παρά µόνο τη δυνατότητα να κατανοούν βασικές έννοιες στατιστικής και να µπορούν να εφαρµόζουν ήδη έτοιµα µαθηµατικά εργαλεία. Ορισµένα µειονεκτήµατα της προσοµοίωσης είναι τα παρακάτω: Κάθε εκτέλεση ενός µοντέλου προσοµοίωσης διακριτών γεγονότων παράγει µόνο εκτιµήσεις των πραγµατικών χαρακτηριστικών του µοντέλου, για ένα συγκεκριµένο σύνολο παραµέτρων εισόδου. Έτσι, είναι πιθανό να χρειασθούν πολλές διαφορετικές ανεξάρτητες εκτελέσεις του µοντέλου για κάθε σύνολο παραµέτρων εισόδου που θα µελετηθεί. Για το λόγο αυτό, η προσοµοίωση δεν είναι γενικά τόσο καλή µέθοδος για βελτιστοποίηση, όσο είναι για τη σύγκριση εναλλακτικών σχεδιαστικών λύσεων του συστήµατος Τα µοντέλα προσοµοίωσης συχνά απαιτούν πολύ χρόνο και πόρους για να αναπτυχθούν Ο µεγάλος όγκος αριθµών που παράγονται από µία µελέτη προσοµοίωσης ή η εντύπωση που δηµιουργούν οι τυχόν γραφικές αναπαραστάσεις των αποτελεσµάτων της, συχνά ενισχύουν µία τάση να δίνεται µεγαλύτερη εµπιστοσύνη στα αποτελέσµατα αυτά από όσο πρέπει. Αν το µοντέλο δεν είναι µία αρκετά έγκυρη αναπαράσταση του συστήµατος, τα αποτελέσµατα της προσοµοίωσης, ανεξάρτητα του πόσο εντυπωσιακά είναι, θα προσθέσουν λίγη χρήσιµη πληροφορία για το πραγµατικό σύστηµα 14

Από τη στιγµή που έχει ληφθεί η απόφαση να χρησιµοποιηθεί προσοµοίωση για τη µελέτη ενός συστήµατος, έχει παρατηρηθεί ότι µπορούν να εµφανισθούν αρκετά προβλήµατα στην πορεία υλοποίησης ενός επιτυχηµένου προσοµοιωτή: Όχι καλά ορισµένοι στόχοι κατά την έναρξη της µελέτης Ακατάλληλο επίπεδο λεπτοµέρειας του µοντέλου Χειρισµός της µελέτης µε προσοµοίωση, σαν να ήταν βασικά µία δύσκολη άσκηση προγραµµατισµού Έλλειψη στοιχειωδών γνώσεων Επιχειρησιακής Έρευνας και Στατιστικής Χρήση εµπορικών πακέτων προσοµοιωτών που µπορεί να περιέχουν λάθη ή να µην υλοποιούν τη λογική του συστήµατος Αποτυχία στη σωστή καταγραφή των πηγών τυχαιότητας του συστήµατος Χρήση αυθαίρετων κατανοµών (π.χ. κανονική ή οµοιόµορφη) για την περιγραφή των εισόδων του προσοµοιωτή Ανάλυση των δεδοµένων εξόδου από µία εκτέλεση του προσοµοιωτή, µε τη χρήση στατιστικών τύπων που προϋποθέτουν ανεξαρτησία Χρήση λανθασµένων µέτρων απόδοσης 15

ΜΕΡΟΣ 2ο : Προσέγγιση προβλήµατος 16

2.1 Κατανεµηµένα συστήµατα Ως κατανεµηµένο σύστηµα ορίζεται µία συλλογή από αυτόνοµα υπολογιστικά συστήµατα που αποτελούνται από ένα µεγάλο αριθµό από CPUs, συνδέονται µεταξύ τους µέσω δικτύου υψηλών ταχυτήτων και διαθέτουν ειδικό λογισµικό για κατανεµηµένα συστήµατα, το οποίο επιτρέπει στους Η/Υ να συντονίζουν τις ενέργειες τους και να διαµοιράζουν τους πόρους. Τα συστήµατα αυτά έχουν πολύ καλύτερο λόγο κόστους / απόδοσης σε σχέση µε τον αντίστοιχο ενός µεγάλου κεντρικοποιηµένου συστήµατος. Επίσης, ένα κατανεµηµένο σύστηµα µπορεί να έχει συνολικά περισσότερη υπολογιστική ισχύ από ένα κεντρικό υπολογιστικό σύστηµα. Αν µία µηχανή καταρρεύσει, το σύστηµα ως ολότητα µπορεί να συνεχίσει να λειτουργεί. 2.2 Συστήµατα πραγµατικού χρόνου Tα συστήµατα πραγµατικού χρόνου είναι υπολογιστικά συστήµατα, τα οποία πρέπει να αντιδρούν σε γεγονότα του περιβάλλοντος µέσα σε ακριβή χρονικά περιθώρια. Συνεπώς, η σωστή συµπεριφορά αυτών των συστηµάτων βασίζεται όχι µόνο στην τιµή του υπολογισµού αλλά και στον χρόνο κατά τον οποίο παράχθηκαν τα αποτελέσµατα. Μία αντίδραση που συµβαίνει πολύ αργά θα ήταν άχρηστη ή ακόµα και επικίνδυνη. Σήµερα, τα συστήµατα πραγµατικού χρόνου παίζουν έναν πάρα πολύ σηµαντικό ρόλο σε εφαρµογές ροµποτικής, σε στρατιωτικά συστήµατα, στις τηλεπικοινωνίες, κ.ά. 17

2.3 Επιθυµητά χαρακτηριστικά των συστηµάτων πραγµατικού χρόνου Υπάρχουν κάποιες πολύ σηµαντικές βασικές ιδιότητες τις οποίες πρέπει να διαθέτουν τα συστήµατα πραγµατικού χρόνου, για να µπορούν να υποστηρίξουν απαιτητικές - κρίσιµες εφαρµογές. Κάποιες από αυτές είναι : Χρόνος : Τα αποτελέσµατα πρέπει να είναι σωστά, όχι µόνο στην τιµή τους αλλά επίσης και στον τοµέα του χρόνου. Συνεπώς, ένα σύστηµα πραγµατικού χρόνου πρέπει να παρέχει συγκεκριµένους µηχανισµούς για την διαχείριση του χρόνου και για τον χειρισµό tasks µε συγκεκριµένους χρονικούς περιορισµούς και διαφορετικές απαιτήσεις Σχεδιασµός για φόρτο αιχµής : Τα συστήµατα πραγµατικού χρόνου δεν θα πρέπει να καταρρέουν όταν υπόκεινται σε συνθήκες µεγάλου φόρτου. Έτσι πρέπει να σχεδιάζονται ώστε να χειρίζονται όλα τα πιθανά σενάρια Πρόβλεψη : Για να εξασφαλισθεί ένα ελάχιστο επίπεδο απόδοσης, το σύστηµα πρέπει να είναι ικανό να προβλέπει τις συνέπειες για κάθε απόφαση Ανεκτικότητα σε σφάλµατα : Μεµονωµένες απώλειες στο υλικό ή στο λογισµικό δεν πρέπει να προκαλούν την κατάρρευση του συστήµατος. Γι αυτό, σηµαντικά µέρη ενός συστήµατος πραγµατικού χρόνου πρέπει να σχεδιάζονται έτσι ώστε να είναι ανεκτικά σε σφάλµατα 18

2.4 Περιγραφή Μοντέλου και Μεθοδολογίας 2.4.1 Περιγραφή συστήµατος Πρόκειται για ένα κατανεµηµένο σύστηµα, πραγµατικού χρόνου µε P=16 επεξεργαστές. Κάθε ένας από τους επεξεργαστές διαθέτει τη δική του ουρά. Οι εργασίες φθάνουν στο σύστηµα µε ρυθµό άφιξης λ. Ο ρυθµός εξυπηρέτησης κάθε επεξεργαστή είναι µ. Κατά σταθερά διαστήµατα φθάνουν στο σύστηµα και κρίσιµες εργασίες, οι οποίες έχουν εκθετικό χρόνο εξυπηρέτησης. Κάθε κρίσιµη εργασία πρέπει να εξυπηρετηθεί τη στιγµή που έρχεται στο σύστηµα. Εάν δεν υπάρχει ελεύθερος επεξεργαστής, τότε γίνεται προεκχώρηση σε µια µη-κρίσιµη εργασία. Εάν όλοι οι επεξεργαστές είναι απασχοληµένοι µε µια κρίσιµη εργασία, τότε η καινούρια κρίσιµη που φθάνει στο σύστηµα θεωρείται απώλεια. Μία µη-κρίσιµη εργασία που προεκχωρείται µπαίνει πρώτη στην ουρά αναµονής. Σε περίπτωση που µία µη-κρίσιµη εργασία προεκχωρηθεί n φορές, θεωρείται απώλεια... Σχηµατική αναπαράσταση του µοντέλου του κατανεµηµένου συστήµατος 19

2.4.1 ιαδικασία Αφίξεων Κάθε µη-κρίσιµη εργασία που φθάνει στο σύστηµα, ξεκινάει την εκτέλεσή της, εφόσον υπάρχουν ελεύθεροι επεξεργαστές. ιαφορετικά η εργασία εισάγεται στην ουρά του επεξεργαστή, στον οποίο επιλέχθηκε να πάει (είτε τυχαία είτε µε επιλογή του επεξεργαστή µε την µικρότερη ουρά). Κάθε κρίσιµη εργασία που φθάνει στο σύστηµα, εάν υπάρχει ελεύθερος επεξεργαστής πηγαίνει εκεί. Εάν δεν υπάρχει ελεύθερος επεξεργαστής, τότε επιλέγει για να πάει, έναν επεξεργαστή που να είναι απασχοληµένος µε µία µη-κρίσιµη εργασία. Εάν όλοι οι επεξεργαστές έχουν κρίσιµες εργασίες τότε έχουµε µία απώλεια. 2.4.2 ιαδικασία Εξυπηρετήσεων Στην περίπτωση που κάποια εργασία δεν µπορεί να επεξεργασθεί τη στιγµή που φθάνει στο σύστηµα, αλλά εισάγεται σε κάποια ουρά, η επεξεργασία της αναβάλλεται για κάποια επόµενη χρονική στιγµή οπότε και είναι δυνατόν να πραγµατοποιηθεί. Ο έλεγχος των εργασιών που περιµένουν στις ουρές γίνεται µετά από κάθε αναχώρηση, διότι τότε ελευθερώνονται κάποιοι επεξεργαστές που µέχρι εκείνη τη στιγµή, ως απασχοληµένοι, αποτελούσαν εµπόδιο στην εξυπηρέτηση κάποιων εργασιών. Όλα όσα προαναφέρθηκαν, αφορούν τις µη-κρίσιµες εργασίες, εφόσον οι κρίσιµες εξυπηρετούνται τη στιγµή που φθάνουν αλλιώς χάνονται. 20

2.5 Παράµετροι 2.5.1 Παράµετροι Συστήµατος Αναφερόµαστε στα χαρακτηριστικά που περιγράφουν το σύστηµα που θα µοντελοποιηθεί ώστε να µελετηθεί µε την προσοµοίωση και τα οποία µπορούµε να µεταβάλλουµε για να συγκρίνουµε την απόδοση του συστήµατος κάτω από διαφορετικές συνθήκες. Oι παράµετροι που συνήθως χρησιµοποιούνται είναι οι ακόλουθες : Αριθµός Επεξεργαστών Πρόκειται για τον αριθµό των επεξεργαστών του κατανεµηµένου συστήµατος. Η συγκεκριµένη µελέτη γίνεται µε 16 επεξεργαστές. Επιλογή επεξεργαστή Πρόκειται για το κριτήριο, µε βάση το οποίο, µία εργασία που φθάνει τώρα στο σύστηµα θα εισαχθεί σε κάποιον επεξεργαστή. Εάν δεν µπορεί να γίνει απευθείας η επεξεργασία, τότε η εργασία εισάγεται στην ουρά του επεξεργαστή (µη-κρίσιµες). Για τη συγκεκριµένη µελέτη χρησιµοποιείται η τυχαία ανάθεση τις επεξεργαστές καθώς και το κριτήριο του ελάχιστου µήκους ουράς. Μέγιστο µήκος ουράς Πρόκειται για το µέγιστο αριθµό προγραµµάτων που µπορούν να περιµένουν για επεξεργασία σε µία ουρά. Στη µελέτη αυτή θεωρούµε ότι τις πολύ µεγάλος αριθµών εργασιών µπορούν να περιµένουν στην ουρά (θεωρητικά άπειρες). 21

Πειθαρχία ουράς Πρόκειται για τον αλγόριθµο µε βάση τον οποίο, θα επιλεγεί µία εργασία που βρίσκεται στην ουρά και θα δροµολογηθεί στον αντίστοιχο επεξεργαστή για επεξεργασία. Στη µελέτη αυτή χρησιµοποιείται ο αλγόριθµος FCFS(First-Come-First-Served). Χρόνοι αφίξεων, Χρόνοι εξυπηρέτησης Πρόκειται για τις κατανοµές που χρησιµοποιούν οι µεταξύ των αφίξεων χρόνοι και οι χρόνοι εξυπηρέτησης. Στη συγκεκριµένη µελέτη χρησιµοποιείται για τις µη-κρίσιµες εργασίες, για τις αφίξεις και τις εξυπηρετήσεις, η εκθετική κατανοµή. Για τις κρίσιµες εργασίες, χρησιµοποιείται για τις αφίξεις η σταθερή κατανοµή και για τις εξυπηρετήσεις η εκθετική και η σταθερή. Τερµατισµός Προσοµοίωσης Η προσοµοίωση ολοκληρώνεται αµέσως µόλις ικανοποιηθεί κάποια συνθήκη τέλους. Στη συγκεκριµένη µελέτη ως συνθήκη τέλους, θεωρούµε τη χρονική στιγµή κατά την οποία το ρολόι της προσοµοίωσης έχει την τιµή 10.000.

2.5.2 Παράµετροι Απόδοσης Για τη µελέτη του συστήµατος υπολογίζονται οι τιµές κάποιων µετρικών. Βασιζόµενοι στα αποτελέσµατα των συγκεκριµένων υπολογισµών, θα εξαχθούν συµπεράσµατα για τα πλεονεκτήµατα ή τα µειονεκτήµατα της χρησιµοποίησης της εκάστοτε µεθόδου, καθώς και για το πώς επηρεάζεται η απόδοση του συστήµατος. Παρακάτω ακολουθούν κάποιες από τις µετρικές αυτές : Χρησιµοποίηση επεξεργαστή (Utilization) : Υπολογίζεται αρχικά η χρησιµοποίηση κάθε επεξεργαστή ξεχωριστά, δηλαδή το ποσοστό του χρόνου που αυτός ήταν απασχοληµένος. Έπειτα υπολογίζεται η µέση χρησιµοποίηση του συστήµατος. Χρησιµοποίηση i επεξεργαστή : Utilization i TotalTime Pr ossesorbusy = TotalTime Συνολική χρησιµοποίηση : Utilization system p i= = 1 Utilization p i Μέση καθυστέρηση στην ουρά : Η µέση καθυστέρηση στην ουρά, υπολογίζεται για όλο το σύστηµα, και εκφράζει το µέσο χρόνο αναµονής των εργασιών στην ουρά, πριν απασχολήσουν κάποιον επεξεργαστή. Μέση καθυστέρηση στην ουρά : MeanQueueDelay system = NumOf Pr ograms i= 1 QueueDelay NumOf Pr ograms i 23

Μέσο µήκος ουράς (Mean Queue Length) : Το µέσο µήκος ουράς υπολογίζεται για κάθε επεξεργαστή και για το σύστηµα συνολικά και εκφράζει τον αριθµό των προγραµµάτων που περιµένουν για εξυπηρέτηση στην ουρά. Έστω Τ(j) ο συνολικός χρόνος για τον οποίο υπήρχαν στην ουρά j προγράµµατα. Μέσο µήκος ουράς ι επεξεργαστή : MeanQueueLength i = j j * T ( j) TotalTime Μέσο µήκος ουράς (συνολικά) : MeanQueueLength= NumberOf Pr ocessors i= 1 MeanQueueLength NumberOf Processors Μέσος χρόνος στο σύστηµα (Mean System Time) : Ο µέσος χρόνος στο σύστηµα υπολογίζεται για το σύστηµα συνολικά και δηλώνει το συνολικό χρόνο για τον οποίο προγράµµατα παρέµειναν στο σύστηµα από τη στιγµή της άφιξής τους µέχρι τη στιγµή της αναχώρησής τους. Ισούται µε το άθροισµα του χρόνου καθυστέρησης στην ουρά συν τον απαιτούµενο χρόνο για επεξεργασία. Μέσος χρόνος στο σύστηµα : MeanSystemTime system = NumOfDeparts i= 1 SystemTime NumOfDeparts i 24

ΜΕΡΟΣ 3ο : Υλοποίηση Προγράµµατος 25

3.1 Βασικές οµές Κώδικα 3.1.1 Γενικά για την υλοποίηση Το πρόγραµµα της προσοµοίωσης για την µελέτη της απόδοσης του κατανεµηµένου συστήµατος πραγµατικού χρόνου υλοποιήθηκε σε C++. Η συγκεκριµένη γλώσσα προγραµµατισµού βασίζεται σε ένα πολύ σηµαντικό χαρακτηριστικό, την αντικειµενοστρέφεια. Έτσι δίνεται η δυνατότητα να µοντελοποιηθούν οι διάφορες οντότητες ενός συστήµατος σε κλάσεις και αντικείµενα, στοιχεία εύκολα υλοποιήσιµα χρησιµοποιώντας τις δυνατότητες τις γλώσσας. Η γενική µορφή του προγράµµατος δίνεται παρακάτω : Αρχικοποίηση Αρχικοποίησε τους στατιστικούς µετριτές Τοποθέτησε στη λίστα γεγονότων, τα γεγονότα µε τα οποία θα ξεκινάει η προσοµοίωση και ίσως και το γεγονός τερµατισµού Κυρίως Πρόγραµµα Μέχρι το τέλος της προσοµοίωσης επαναλάµβανε : Προχώρησε το ρολόι ώστε να δείχνει το χρόνο του πιο επικείµενου γεγονότος Ενηµέρωσε τους στατιστικούς µετρητές Εκτέλεσε το τρέχον γεγονός καλώντας την αντίστοιχη ρουτίνα γεγονότος Έλεγχος για το τέλος της προσοµοίωσης Αναφορά Αποτελεσµάτων 26

3.1.2 Σταθερές του προγράµµατος Για την υλοποίηση του προγράµµατος, χρησιµοποιήθηκαν οι παρακάτω σταθερές, ορισµένες από τις οποίες βοηθούν στη διάκριση µεταξύ εναλλακτικών δυνατοτήτων µελέτης του συστήµατος : Σταθερά Περιγραφή #define QLimit 50000 Σταθερά, η οποία ορίζει το µέγιστο µήκος ουράς να είναι ίσο µε 50.000 #define BUSY 1 #define IDLE 0 Σταθερές που χρησιµοποιούνται για τον χαρακτηρισµό της κατάστασης κάθε επεξεργαστή #define CRITICAL_EVENT 1 #define SIMPLE_EVENT 0 #define NO_EVENT -1 Σταθερές που χρησιµοποιούνται για το χαρακτηρισµό ενός γεγονότος που µπορεί να συµβεί στο σύστηµα (κρίσιµο, µη-κρίσιµο, όχι-γεγονός) #define NUMBER_OF_CPUs 16 Σταθερά που ορίζει τον αριθµό των επεξεργαστών #define MAX_NUM_EVENTS 5 Η σταθερά αυτή ορίζει το µέγιστο αριθµό γεγονότων-συµβάντων που µπορούµε να έχουµε στο σύστηµα (ERROR=0, ARRIVAL=1, DEPARTURE=2, CRITICAL_ARRIVAL=3, END=4 ) 27

3.1.3 Μεταβλητές του προγράµµατος Για την υλοποίηση του προγράµµατος, χρησιµοποιήθηκαν οι παρακάτω µεταβλητές, οι οποίες υλοποιούν τις παραµέτρους περιγραφής του µοντέλου προσοµοίωσης : Μεταβλητή Περιγραφή float mean_interarrival float mean_interarrival_critical float mean_service Οι τρεις αυτές µεταβλητές διαβάζονται από το αρχείο input.txt και αφορούν τις τιµές των µεταξύ των αφίξεων χρόνων, για τις κρίσιµες και τις µη-κρίσιµες, καθώς και τους χρόνους εξυπηρέτησης float time_end Η µεταβλητή αυτή διαβάζεται από το αρχείο input.txt και ορίζει το χρόνο που θα τελειώσει double time Το ρολόι της προσοµοίωσης int NUMBER_OF_PREEMPTIONS Η µεταβλητή αυτή καθορίζει των αριθµό των φορών που µια µηκρίσιµη εργασία µπορεί να προεκχωρηθεί. Αν προεκχωρηθεί έπειτα άλλη µία φορά, τότε έχουµε µία απώλεια στις µη-κρίσιµες εργασίες 28

Μεταβλητή Περιγραφή int server Η ακέραια αυτή µεταβλητή καθορίζει τον επεξεργαστή στον οποίο έχουµε µία άφιξη ή µία αναχώρηση κατά την τρέχουσα χρονική στιγµή. int next_event_type Καθορίζει τον τύπο του επόµενου γεγονότος που θα έρθει στο σύστηµα (ERROR=0, ARRIVAL=1, DEPARTURE=2, CRITICAL_ARRIVAL=3, END=4 ) int num_of_critical_losses Η τιµή της µεταβλητής αυτής καθορίζει τον αριθµό των κρίσιµων εργασιών που έχουν χαθεί (απώλειες) int total_simple_losses Η τιµή της µεταβλητής αυτής καθορίζει τον αριθµό των µηκρίσιµων εργασιών που έχουν χαθεί (απώλειες)

3.1.4 Κλάσεις του προγράµµατος Κλάση Distribute Η κλάση αυτή υλοποιεί τις κατανοµές οι οποίες χρησιµοποιούνται στη συγκεκριµένη µελέτη, δηλαδή την εκθετική και την σταθερή. Στον παρακάτω πίνακα παρατίθενται οι µέθοδοι της παραπάνω κλάσης: Όνοµα Μεθόδου double Random (double *y) double Expon (double mean,double *y) double Stable (double Time) Περιγραφή Παράγει έναν τυχαίο αριθµό στο διάστηµα 0-1 Υλοποιεί τη συνάρτηση παραγωγής εκθετικά κατανεµηµένων µεταβλητών Υλοποιεί την σταθερή κατανοµή Κλάση Event Η κλάση αυτή υλοποιεί τα γεγονότα-εργασίες τα οποία έρχονται στο σύστηµα ανά χρονικά διαστήµατα(εκθετικά για τις µη-κρίσιµες εργασίες και σταθερά για τις κρίσιµες).η κλάση αυτή έχει τα παρακάτω χαρακτηριστικά (attributes) : Χαρακτηριστικά double time_of_event double time_of_arrival_in_queue double required_time_in_cpu int num_of_preemptions Περιγραφή Η χρονική στιγµή κατά την οποία έφθασε η εργασία στο σύστηµα Η χρονική στιγµή κατά την οποία η εργασία εισήχθη στην ουρά Ο απαιτούµενος χρόνος επεξεργασίας της εργασίας Ο αριθµός των φορών που προεκχωρήθηκε η εργασία

int type_of_event Event* ptr Χαρακτηριστικά Περιγραφή Ο τύπος του γεγονότος-εργασίας, δηλαδή αν είναι κρίσιµη ή µη-κρίσιµη Ένας δείκτης σε ένα αντικείµενο τύπου Event για την υλοποίηση της ουράς Η κλάση Event υλοποιεί τις παρακάτω µεθόδους : Όνοµα Μεθόδου Περιγραφή double get_time_of_event(void) Συνάρτηση που επιστρέφει τον χρόνο άφιξης του γεγονότος void set_time_of_event(double time) Συνάρτηση που θέτει τον χρόνο άφιξης του γεγονότος ίσο µε time double get_time_of_arrival_in_queue(void) Επιστρέφει τον χρόνο άφιξης του γεγονότος την ουρά set_time_of_arrival_in_queue(double time) Θέτει τον χρόνο άφιξης του γεγονότος στην ουρά ίσο µε time int get_type_of_event(void) Επιστρέφει τον τύπο του γεγονότος void set_type_of_event (int type) Θέτει τον τύπο του γεγονότος ίσο µε type double get_required_time_in_cpu (void) Επιστρέφει τον χρόνο που χρειάζεται στην CPU το γεγονός set_required_time_in_cpu (double time) Θέτει τον απαιτούµενο χρόνο στη CPU ίσο µε time int get_num_of_preemptions (void) Επιστρέφει τον αριθµό των φορών που προεκχωρήθηκε τη εργασία void increase_num_of_preemptions (void) Αυξάνει τον αριθµό των προεκχωρήσεων κατά ένα 31

Κλάση Queue Η κλάση αυτή υλοποιεί την ουρά κάθε επεξεργαστή του συστήµατος. Όταν ο επεξεργαστής είναι απασχοληµένος, οι εργασίες τοποθετούνται στο τέλος της αντίστοιχης ουράς. Η επόµενη προς εξυπηρέτηση εργασία είναι αυτή που βρίσκεται πρώτη στην ουρά. Όταν µία εργασία προεκχωρείται τότε τοποθετείται πρώτη στην ουρά. Στην ουρά τοποθετούνται µόνο µη-κρίσιµες εργασίες. Η κλάση αυτή έχει τα παρακάτω χαρακτηριστικά (attributes) : Χαρακτηριστικά Event* head_ptr Event* tail_ptr Event* event_ptr long int queue_size Περιγραφή είκτης σε ένα αντικείµενο τύπου Event,που δείχνει πάντα στην κεφαλή της ουράς είκτης σε ένα αντικείµενο τύπου Event,που δείχνει πάντα στο τέλος της ουράς είκτης σε ένα αντικείµενο τύπου Event Ο αριθµός των εργασιών που βρίσκονται στην ουρά Η κλάση Queue υλοποιεί τις παρακάτω µεθόδους : Όνοµα Μεθόδου long int get_queue_size(void) void increase_queue_size() Περιγραφή Συνάρτηση που επιστρέφει το µήκος της ουράς, δηλαδή τον αριθµό των εργασιών που βρίσκονται σε αυτή Συνάρτηση που αυξάνει το µήκος της ουράς κατά ένα, όταν έχουµε µια άφιξη στην ουρά 32

Όνοµα Μεθόδου void decrease_queue_size() void Enqueue (Event* node) Event* Dequeue() void Enqueue_on_top (Event* node) Περιγραφή Συνάρτηση που µειώνει το µήκος της ουράς κατά ένα, όταν έχουµε µια αναχώρηση από την ουρά Η συνάρτηση αυτή τοποθετεί στο τέλος της ουράς ένα αντικείµενο τύπου Event Η συνάρτηση αυτή βγάζει από την αρχή της ουράς ένα αντικείµενο τύπου Event Η συνάρτηση αυτή τοποθετεί στην αρχή της ουράς ένα αντικείµενο τύπου Event. Αυτό γίνεται µόνο στην περίπτωση που το γεγονός-εργασία έχει προεκχωρηθεί Κλάση Cpu Η κλάση αυτή υλοποιεί τους επεξεργαστές του συστήµατος. Κάθε επεξεργαστής αποτελεί µια βασική δοµική µονάδα που συµβάλλει στην οµαλή λειτουργία του συστήµατος παρέχοντας εξυπηρέτηση σε εργασίες σε κάθε χρονική στιγµή. Επίσης αξίζει να αναφέρουµε, ότι για κάθε επεξεργαστή υπάρχει και µία ουρά, όπου περιµένουν οι εργασίες που δεν µπορούν να δεχθούν απευθείας εξυπηρέτηση. Η κλάση αυτή έχει τα παρακάτω χαρακτηριστικά (attributes) : int cpu_status Χαρακτηριστικά Περιγραφή Αφορά την κατάσταση του επεξεργαστή, εάν δηλαδή αυτός είναι απασχοληµένος ή όχι ( BUSY, IDLE ) 33

Χαρακτηριστικά unsigned int num_progs_delayed int num_critical_progs_delayed double total_delays double time_last_event unsigned int num_of_losses Queue cpu_queue Event next_event [MAX_NUM_EVENTS] double current_event_required_time_in_cpu int current_event_num_of_preemptions int current_event_type Περιγραφή Αφορά τον αριθµό των µη-κρίσιµων εργασιών που έχουν εξυπηρετηθεί από τον επεξεργαστή Αφορά τον αριθµό των κρίσιµων εργασιών που έχουν εξυπηρετηθεί από τον επεξεργαστή Οι συνολικές καθυστερήσεις των εργασιών στην ουρά του επεξεργαστή Ο χρόνος στον οποίο έφυγε η τελευταία εργασία από τον επεξεργαστή Ο συνολικός αριθµός των απωλειών, των µη-κρίσιµων εργασιών Ένα αντικείµενο της κλάσης Queue, που υλοποιεί την ουρά του επεξεργαστή Ένας πίνακας µε αντικείµενα της κλάσης Event, που καθορίζει πότε θα συµβεί το επόµενο γεγονός από κάθε τύπο γεγονότος Ο χρόνος επεξεργασίας της τρέχουσας εργασίας Ο αριθµός των φορών που προεκχωρήθηκε η τρέχουσα εργασία Ο τύπος της τρέχουσας εργασίας CRITICAL_EVENT = 1 (κρίσιµη) SIMPLE_EVENT = 0 (µη-κρίσιµη) 34

Η κλάση Cpu υλοποιεί τις παρακάτω µεθόδους : Όνοµα Μεθόδου void update_time_avg_stats (void) int get_cpu_status (void) void set_cpu_status (int status) double get_total_delays (void) void increase_total_delays (double delay) int get_num_of_losses (void) void increase_num_of_losses (void) int get_num_progs_delayed (void) int get_num_critical_progs_delayed (void) Περιγραφή Ενηµερώνει τους στατιστικούς µετρητές για τον συγκεκριµένο επεξεργαστή Επιστρέφει την τρέχουσα κατάσταση του επεξεργαστή Αλλάζει την κατάσταση του επεξεργαστή σε status Επιστρέφει τις συνολικές καθυστερήσεις Αυξάνει τις συνολικές καθυστερήσεις κατά την ποσότητα delay Επιστρέφει τον αριθµό των απωλειών, των µη-κρίσιµων εργασιών Αυξάνει τον αριθµό των απωλειών, των µη-κρίσιµων εργασιών Επιστρέφει τον αριθµό των µηκρίσιµων εργασιών που έχουν εξυπηρετηθεί από τον επεξεργαστή Επιστρέφει τον αριθµό των κρίσιµων εργασιών που έχουν εξυπηρετηθεί από τον επεξεργαστή 35

3.1.5 Συναρτήσεις του προγράµµατος Στο πρόγραµµα χρησιµοποιήθηκαν οι παρακάτω συναρτήσεις : void initialize (void) Είναι η συνάρτηση αρχικοποίησης. Στέλνει σε όλους τους επεξεργαστές τη χρονική στιγµή κατά την οποία θα συµβεί η άφιξη της πρώτης µηκρίσιµης και της πρώτης κρίσιµης εργασίας, καθώς και τη χρονική στιγµή που θα τελειώσει η προσοµοίωση. void timing (void) Η συνάρτηση timing καθορίζει το επόµενο γεγονός που θα συµβεί, δηλαδή το εγγύτερο, καθώς και τι τύπου είναι. Αν το επόµενο γεγονός είναι µία αναχώρηση, τότε καθορίζει και σε ποιον επεξεργαστή θα συµβεί. Αν το επόµενο γεγονός είναι η άφιξη µιας µη-κρίσιµης εργασίας, και η κατανοµή των εργασιών στους επεξεργαστές γίνεται τυχαία, τότε καλεί τη συνάρτηση choose_server (). Αν το επόµενο γεγονός είναι η άφιξη µιας µη-κρίσιµης εργασίας, και η κατανοµή των εργασιών στους επεξεργαστές γίνεται µε βάση το µήκος της ουράς τους, τότε καλεί τη συνάρτηση choose_server_q (). Εάν το επόµενο γεγονός είναι η άφιξη κρίσιµης εργασίας τότε καλεί τη συνάρτηση choose_critical_server(). Όλες οι συναρτήσεις που αναφέρθηκαν καλούνται για να καθοριστεί σε ποιον επεξεργαστή θα συµβεί η άφιξη. void choose_server (void) Η συνάρτηση αυτή καλεί τη συνάρτηση rand() για να καθορίσει τυχαία, σε ποιον από τους 16 επεξεργαστές θα πάει η εργασία 36

void choose_server_q (void) Η συνάρτηση αυτή ψάχνει από όλους τους επεξεργαστές, αυτόν µε τη µικρότερη ουρά, για να στείλει εκεί την εργασία που ζητάει εξυπηρέτηση. Η αναζήτηση ξεκινάει από έναν επεξεργαστή τυχαία. void choose_critical_server (void) Η συνάρτηση αυτή καθορίζει σε ποιον επεξεργαστή θα εκτελεσθεί µία κρίσιµη εργασία που έφθασε στο σύστηµα. Ο αλγόριθµος είναι ο εξής : 1) ιάλεξε τυχαία έναν επεξεργαστή ( first_server ) Εάν είναι ελεύθερος, στείλε την κρίσιµη εργασία εκεί Εάν είναι απασχοληµένος, ψάξε κυκλικά για τον πρώτο που θα βρεις ελεύθερο 2) Εάν κανείς δεν είναι ελεύθερος, ξεκίνα πάλι από τον first_server Ψάξε µε κυκλική σειρά τον πρώτο που θα βρεις µε µία µη-κρίσιµη εργασία και στείλε το κρίσιµο εκεί 3) Εάν όλοι οι επεξεργαστές έχουν κρίσιµες εργασίες τότε αύξησε τις απώλειες των κρίσιµων εργασιών void arrive (void) Συνάρτηση άφιξης µιας µη-κρίσιµης εργασίας σε κάποιον επεξεργαστή. Αρχικά καθορίζει τη χρονική στιγµή κατά την οποία θα συµβεί η επόµενη άφιξη. Έπειτα έχουµε 2 περιπτώσεις που µπορεί να συµβούν : 37

1. Ο επεξεργαστής να είναι απασχοληµένος (BUSY). Στην περίπτωση αυτή, ενηµερώνουµε τις µεταβλητές που αφορούν την συγκεκριµένη εργασία και έπειτα την εισάγουµε στο τέλος της ουράς 2. Ο επεξεργαστής να είναι ελεύθερος (IDLE). Στην περίπτωση αυτή, η εργασία αρχίζει αµέσως την εκτέλεσή της στον επεξεργαστή και καθορίζει τη χρονική στιγµή που θα φύγει. void critical_arrive (void) Η συνάρτηση αυτή καλείται µε την άφιξη µιας κρίσιµης εργασίας στο σύστηµα. Αρχικά καθορίζεται η χρονική στιγµή της επόµενης άφιξης µιας κρίσιµης εργασίας. Έπειτα υπάρχουν δύο περιπτώσεις : 1. Ο επεξεργαστής να είναι απασχοληµένος (BUSY) µε µία µηκρίσιµη εργασία. Στην περίπτωση αύτη, σταµατάει η εκτέλεση της µη-κρίσιµης εργασίας, αποθηκεύονται οι τιµές των µεταβλητών που την αφορούν και εισάγεται η εργασία στην αρχή της ουράς του επεξεργαστή. Η κρίσιµη εργασία αρχίζει την εκτέλεσή της στον ελεύθερο πια επεξεργαστή, και καθορίζει τη χρονική στιγµή στην οποία θα τελειώσει την εκτέλεσή της. 2. Ο επεξεργαστής να είναι ελεύθερος (IDLE). Στην περίπτωση αύτη, η κρίσιµη εργασία ξεκινάει αµέσως την εκτέλεσή της και καθορίζει τη χρονική στιγµή στην οποία θα τελειώσει και θα φύγει από το σύστηµα. Αξίζει εδώ να επισηµάνουµε ότι από τη στιγµή που µία κρίσιµη εργασία ξεκινήσει την εκτέλεσή της, θα ελευθερώσει τον επεξεργαστή µόνο όταν τελειώσει. εν υπάρχει δηλαδή περίπτωση να προεκχωρηθεί µια κρίσιµη εργασία. 38

void depart (void) Κατά την αποχώρηση µιας εργασίας, είτε είναι κρίσιµη είτε όχι, ελέγχεται εάν υπάρχουν άλλες εργασίες που περιµένουν στην ουρά. Εάν υπάρχουν, τότε η εργασία που βρίσκεται πρώτη αφαιρείται από την ουρά και ελέγχουµε εάν έχει προεκχωρηθεί παραπάνω φορές από όσο πρέπει. Εάν ναι, τότε αυξάνουµε τον αριθµό των απωλειών των µηκρίσιµων εργασιών και αφαιρούµε από την ουρά την επόµενη εργασία, η οποία αρχίζει την εκτέλεσή της. Μία εργασία η οποία έχει προεκχωρηθεί, όταν ξαναρχίσει την εκτέλεσή της στον επεξεργαστή, ξεκινάει από την αρχή την εκτέλεσή της και για τόσο χρόνο, όσο είχε απαιτήσει την πρώτη φορά που ήρθε για εκτέλεση. void report (void) Η συνάρτηση αυτή τυπώνει στο αρχείο output.txt τα αποτελέσµατα που προέκυψαν για κάθε επεξεργαστή αλλά και κάποια συνολικά αποτελέσµατα. 39

ΜΕΡΟΣ 4ο : Μελέτη της Απόδοσης 40

4.1 ιεξαγωγή Πειραµάτων Ένας µεγάλος αριθµός πειραµάτων διεξήχθησαν για τη µελέτη της απόδοσης του συστήµατος. Σε όλα τα πειράµατα χρησιµοποιείτε ο συµβολισµός (ν, κ), όπου ν είναι ένας αριθµός που δηλώνει τον αριθµό των µη-κρίσιµων αφίξεων στην µονάδα του χρόνου, ενώ µε κ δηλώνουµε των αριθµό των κρίσιµων αφίξεων στην µονάδα του χρόνου. Έτσι π.χ. όπου υπάρχει το (8,6), εννοούµε 8 µη-κρίσιµες και 6 κρίσιµες αφίξεις εργασιών στη µονάδα του χρόνου. Σε όλες τις σειρές πειραµάτων, εκτελούµε πειράµατα µε Number of preemptions =1,2,3, όπου Number of preemptions ο αριθµός των φορών που µια εργασία µπορεί να προεκχωρηθεί. Εάν προεκχωρηθεί µια εργασία πάνω από Number of preemptions φορές θεωρείται απώλεια. Χρησιµοποιούνται σε όλα τα πειράµατα 16 επεξεργαστές και η προσοµοίωση τελειώνει στο χρόνο 10.000. Για µεγαλύτερη ευκολία στη µελέτη και στην εξαγωγή συµπερασµάτων, οι εκτελέσεις των πειραµάτων χωρίζονται στις παρακάτω κατηγορίες : 1 η Σειρά Πειραµάτων Τυχαία διαµοίραση των εργασιών στους επεξεργαστές. Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και εκθετικοί χρόνοι εξυπηρέτησης 41

2 η Σειρά Πειραµάτων Τυχαία διαµοίραση των εργασιών στους επεξεργαστές. Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και στους χρόνους εξυπηρέτησης (µ = 1) 3 η Σειρά Πειραµάτων ιαµοίραση των εργασιών στους επεξεργαστές σύµφωνα µε το µικρότερο µήκος ουράς Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και εκθετικοί χρόνοι εξυπηρέτησης 4 η Σειρά Πειραµάτων ιαµοίραση των εργασιών στους επεξεργαστές σύµφωνα µε το µικρότερο µήκος ουράς Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και στους χρόνους εξυπηρέτησης (µ = 1) 42

4.1.1 1 η Σειρά Πειραµάτων Τυχαία διαµοίραση των εργασιών στους επεξεργαστές. Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και εκθετικοί χρόνοι εξυπηρέτησης -) Απώλειες κρίσιµων εργασιών Number of preemptions 1 2 3 (8, 4) 0 0 0 (8, 6) 0 0 0 (7, 7) 2 2 2 (10, 4) 0 0 0 1 2 3 number of critical losses 2,5 2 1,5 1 0,5 0 2 2 2 0 0 0 0 0 0 0 0 0 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Βλέπουµε ότι έχουµε 2 απώλειες κρίσιµων εργασιών για αριθµό προεκχωρήσεων 1,2,3 όταν έχουµε 7 αφίξεις µη-κρίσιµων και 7 αφίξεις κρίσιµων εργασιών στη µονάδα του χρόνου Σε όλες τις υπόλοιπες περιπτώσεις δεν έχουµε απώλειες κρίσιµων εργασιών 43

-) Απώλειες µη-κρίσιµων εργασιών Number of preemptions 1 2 3 (8, 4) 35,18 2,6 0,31 (8, 6) 285,37 166,93 223,31 (7, 7) 335,68 218,75 275 (10, 4) 207,5 79,62 68,43 1 2 3 number of non-critical losses 400 350 300 250 200 150 100 50 0 335,68 285,37 275 223,31 218,75 207,5 166,93 79,62 68,43 35,18 2,60,31 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Παρατηρούµε ότι όταν έχουµε µικρό αριθµό αφίξεων κρίσιµων εργασιών στη µονάδα του χρόνου ( (8,4), (10,4) ), ο αριθµός των απωλειών των µη-κρίσιµων εργασιών µειώνεται, καθώς αυξάνουµε το Number of preemptions. Αυτό συµβαίνει διότι µία µηκρίσιµη εργασία θεωρείται απώλεια πιο δύσκολα, αφού της επιτρέπεται να προεκχωρηθεί περισσότερες φορές Αντίθετα, στις περιπτώσεις ( (8,6), (7,7) ), όπου οι κρίσιµες εργασίες έρχονται πιο συχνά, παρατηρούµε ότι όταν το Number of preemptions είναι ίσο µε 3, έχουµε µία αύξηση των απωλειών. Αυτό συµβαίνει γιατί έρχονται περίπου τόσες κρίσιµες όσες και 44

µη-κρίσιµες εργασίες και έτσι προεκχωρούνται περισσότερες φορές οι µη-κρίσιµες εργασίες απ ότι στην προηγούµενη περίπτωση. Επίσης, τα µήκη των ουρών των επεξεργαστών όλο και αυξάνονται και έτσι µία κρίσιµη εργασία δεν βρίσκει εύκολα άδειο επεξεργαστή και προεκχωρεί µία µη-κρίσιµη εργασία. -) Χρησιµοποίηση επεξεργαστή Number of preemptions 1 2 3 (8, 4) 0,746 0,754 0,754 (8, 6) 0,844 0,896 0,952 (7, 7) 0,841 0,896 0,948 (10, 4) 0,854 0,901 0,942 1 2 3 server utilization 1 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0 0,952 0,948 0,942 0,896 0,896 0,901 0,844 0,841 0,854 0,746 0,754 0,754 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Η µέση χρησιµοποίηση των επεξεργαστών αυξάνεται όσο αυξάνεται η µεταβλητή Number of preemptions, κάτι που είναι λογικό διότι µία µη-κρίσιµη εργασία µένει για περισσότερο χρόνο στο σύστηµα και έχει περισσότερες ευκαιρίες για επεξεργασία από τον επεξεργαστή πριν θεωρηθεί απώλεια. 45

-) Μέσος αριθµός εργασιών στην ουρά Number of preemptions 1 2 3 (8, 4) 0,759 0,803 0,8 (8, 6) 0,875 1,53 3,81 (7, 7) 0,684 1,211 2,82 (10, 4) 1,41 2,4 4,79 1 2 3 average number of jobs in queue 6 5 4 3 2 1 0 4,79 3,81 2,82 2,4 1,53 1,211 1,41 0,759 0,8030,8 0,875 0,684 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Παρατηρούµε ότι όσο µεγαλώνει η τιµή της µεταβλητής Number of preemptions, αυξάνεται και ο αριθµός των προγραµµάτων στην ουρά. Αυτό µπορεί να εξηγηθεί ως εξής: Κάθε µη-κρίσιµη εργασία καταλαµβάνει περισσότερο χρόνο στον επεξεργαστή, αφού όταν προεκχωρείται αρχίζει την εκτέλεσή της από την αρχή. Έτσι όσο αυξάνουµε τον αριθµό των φορών που µπορεί να προεκχωρηθεί µια εργασία, τόσο περισσότερο γεµίζουν οι ουρές των επεξεργαστών. 46

4.1.2 2 η Σειρά Πειραµάτων Τυχαία διαµοίραση των εργασιών στους επεξεργαστές. Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και στους χρόνους εξυπηρέτησης (µ = 1) -) Απώλειες κρίσιµων εργασιών Στην περίπτωση αυτή, όπου οι κρίσιµες εργασίες έχουν σταθερό χρόνο εξυπηρέτησης ίσο µε 1, δεν υπάρχουν απώλειες κρίσιµων εργασιών όπως φαίνεται και στον παρακάτω πίνακα. Number of preemptions 1 2 3 (8, 4) 0 0 0 (8, 6) 0 0 0 (7, 7) 0 0 0 (10, 4) 0 0 0 Παρατηρήσεις : εδοµένου ότι οι κρίσιµες εργασίες έχουν σταθερό χρόνο εξυπηρέτησης ίσο µε 1, είναι αναµενόµενο να µην έχουµε απώλειες. Αυτό συµβαίνει διότι, οι κρίσιµες εργασίες απασχολούν για σύντοµο χρονικό διάστηµα τον επεξεργαστή και έτσι δεν τυχαίνει η περίπτωση στην οποία και οι 16 επεξεργαστές έχουν από µία κρίσιµη εργασία. 47

-) Απώλειες µη-κρίσιµων εργασιών Number of preemptions 1 2 3 (8, 4) 14,625 0,5 0 (8, 6) 250,81 146,25 273,18 (7, 7) 278,56 192,31 328,75 (10, 4) 133,43 36,93 20,37 1 2 3 number of non-critical losses 350 300 250 200 150 100 50 0 328,75 250,81 273,18 278,56 192,31 146,25 133,43 36,93 14,625 20,37 0,5 0 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Βλέπουµε ότι ο αριθµός των απωλειών στις µη-κρίσιµες εργασίες µειώνεται σε σχέση µε την 1 η σειρά πειραµάτων όπου είχαµε εκθετικούς χρόνους εξυπηρέτησης. Αύξηση παρατηρείται µόνο όταν το Number of preemptions είναι ίσο µε 3,στις περιπτώσεις ( ( 8, 6 ), ( 7,7 ) ). Αυτό συµβαίνει γιατί, όπως θα δούµε παρακάτω, ο µέσος αριθµός προγραµµάτων στην ουρά αυξάνει πάρα πολύ και έτσι είναι πιο πιθανό µία εργασία να προεκχωρηθεί αρκετές φορές και να θεωρηθεί απώλεια. 48

-) Χρησιµοποίηση επεξεργαστή Number of preemptions 1 2 3 (8, 4) 0,748 0,751 0,751 (8, 6) 0,851 0,903 0,965 (7, 7) 0,852 0,902 0,955 (10, 4) 0,862 0,893 0,911 1,2 1 2 3 server utilization 1 0,8 0,6 0,4 0,2 0,748 0,751 0,751 0,965 0,955 0,903 0,902 0,851 0,852 0,862 0,893 0,911 0 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Βλέπουµε ότι η µέση χρησιµοποίηση των επεξεργαστών παραµένει περίπου στα ίδια επίπεδα µε πριν. 49

-) Μέσος αριθµός εργασιών στην ουρά Number of preemptions 1 2 3 (8, 4) 0,634 0,649 0,648 (8, 6) 0,709 1,355 4,896 (7, 7) 0,544 1,031 3,02 (10, 4) 1,247 1,796 2,459 1 2 3 average number of jobs in queue 6 5 4 3 2 1 0 4,896 3,02 2,459 1,796 1,355 1,247 1,031 0,634 0,649 0,648 0,709 0,544 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Παρατηρούµε ότι όσο µεγαλώνει η τιµή της µεταβλητής Number of preemptions, αυξάνεται και ο αριθµός των προγραµµάτων στην ουρά. Ιδιαίτερη αύξηση βλέπουµε στην περίπτωση ( 8, 6 ). 50

4.1.3 3 η Σειρά Πειραµάτων ιαµοίραση των εργασιών στους επεξεργαστές σύµφωνα µε το µικρότερο µήκος ουράς Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και εκθετικοί χρόνοι εξυπηρέτησης -) Απώλειες κρίσιµων εργασιών Number of preemptions 1 2 3 (8, 4) 0 0 0 (8, 6) 0 0 0 (7, 7) 2 2 2 (10, 4) 0 0 0 1 2 3 number of critical losses 2,5 2 1,5 1 0,5 0 2 2 2 0 0 0 0 0 0 0 0 0 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Βλέπουµε ότι έχουµε 2 απώλειες κρίσιµων εργασιών για αριθµό προεκχωρήσεων 1,2,3 όταν έχουµε 7 αφίξεις µη-κρίσιµων και 7 αφίξεις κρίσιµων εργασιών στη µονάδα του χρόνου Σε όλες τις υπόλοιπες περιπτώσεις δεν έχουµε απώλειες κρίσιµων εργασιών 51

-) Απώλειες µη-κρίσιµων εργασιών Number of preemptions 1 2 3 (8, 4) 64,06 12,75 4,56 (8, 6) 357,93 277,75 396,81 (7, 7) 388,56 309,43 399,62 (10, 4) 300 200,5 290,625 1 2 3 number of non-critical losses 450 400 350 300 250 200 150 100 50 0 396,81 388,56 399,62 357,93 277,75 309,43 300 290,625 200,5 64,06 12,754,56 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Αν συγκρίνουµε το παραπάνω γράφηµα, µε το αντίστοιχο τις 1 ης σειράς πειραµάτων, όπου γινόταν τυχαία ανάθεση εργασιών στους επεξεργαστές, θα παρατηρήσουµε ότι οι απώλειες αυξάνονται κατά πολύ. Αυτό συµβαίνει διότι στην περίπτωση αυτή, γίνεται ανάθεση στους επεξεργαστές µε κριτήριο το µικρότερο µήκος ουράς. Έτσι, όλες οι εργασίες διανέµονται οµοιόµορφα σε όλους τους επεξεργαστές και σε σύντοµο χρονικό διάστηµα, όλοι είναι απασχοληµένοι. Με την άφιξη κρίσιµων εργασιών, έχουµε προεκχώρηση των µη-κρίσιµων και οδηγούµαστε σε πιο πολλές απώλειες. 52

-) Χρησιµοποίηση επεξεργαστή Number of preemptions 1 2 3 (8, 4) 0,744 0,757 0,761 (8, 6) 0,838 0,893 0,953 (7, 7) 0,836 0,891 0,939 (10, 4) 0,844 0,904 0,992 1 2 3 server utilization 1,2 1 0,8 0,6 0,4 0,2 0,744 0,757 0,761 0,953 0,992 0,939 0,893 0,891 0,904 0,838 0,836 0,844 0 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Βλέπουµε ότι η µέση χρησιµοποίηση των επεξεργαστών παραµένει περίπου στα ίδια επίπεδα µε πριν. 53

-) Μέσος αριθµός εργασιών στην ουρά Number of preemptions 1 2 3 (8, 4) 0,325 0,353 0,368 (8, 6) 0,412 0,627 1,532 (7, 7) 0,372 0,553 1,02 (10, 4) 0,493 0,802 5,33 1 2 3 average number of jobs in queue 6 5 4 3 2 1 0 5,33 1,532 1,02 0,627 0,802 0,3250,353 0,368 0,412 0,372 0,553 0,493 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) Παρατηρήσεις : Σ αυτή τη σειρά πειραµάτων, γίνεται ανάθεση στους επεξεργαστές µε κριτήριο το µικρότερο µήκος ουράς. Έτσι έχουµε µια οµοιόµορφη ανάθεση εργασιών στους επεξεργαστές. Παρατηρούµε λοιπόν, ότι ο µέσος αριθµός προγραµµάτων στην ουρά είναι µικρός σε σχέση µε την 1 η σειρά πειραµάτων. Μια αύξηση παρατηρείται στην περίπτωση ( 10, 4 ) και όταν το Number of preemptions είναι ίσο µε 3, όπου έρχονται αρκετές µηκρίσιµες εργασίες στη µονάδα του χρόνου (10) και έχουν ευκαιρία να εκτελεστούν 3 φορές, εάν προεκχωρηθούν. Ως αποτέλεσµα, γεµίζουν οι ουρές των επεξεργαστών. 54

4.1.4 4 η Σειρά Πειραµάτων ιαµοίραση των εργασιών στους επεξεργαστές σύµφωνα µε το µικρότερο µήκος ουράς Χρησιµοποιείται η εκθετική κατανοµή στις αφίξεις και στους χρόνους εξυπηρέτησης των µη-κρίσιµων εργασιών Χρησιµοποιείται η σταθερή κατανοµή στις αφίξεις των κρίσιµων εργασιών και στους χρόνους εξυπηρέτησης (µ = 1) -) Απώλειες κρίσιµων εργασιών Number of preemptions 1 2 3 (8, 4) 0 0 0 (8, 6) 0 0 0 (7, 7) 0 0 1 (10, 4) 0 0 0 1 2 3 number of critical losses 1,2 1 0,8 0,6 0,4 0,2 0 0 0 0 0 0 0 0 0 0 0 (8, 4) (8, 6) (7, 7) (10, 4) (non-critical arrival, critical arrival) 1 0 Παρατηρήσεις : Βλέπουµε ότι δεν υπάρχει σηµαντικός αριθµός απωλειών κρίσιµων εργασιών 55