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



Σχετικά έγγραφα
Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

Βασικές Έννοιες Web Εφαρμογών

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

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

Εργαλεία ανάπτυξης εφαρμογών internet Ι

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

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

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

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

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

Βασική δοµή και Λειτουργία Υπολογιστή

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

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

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Μαλούτα Θεανώ Σελίδα 1

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

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

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

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

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

Information Technology for Business

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

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

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Προγραμματισμός Υπολογιστών

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

Λιβανός Γιώργος Εξάμηνο 2017Β

Αβραμίδης Ελευθέριος Επιβλέπων καθηγητής Κωνσταντίνος Διαμαντάρας. ΤΕΙ Θεσσαλονίκης 17/2/2009

Βασικές Έννοιες της Πληροφορικής

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

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

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET

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

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

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

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

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Η HTML 5 θα αλλάξει το Web?

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

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Alfaware Οδηγός Χρήσης Εφαρμογής (Software User Manual)

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

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

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

Τεχνικός Εφαρμογών Πληροφορικής

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

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

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

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

Το υλικό του υπολογιστή

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

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

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

ΛΟΓΙΣΜΙΚΟ (software)

Θεματογράφος (ή ο βοηθός του Καθηγητή)

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

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

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

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

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

VERSION 1.0 ΝΟΕΜΒΡΙΟΣ, 2016 ΤΕΧΝΟΛΟΓΙΕΣ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΟΜΟΙΩΣΗΣ CLOUDSIM ΕΠΙΜΕΛΕΙΑ: ΒΑΣΙΛΕΙΟΣ ΤΣΑΚΑΝΙΚΑΣ

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

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

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ OPEN ECLASS

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Transcript:

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

Ειδική Επιστημονική Εργασία ΑΝΑΠΤΥΞΗ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΟΜΟΙΩΣΗ ΤΗΣ ΛΕΙΤΟΥΡΓΙΑΣ ΕΝΟΣ ΕΠΕΞΕΡΓΑΣΤΗ ΜΕ ΔΙΕΥΡΥΜΕΝΟ ΡΕΠΕΡΤΟΡΙΟ ΕΝΤΟΛΩΝ Κάτσενος Χρήστος Ηλεκρολόγος Μηχανικός ΤΕ Εγκρίθηκε από την τριμελή εξεταστική επιτροπή την 26 η Απριλίου 2012 στα πλαίσια του ΠΜΣ Ηλεκτρονικής και Υπολογιστών Ευάγγελος Ζυγούρης Αναπληρωτής Καθηγητής Τμήμα Φυσικής Παν/μιο Πατρών Γεώργιος Οικονόμου Αναπληρωτή Καθηγητής Τμήμα Φυσικής Παν/μιο Πατρών Δημήτριος Μπακάλης Επίκουρος Καθηγητής Τμήμα Φυσικής Παν/μιο Πατρών Πάτρα, Απρίλιος 2012

i Πρόλογος Η παρούσα ειδική επιστημονική εργασία εκπονήθηκε στα πλαίσια του Προγράμματος Μεταπτυχιακών Σπουδών Ειδίκευσης Ηλεκτρονική και Υπολογιστές στο Τμήμα Φυσικής του Πανεπιστημίου Πατρών. Αντικείμενο της παρούσας εργασίας είναι η εξομοίωση της λειτουργίας ενός επεξεργαστή με διευρυμένο ρεπερτόριο εντολών μέσω του διαδικτύου. Αναλυτικότερα αναπτύχθηκε ένα διαδικτυακό εργαλείο που δέχεται την αλληλουχία των εντολών και στην συνέχεια αφού εκτελέσει έλεγχο αυτών, τόσο ως προς την ορθή σύνταξη αλλά και ως προς τις παραμέτρους αυτών, τις συμβολομεταφράζει και αποθηκεύει τον κώδικα που προκύπτει στην μνήμη της εφαρμογής. Επίσης παρέχεται και η δυνατότητα στον χρήστη να επιλέγει τον επεξεργαστή που θέλει να εξομοιώσει οπότε οι έλεγχοι επεκτείνονται και στο αν οι εντολές που έχει εισαγάγει ο χρήστης εμπεριέχονται στο ρεπερτόριο εντολών του επιλεγμένου επεξεργαστή. Αφού όλα τα παραπάνω έχουν ολοκληρωθεί και το πρόγραμμα έχει ελεγχθεί και αποθηκευθεί στην μνήμη τότε το γραφικό τμήμα της εφαρμογής αναλαμβάνει να εξομοιώσει την λειτουργία του επεξεργαστή, προβάλλοντας τις τιμές που παίρνουν οι καταχωρητές την κάθε στιγμή καθώς και την αλληλουχία των δεδομένων που μεταφέρονται από και προς αυτούς. Τα παραπάνω υλοποιήθηκαν με την χρήση των τεχνολογιών ASP.NET & Silverlight. Η τεχνολογία ASP.NET χρησιμοποιήθηκε για την ανάπτυξη της διαδικτυακής εφαρμογής που στον πυρήνα της ο κώδικας που θα υλοποιεί την προαναφερθείσα λογική είναι γραμμένος σε Visual Basic.net. Η δε τεχνολογία Silverlight έχει χρησιμοποιηθεί για την αναπαράσταση της λειτουργίας του επεξεργαστή. Τα εργαλεία που απαιτούνται για την ανάπτυξη της διαδικτυακής εφαρμογής είναι το Visual Studio 2010 και το Expression Blend 4. Στο πρώτο κεφάλαιο γίνεται μια πιο λεπτομερής περιγραφή της εφαρμογής καθώς και των ιδιαιτεροτήτων που αυτή παρουσιάζει. Στο δεύτερο κεφάλαιο παρουσιάζονται οι τεχνολογίες που χρησιμοποιήθηκαν και τα βασικά χαρακτηριστικά αυτών. Στο τρίτο κεφάλαιο παρουσιάζεται πλήρως το προς εξομοίωση σύστημα και η δομή των επιμέρους δομικών στοιχείων που το απαρτίζουν. Στα δύο τελευταία κεφάλαια παρουσιάζεται η προγραμματιστική λογική που έχει αναπτυχθεί για την υλοποίηση της εξομοίωσης καθώς και η παρουσίαση του συστήματος. Το κεφάλαιο τελειώνει παραθέτοντας μία σειρά προγραμμάτων σαν παραδείγματα που εξομοιώνουν την λειτουργία του συστήματος. Τελειώνοντας θα ήθελα να ευχαριστήσω τον επιβλέποντα της προσπάθειας αυτής Αναπληρωτή Καθηγητή κ. Ευάγγελο Ζυγούρη, η καθοδήγηση του οποίου υπήρξε καθοριστική. Κάτσενος Χρήστος ΠΑΤΡΑ 2012

ii

iii Introduction This special research work was performed in the frame of the requirements of the M.Sc. "Electronics & Computers" in the Department of Physics at the University of Patras. The purpose of this study is to simulate the operation of a processor with an expanded set of instructions through the Internet. In more details, it has been developed an online tool that accepts a sequence of instructions and then do various checks on them, for the correct syntax but also for the instructions parameters, compiles them and stores the code in application s memory. Also provides user with the choice of processor that wants to simulate and according to this choice some more checks are performed. As long as all this has been completed and the program has been tested and stored in memory, the simulation part of the application starts, in order to simulate the operation of the processor, providing registers with the correct value each time and the sequence of data transferred to and from them. These were implemented using the technologies ASP.NET & Silverlight. ASP.NET technology used to develop the web application, where in the core of the application, the code that implements the above logic is written in Visual Basic.net. Silverlight technology has been used to simulate the operation of the processor. The tools required to develop the web application is the Visual Studio 2010 and Expression Blend 4. In the first chapter there is a slightly more detailed description of the application and its particularities. The second chapter presents the technologies used and key characteristics. In the third chapter are described the structure of the individual components that compose the application. In the last two chapters the programming logic that has been developed to implement the simulation and a full presentation of the system, can be found. The chapter ends by giving a series of programs as an example to simulate the operation of the system. Finally I would like to thank the supervisor of this effort Associate Prof. Evangelos Zigouris, whose guidance has been crucial. Katsenos Christos Patra 2012

iv

v Πίνακας Περιεχομένων ΚΕΦΑΛΑΙΟ 1 Περιγραφή συστήματος... 1 1.1 Εισαγωγή... 1 1.2 Δομή Εφαρμογής... 2 1.2.1 Τμήμα Συμβολομεταφραστή... 3 1.2.2 Τμήμα παρουσίασης... 6 1.3 Ιδιαίτερα χαρακτηριστικά εφαρμογής... 8 1.4 Υπάρχουσες εργασίες... 8 ΚΕΦΑΛΑΙΟ 2 Περιγραφή τεχνολογιών και εργαλείων... 11 2.1 Εισαγωγή... 11 2.1.1.NET Framework... 12 2.1.2 ASP.NET... 17 2.1.3 Silverlight... 21 2.1.4 Σύγκριση τεχνολογιών... 23 2.2 Περιγραφή Εργαλείων που χρησιμοποιήθηκαν... 24 2.3 Visual studio... 24 2.4 Expression Blend... 25 ΚΕΦΑΛΑΙΟ 3 Σχεδίαση μικροϋπολογιστικού συστήματος... 27 3.1 Εισαγωγή... 27 3.2 Σχεδίαση μικροϋπολογιστικού συστήματος... 28 3.3 Σχεδίαση κεντρικής μονάδας επεξεργασίας (ΚΜΕ)... 28 3.3.1 Εισαγωγή... 28 3.3.2 H ISA για την ΚΜΕ... 30 3.3.3 O κύκλος κάθε εντολής... 34 3.3.4 O κύκλος διακοπών... 48 3.3.5 Η Αριθμητική/Λογική Μονάδα (ALU)... 50 3.3.6 O δίαυλος δεδομένων... 54 3.3.7 Συνολική οργάνωση του data path... 56 3.3.8 Σχεδίαση της μονάδας ελέγχου... 59 3.3.9 Μονάδα διαχείρισης διακοπών... 78 3.4 Σχεδίαση υποσυστήματος μνήμης... 80 3.5 Σχεδίαση υποσυστήματος εισόδου/εξόδου... 81 3.5.1 Μονάδες εισόδου/εξόδου... 81

vi 3.5.2 Εξωτερικές διακοπές και προτεραιότητα... 83 3.6 Συνολική σχεδίαση Μικροϋπολογιστικού Συστήματος... 84 ΚΕΦΑΛΑΙΟ 4 Οργάνωση και κώδικες συστήματος... 85 4.1 Εισαγωγή... 85 4.2 Τμήμα Συμβολομεταφραστή... 86 4.2.1 Κώδικας υλοποίησης οπτικού τμήματος φυλλομετρητή... 86 4.2.2 Κώδικας υλοποίησης ελέγχων... 88 4.3 Τμήμα εξομοίωσης... 98 4.3.1 Φιλοξενία Silverlight... 98 4.3.2 Συναρτήσεις αλληλεπίδρασης... 100 4.3.3 Συναρτήσεις ειδικού σκοπού... 108 ΚΕΦΑΛΑΙΟ 5 Παρουσίαση Εφαρμογής... 137 5.1 Εισαγωγή... 137 5.2 Ελάχιστες Απαιτήσεις... 138 5.3 Παρουσίαση... 138 5.3.1 Τμήμα Συμβολομεταφραστή... 138 5.3.2 Τμήμα εξομοίωσης... 144 5.4 Παραδείγματα προγραμμάτων προς εξομοίωση... 153 5.4.1 Εξομοίωση Προγράμματος Α... 153 5.4.2 Εξομοίωση Προγράμματος Β... 156 5.4.3 Εξομοίωση Προγράμματος Γ... 158 5.4.4 Εξομοίωση Προγράμματος Δ... 161 Συμπεράσματα Προτάσεις... 163 Συμπεράσματα... 163 Προτάσεις Βελτίωσεις Επέκτασης δυνατοτήτων... 164 Βιβλιογραφία... 165

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

2 Περιγραφή Συστήματος 1.2 Δομή Εφαρμογής Η εφαρμογή αποτελείται από δύο διακριτά αλλά αλληλοσυμπληρούμενα υποσυστήματα. Το ένα είναι επιφορτισμένο με το έργο της συμβολομετάφρασης του προγράμματος και την εγγραφή αυτού στην μνήμη, ενώ το άλλο αναλαμβάνει την εξομοίωση της λειτουργίας του επεξεργαστή. Πέραν των λειτουργικών τους διαφορών τα δύο αυτά τμήματα παρουσιάζουν και διαφορές ως προς την κατασκευή αλλά και την δομή. Αναλυτικότερα το πρώτο έχει υλοποιηθεί με χρήση τεχνολογίας ASP.NET ενώ το δεύτερο με χρήση τεχνολογίας SilverLight. Σχήμα 1.1 Δομή Εφαρμογής. Κάθε εφαρμογή που έχει αναπτυχθεί σε Silverlight, έτσι και στην περίπτωση μας το τμήμα εξομοίωσης, απαιτούν ένα περιβάλλον στο οποίο θα φιλοξενούνται. Στην περίπτωση μας αυτού του είδους την φιλοξενία την υλοποιεί μία κενή σελίδα που έχει αναπτυχτεί σε ASP.NET και στην ουσία το μόνο που κάνει είναι να προβάλει το Silverlight τμήμα. Οι αντίστοιχες εφαρμογές που προορίζονται για εφαρμογές περιβάλλοντος windows δεν απαιτούν τέτοιου είδους ειδικές συνθήκες φιλοξενίας και ονομάζονται WPF.

Κεφάλαιο 1 3 1.2.1 Τμήμα Συμβολομεταφραστή Το τμήμα του συμβολομεταφραστή(compiler) είναι αυτό που συναντά ο χρήστης πρώτα κατά την επίσκεψη του στον δικτυακό τόπο που φιλοξενείται η εφαρμογή και έχει την μορφή που φαίνεται στο παρακάτω σχήμα. Σχήμα 1.2 Αρχική σελίδα εφαρμογής. Η ανάπτυξη του τμήματος αυτού έχει γίνει με την χρήση της ASP.NET ενώ ο κώδικας που τρέχει πίσω έχει αναπτυχθεί με Visual Basic.net.

4 Περιγραφή Συστήματος Όπως σε όλες τις εφαρμογές ASP.NET έτσι και εδώ απαιτείται η ανάπτυξη του τμήματος που προβάλλεται στο πρόγραμμα φυλλομετρητή του επισκέπτη (πχ IE, Mozilla, Chrome, Opera κτλ) και το τμήμα του κώδικα που τρέχει στον εξυπηρετητή (server). Αναλυτικότερα στις διαδικτυακές εφαρμογές υπάρχει ένα τμήμα κώδικα που εξυπηρετείται στον φυλλομετρητή και ένα τμήμα κώδικα που εξυπηρετείται στον server. Έτσι και στην περίπτωση μας ένα τμήμα της λογικής υλοποιείται στον φυλλομετρητή και ένα τμήμα στον server. Στην πλευρά του φυλλομετρητή γίνονται όλοι οι έλεγχοι ως προς τις επιλογές της κατάλληλης προς εξομοίωση CPU ενώ στην πλευρά του server γίνονται όλοι οι έλεγχοι για την ορθότητα των εντολών. Οπότε μόλις ο χρήστης επιλέξει το κουμπί Assemble, στην πλευρά του φυλλομετρητή ελέγχεται αν έχει επιλεγεί κάποια CPU. Αν δεν έχει επιλεγεί τότε εμφανίζεται ένα μήνυμα σφάλματος και σταματά εκεί. Σε αντίθετη περίπτωση, δηλαδή αν έχει επιλεγεί μία CPU, στέλνεται το περιεχόμενο του πεδίου που έχει πληκτρολογηθεί, το προς εξομοίωση πρόγραμμα, στον server προκειμένου να ξεκινήσει μια σειρά από ελέγχους. Στους ελέγχους αυτούς περιλαμβάνονται, η ορθότητα της σύνταξης των εντολών, η υποστήριξη της κάθε εντολής από την επιλεγμένη CPU, το εύρος των τιμών και άλλα. Μόλις όλα τα παραπάνω ολοκληρωθούν με επιτυχία γίνεται η εγγραφή του προγράμματος στην μνήμη. Ειδικότερα αποθηκεύονται τα αντίστοιχα OPCodes των εντολών καθώς και οι παράμετροι αυτών με προκαθορισμένη σειρά, σε μία συστοιχία μεταβλητών που έχει δηλωθεί για την συγκεκριμένη χρήση. Επίσης οι τιμές αυτές εγγράφονται και σε μία δεύτερη συστοιχία μεταβλητών στην σύνοδο(session) στην πλευρά του server(server side). Η δομή του τμήματος του συμβολομεταφραστή της εφαρμογής, όπως την εμφανίζει το Visual Studio 2010, σε επίπεδο κλάσεων είναι η ακόλουθη.

Κεφάλαιο 1 5 Σχήμα 1.3 Class Diagram.

6 Περιγραφή Συστήματος 1.2.2 Τμήμα παρουσίασης Το τμήμα παρουσίασης της εφαρμογής, είναι το τμήμα εκείνο που είναι επιφορτισμένο με την αναπαράσταση της λειτουργία της επιλεγμένης CPU. Η ανάπτυξη του έχει επιτευχθεί με την χρήση της τεχνολογίας Silverlight, ενώ ο κώδικας που τρέχει στον server είναι γραμμένος σε visual basic.net. To τμήμα αυτό παρουσιάζει κάποιες ιδιαιτερότητες σε σχέση με αυτό που έχει παρουσιαστεί στην προηγούμενη ενότητα. Ειδικότερα και τα δύο τμήματα απαιτούν την συγγραφή κάποιων κομματιών κώδικα που υλοποιούν την οπτική απεικόνιση στον φυλλομετρητή του χρήστη. Αυτή η απεικόνιση γίνεται με χρήση της γλώσσας σήμανσης XAML, στην οποία θα αναφερθούμε στην συνέχεια. Όσον αφορά τον κώδικα που τρέχει στον server αυτός είναι πανομοιότυπης λογικής με το τμήμα του κώδικα που τρέχει στον server για τμήμα του συμβολομεταφραστή. Βασική διαφορά του τμήματος παρουσίασης με το τμήμα του συμβολομεταφραστή είναι ότι στο τμήμα παρουσίασης όλη η λογική υλοποιείται στον server, δηλαδή όλος ο κώδικας τρέχει εκεί. Το γραφικό τμήμα αναπροσαρμόζεται ανάλογα με τα γεγονότα (αλληλεπιδράσεις με τον χρήστη, πχ κλικ σε ένα κουμπί), παράγεται κώδικας στον server τύπου XAML, και μεταφέρεται στον φυλλομετρητή για εκτέλεση και προβολή. Το τμήμα της παρουσίασης είναι αυτό που συναντά ο χρήστης μόλις κάνει κλικ στο κουμπί View Register Section του τμήματος της συμβολομετάφρασης αφού πρώτα έχει γίνει Assemble χωρίς την εμφάνιση κάποιου σφάλματος και έχει την μορφή που φαίνεται στο παρακάτω σχήμα. Παρατηρούμε ότι αριστερά συναντάται το τμήμα το τμήμα του Datapath, στο κέντρο το τμήμα της control unit που μπορεί να είναι είτε Ηardwired είτε Microprogrammed και δεξιά το τμήμα με τα κουμπιά ελέγχου.

Κεφάλαιο 1 7 Σχήμα 1.4 Εξομοιωτής. Η XAML είναι μία γλώσσα σήμανση που φέρει πολλές ομοιότητες σε σχέση με την xml. Έχει την δυνατότητα να δημιουργήσει ένα αντικείμενο, αλλά και να περιγράψει ακόμη και ένα γραφικό που διαδραματίζεται σε ένα χρονικό διάστημα. Παραδείγματα χρήσης της XAML για την υλοποίηση διάφορων αντικειμένων φαίνονται στην συνέχεια. <Rectangle Height="24" RadiusY="3" RadiusX="3" Stroke="Black" Width="166" HorizontalAlignment="Left" Margin="157,0,0,157" VerticalAlignment="Bottom" x:name="box_ac"> <Rectangle.Effect> <DropShadowEffect/> </Rectangle.Effect> <Rectangle.Fill> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF1034A5" Offset="0"/> <GradientStop Color="#FF97A6F9" Offset="1"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> Πρόγραμμα 1.1 Υλοποίηση του παραλληλόγραμμου πλαισίου που αναπαριστά τον καταχωρητή AC

8 Περιγραφή Συστήματος <Storyboard x:name="sb_tr_fromdr"> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="data1"> <EasingDoubleKeyFrame KeyTime="0" Value="1"/> <EasingDoubleKeyFrame KeyTime="0:0:1" Value="149"/> <EasingDoubleKeyFrame KeyTime="0:0:2" Value="148"/> <EasingDoubleKeyFrame KeyTime="0:0:3" Value=" 287"/> <EasingDoubleKeyFrame KeyTime="0:0:4" Value=" 289"/> <EasingDoubleKeyFrame KeyTime="0:0:5" Value=" 176"/> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="data1"> <EasingDoubleKeyFrame KeyTime="0" Value="43"/> <EasingDoubleKeyFrame KeyTime="0:0:1" Value="42"/> <EasingDoubleKeyFrame KeyTime="0:0:2" Value="500"/> <EasingDoubleKeyFrame KeyTime="0:0:3" Value="501"/> <EasingDoubleKeyFrame KeyTime="0:0:4" Value="174"/> <EasingDoubleKeyFrame KeyTime="0:0:5" Value="175"/> </DoubleAnimationUsingKeyFrames> </Storyboard> Πρόγραμμα 1.2 Υλοποίηση του γραφικού που αναπαριστά την μεταφορά των δεδομένων από τον καταχωρητή DR στον TR 1.3 Ιδιαίτερα χαρακτηριστικά εφαρμογής Ένα από τα ιδιαίτερα χαρακτηριστικά της εφαρμογής είναι ότι παρέχει την δυνατότητα στον χρήστη να εξομοιώσει την λειτουργία περισσοτέρων της μία CPU. Αναλυτικότερα ανάλογα με την επιλογή που θα κάνει ο χρήστης στην σελίδα που συναντά στο τμήμα συμβολομετάφρασης της εφαρμογής, παρέχετε η δυνατότητα να εξομοιωθεί η λειτουργία της Relative Simple CPU, της Enhanced Relative Simple CPU ή της Enhanced Relative Simple CPU2. Επίσης παρέχει την δυνατότητα εξομοίωσης της λειτουργίας με Control Unit τόσο hardwired όσο και Microprogrammed. Τέλος παρέχει προηγμένες δυνατότητες, όπως η εξομοίωση της λειτουργίας των διακοπών καθώς και η εξομοίωση της λειτουργίας θηρών εισόδου/εξόδου. 1.4 Υπάρχουσες εργασίες Η ανάπτυξη της παρούσας εργασίας έγινε βασιζόμενη στην αρχιτεκτονική της CPU που παρουσιάζεται στην διπλωματική εργασία [7] του κ.εμμανουήλ Γαλετάκη που εκπονήθηκε στα πλαίσια του Διατμηματικού Προγράμματος Μεταπτυχιακών Σπουδών Ειδίκευσης στην Ηλεκτρονική και Επεξεργασία της Πληροφορίας στο Τμήμα Φυσικής του Πανεπιστημίου Πατρών. Η αρχιτεκτονική αλλά και πολύτιμες πληροφορίες αντλήθηκαν από την εν λόγω εργασία καθώς και από την βοήθεια του συντάκτη η οποία υπήρξε καταλυτική στην ανάπτυξη της παρούσας εργασίας.

Κεφάλαιο 1 9 Την παρούσα στιγμή που γίνεται η συγγραφή της συγκεκριμένης εργασίας οι εφαρμογές που υλοποιούν παραπλήσιες λειτουργίες δεν είναι πολλές. Οι εργασίες που ανευρέθησαν και μελετήθηκαν [8] [18] υπήρξαν πηγή έμπνευσης για την ανάπτυξη μιας εφαρμογής που θα υπερκάλυπτε τις υπάρχουσες παρεχόμενες δυνατότητες. Ίσως ο κυριότερος εκπρόσωπος αυτών να είναι η εργασία του καθηγητή John Carpinelli που παρέχει δυνατότητα διαδικτυακής πρόσβασης και απαντάται στον ακόλουθο διαδικτυακό τόπο. http://media.pearsoncmg.com/aw/aw_carpinel_compsys_1/rscpu/web.html Η εν λόγω εργασία εξομοιώνει την λειτουργία της Relative Simple CPU και έχει την εξής μορφή. Σχήμα 1.5 Άποψη εφαρμογής.

10 Περιγραφή Συστήματος Σχήμα 1.6 Τμήμα ακαταχωρητών. Η ουσιαστική διαφοροποίηση των εργασιών αυτών από την εργασία που εκπονήθηκε στα πλαίσια αυτήν της ειδικής επιστημονικής εργασίας είναι το γεγονός ότι σε αυτήν την εργασία παρουσιάζεται με πολύ κατανοητό τρόπο η ροή των δεδομένων στον τμήμα του Data path, κάτι που κάνει πολύ κατανοητή την λογική του προγράμματος που έχει συγγραφεί προς εξομοίωση.

ΚΕΦΑΛΑΙΟ 2 Περιγραφή τεχνολογιών και εργαλείων 2.1 Εισαγωγή Σε αυτό το κεφάλαιο εξετάζουμε τις τεχνολογίες που έχουν χρησιμοποιηθεί για την ανάπτυξη της εφαρμογής. Γίνεται αναφορά στα γενικότερα χαρακτηριστικά αυτών καθώς και στις καινοτομίες που αυτές παρουσιάζουν. Επίσης γίνεται και αναφορά στα εργαλεία ανάπτυξης που χρησιμοποιήθηκαν προκειμένου να υλοποιηθεί η εφαρμογή. Το κεφάλαιο ξεκινάει με μια επισκόπηση στις τεχνολογίες και καταλήγει με μια παρουσίαση των εργαλείων ανάπτυξης.

12 Περιγραφή Τεχνολογιών και εργαλείων 2.1.1.NET Framework Το.NET Framework (προφέρεται dot net) είναι ένα πλαίσιο λογισμικού που τρέχει κυρίως σε Microsoft Windows. Περιλαμβάνει ένα μεγάλο αριθμό βιβλιοθηκών και υποστηρίζει πολλές γλώσσες προγραμματισμού, το οποίο επιτρέπει τη διαλειτουργικότητα των γλωσσών (κάθε γλώσσα μπορεί να χρησιμοποιήσει κώδικα γραμμένο και σε άλλες γλώσσες προγραμματισμού). Προγράμματα που έχουν γραφτεί για.net Framework εκτελούνται σε ένα περιβάλλον λογισμικού, γνωστό ως Common Language Runtime (CLR), μια εφαρμογή εικονικής μηχανής που παρέχει σημαντικές υπηρεσίες όπως η ασφάλεια, η διαχείριση της μνήμης καθώς και ο χειρισμός των εξαιρέσεων. Οι κλάσεις των βιβλιοθηκών σε συνεργασία με το λογισμικό CLR απαρτίζουν το.net Framework. Οι βασικές κλάσεις βιβλιοθηκών(base Class Library) του.net Framework παρέχουν διεπαφή χρήστη, πρόσβαση σε δεδομένα, συνδεσιμότητα με βάσεις δεδομένων, κρυπτογραφία, ανάπτυξη διαδικτυακών εφαρμογών, αριθμητικούς αλγορίθμους και δικτυακή επικοινωνία. Παρέχεται η δυνατότητα στους προγραμματιστές να παράγουν λογισμικό συνδυάζοντας τον δικό τους κώδικα με το.net Framework και άλλες βιβλιοθήκες. Υποδομή κοινής γλώσσας Common Language Infrastructure (CLI) Ο σκοπός της Υποδομήs κοινής γλώσσας (CLI) είναι να παρέχει μια πλατφόρμα ουδέτερης γλώσσας για την ανάπτυξη και την εκτέλεση εφαρμογών, συμπεριλαμβανομένων των λειτουργιών για το χειρισμό εξαιρέσεων, την συλλογή απορριμμάτων, την ασφάλεια και τη διαλειτουργικότητα. Με την υλοποίηση των θεμελιωδών αρχών του.net Framework στο πεδίο εφαρμογής του CLI, αυτή η λειτουργία δεν θα είναι συνδεδεμένη με μία μόνο γλώσσα, αλλά θα είναι διαθέσιμη σε πολλές γλώσσες που υποστηρίζονται από το NET Framework. Οι γλώσσες που υποστηρίζονται είναι οι Visual Basic, C#, C++ και J#. Η υλοποίηση του CLI της Microsoft ονομάζεται Common Language Runtime, ή CLR.

Κεφάλαιο 2 13 Σχήμα 2.1 Υποδομή κοινής γλώσσας. Ασφάλεια Το.NET έχει το δικό του μηχανισμό ασφαλείας. O μηχανισμός αυτός είναι o Κωδικός Ασφαλείας πρόσβασης (CAS). O Κωδικός Ασφαλείας πρόσβασης βασίζεται σε αποδεικτικά στοιχεία που σχετίζονται με μια συγκεκριμένη συνέλευση (assembly). Συνήθως τα στοιχεία είναι η πηγή της συνέλευσης (αν είναι εγκατεστημένο στον τοπικό υπολογιστή ή έχει κατέβει από το Internet ή intranet). O Κωδικός Ασφαλείας πρόσβασης χρησιμοποιεί στοιχεία για να καθορίσει τα δικαιώματα που χορηγούνται στον κώδικα. Αν κάθε συνέλευση δεν πάρει την άδεια μιας εξαίρεσης ασφαλείας, ενεργοποιείται. Κλάσεις Βιβλιοθηκών Class library Το.NET Framework περιλαμβάνει ένα σύνολο τυπικών κλάσεων βιβλιοθηκών. Οι κλάσεις βιβλιοθηκών είναι οργανωμένες σε μια ιεραρχία ονομάτων. Τα περισσότερα από τα ενσωματωμένα ΑΡΙs είναι μέρος του Συστήματος. Αυτές οι κλάσεις βιβλιοθηκών υλοποιούν μεταξύ άλλων έναν πολύ μεγάλο αριθμό κοινών λειτουργιών, όπως η ανάγνωση και το γράψιμο αρχείου, η γραφική απόδοση, η αλληλεπίδραση βάσεων

14 Περιγραφή Τεχνολογιών και εργαλείων δεδομένων και η χειραγώγηση XML εγγράφων. Οι κλάσεις βιβλιοθηκών του.net είναι διαθέσιμες σε όλες τις συμβατές γλώσσες (CLI). Η.NET κλάσεις βιβλιοθηκών χωρίζονται σε δύο μέρη: τη Base Class Library και το Framework Class Library. Σχήμα 2.2 Κλάσεις Βιβλιοθηκών. Η Base Class Library (BCL) περιλαμβάνει ένα μικρό υποσύνολο από το σύνολο των κλάσεων βιβλιοθηκών και είναι το βασικό σύνολο των κλάσεων που χρησιμεύουν ως το βασικό API του Common Language Runtime. Οι κλάσεις στο mscorlib.dll και μερικές κλάσεις από τα System.dll και System.core.dll θεωρούνται μέρος της BCL. Οι κλάσεις BCL είναι διαθέσιμες τόσο στο.net Framework καθώς και σε εναλλακτικές εφαρμογές, συμπεριλαμβανομένων των NET Compact Framework, Microsoft Silverlight και Mono. Η Framework Class Library (FCL) είναι ένα υπερσύνολο των κατηγοριών BCL και αναφέρεται στο σύνολο των κλάσεων βιβλιοθηκών που ενσωματώνονται στο.net Framework. Περιλαμβάνει ένα εκτεταμένο σύνολο βιβλιοθηκών, συμπεριλαμβανομένων των Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation μεταξύ άλλων. Η FCL είναι πολύ μεγαλύτερη σε έκταση από τις κοινές βιβλιοθήκες για γλώσσες όπως η C + +, και συγκρίσιμη προς το πεδίο εφαρμογής με τις πρότυπες βιβλιοθήκες της Java.

Κεφάλαιο 2 15 Διαχείριση Μνήμης Το.NET Framework CLR απαλλάσσει τον προγραμματιστή από το βάρος της διαχείρισης μνήμης (κατανομή και απελευθέρωση). Χειρίζεται το ίδιο τη διαχείριση της μνήμης, με την ανίχνευση πότε η μνήμη μπορεί με ασφάλεια να απελευθερωθεί. Η μνήμη κατανέμεται στα διάφορα αντικείμενα του.net από τη διαχείριση του σωρού, μια δεξαμενή μνήμης που διαχειρίζεται η CLR. Εφ 'όσον υπάρχει μια αναφορά σε ένα αντικείμενο, που θα μπορούσε να είναι είτε μια άμεση αναφορά σε ένα αντικείμενο ή μια γραφική παράσταση μέσω των αντικειμένων, το αντικείμενο θεωρείται ότι είναι σε χρήση. Όταν δεν υπάρχει καμία αναφορά σε ένα αντικείμενο, και δεν μπορεί να προσπελαστεί ή να χρησιμοποιηθεί, τότε γίνεται σκουπίδια, το.net Framework περιλαμβάνει ένα συλλέκτη σκουπιδιών που τρέχει περιοδικά, σε ένα ξεχωριστό νήμα (thread) από το νήμα της εφαρμογής, που απαριθμεί όλα τα άχρηστα αντικείμενα και επιστρέφει την μνήμη που τους είχε κατανεμηθεί. Το GC τρέχει μόνο όταν ένα ορισμένο ποσό της μνήμης έχει χρησιμοποιηθεί ή δεν υπάρχει αρκετή μνήμη στο σύστημα. Δεδομένου ότι δεν είναι σαφώς καθορισμένο το πότε έχει επιτύχει τις προϋποθέσεις για να διεκδικήσει εκ νέου τη μνήμη, τα τρεξίματα του GC είναι μη ντετερμινιστικά. Κάθε.NET εφαρμογή έχει ένα σύνολο ριζών, οι οποίες είναι δείκτες σε αντικείμενα σχετικά με τη διαχείριση των σωρού (διαχειριζόμενα αντικείμενα). Αυτά περιλαμβάνουν αναφορές σε στατικά αντικείμενα και αντικείμενα οριζόμενα ως τοπικές μεταβλητές, καθώς και αντικείμενα που αναφέρονται σε καταχωρητές της CPU. Όταν το GC τρέχει, κάνει παύση στην εφαρμογή, και για κάθε αντικείμενο που αναφέρεται στην ρίζα αυτής, απαριθμεί αναδρομικά όλα τα αντικείμενα που είναι προσβάσιμα και τα χαρακτηρίζει ως προσβάσιμα. Όλα τα αντικείμενα που δεν χαρακτηρίζονται ως προσβάσιμα είναι τα σκουπίδια. Αυτή είναι η φάση της σήμανσης. H μνήμη που κατέχετε από τα σκουπίδια, θεωρείται ελεύθερος χώρος. Ωστόσο, αυτό αφήνει κομμάτια ελεύθερου χώρου μεταξύ των αντικειμένων που αρχικά ήταν συνεχόμενα. Τα αντικείμενα στη συνέχεια συμπιέζονται μαζί για να κάνουν χρήση συνεχόμενης μνήμης. Οποιαδήποτε αναφορά σε ένα αντικείμενο αναιρείται από τη μετακίνηση του αντικειμένου και στην συνέχεια ενημερώνεται από τον GC ώστε να αντικατοπτρίζει τη νέα θέση. Η εφαρμογή συνεχίζει μόλις η συλλογή των απορριμμάτων έχει τελειώσει. Το GC που χρησιμοποιούνται από to.net Framework είναι στην πραγματικότητα γενεαλογικό. Στα αντικείμενα έχει ανατεθεί μια γενιά. Αυτά που δημιουργήθηκαν πρόσφατα ανήκουν στην γενιά 0. Τα αντικείμενα που επιβιώνουν μια συλλογή σκουπιδιών μαρκάρονται ως γενιάς 1, και τα γενιάς 1 αντικείμενα που επιβιώνουν άλλη συλλογή γενιάς 2. Το.NET Framework χρησιμοποιεί έως γενιά 2 αντικείμενα. Υψηλότερης γενιάς αντικείμενα είναι σκουπίδια που συλλέγονται λιγότερο συχνά από ότι αντικείμενα χαμηλότερης γενιά. Αυτό βοηθά στην αύξηση της αποτελεσματικότητας της συλλογής απορριμμάτων, καθώς τα μεγαλύτερης γενιάς αντικείμενα τείνουν να έχουν μεγαλύτερη διάρκεια ζωής από τα νεότερα αντικείμενα. Έτσι, με την άρση των

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

Κεφάλαιο 2 17 2.1.2 ASP.NET Η ASP.NET τεχνολογία είναι μια scripting τεχνολογία που εκτελείται στην πλευρά του server και επιτρέπει σε scripts (ενσωματωμένα σε ιστοσελίδες) να εκτελούνται από ένα διακομιστή Internet. Ειδικότερα είναι ένα πλαίσιο λογισμικού για διαδικτυακές εφαρμογές που έχει αναπτυχθεί και διατίθενται στο εμπόριο από τη Microsoft για να επιτρέπει στους προγραμματιστές την δημιουργία δυναμικών ιστοσελίδων (Web sites), διαδικτυακών εφαρμογών (Web applications) και υπηρεσίες Web (Web services). Κυκλοφόρησε για πρώτη φορά τον Ιανουάριο του 2002 με την έκδοση 1.0 του.net Framework, και είναι ο διάδοχος της Active Server Pages (ASP) τεχνολογίας της Microsoft. Η ASP.NET είναι ενσωματωμένη στο Common Language Runtime (CLR), επιτρέποντας στους προγραμματιστές να γράφουν κώδικα ASP.NET χρησιμοποιώντας οποιαδήποτε υποστηριζόμενη.net γλώσσα. Ιστορία Μετά την κυκλοφορία του Internet Information Services 4.0, το 1997, η Microsoft άρχισε να ερευνά τις δυνατότητες για ένα νέο μοντέλο διαδικτυακών εφαρμογών που θα λύσει κοινά παράπονα σχετικά με την ASP, ιδίως σε σχέση με τον διαχωρισμό της παρουσίασης και του περιεχομένου προκειμένου να είναι σε θέση να γραφεί "καθαρόs" κώδικα. O Mark Anders, ένας διευθυντής στην ομάδα toy IIS, και o Scott Guthrie, ο οποίος είχε προσχωρήσει στη Microsoft το 1997, μετά την αποφοίτησή του από το Πανεπιστήμιο Duke, ήταν επιφορτισμένοι με τον καθορισμό τoυ μοντέλου. Ο αρχικός σχεδιασμός αναπτύχθηκε κατά τη διάρκεια των δύο μηνών από τοus Anders και Guthrie, και o Guthrie κωδικοποιεί τα αρχικά πρωτότυπα κατά τη διάρκεια του φθινοπώρου του 1997. Το αρχικό πρωτότυπο ονομάζεται "XSP" και είχε γίνει με τη χρήση Java, αλλά σύντομα αποφασίστηκε να χτιστεί η νέα πλατφόρμα πάνω από το Common Language Runtime (CLR), δεδομένου ότι προσφέρει ένα αντικειμενοστραφές περιβάλλον προγραμματισμού, με μηχανισμό συλλογήs σκουπιδιών και άλλα χαρακτηριστικά που θεωρήθηκαν ως επιθυμητά χαρακτηριστικά. O Guthrie περιγράφει την απόφαση αυτή ως "τεράστιο ρίσκο", καθώς η επιτυχία της νέας πλατφόρμας ανάπτυξης διαδικτυακών εφαρμογών θα συνδέεται με την επιτυχία της CLR, η οποία, όπως και η XSP, ήταν ακόμα στα πρώτα στάδια της ανάπτυξης. Με την κίνηση προς το Common Language Runtime, η XSP αναπτύχθηκε εκ νέου σε C # (γνωστό εσωτερικά ως "Project Cool", αλλά κρατήθηκε μυστικό από το κοινό), και το όνομα άλλαξε σε ASP+. Από αυτό το σημείο η νέα πλατφόρμα θεωρήθηκε ως ο

18 Περιγραφή Τεχνολογιών και εργαλείων διάδοχος του Active Server Pages, και η πρόθεση ήταν να παρέχει έναν εύκολο δρόμο μετάβασης για αυτούς που ανέπτυσσαν ήδη σε ASP. O Mark Anders παρουσίασε την πρώτη ASP+ στο συνέδριο ASP Connections στο Φοίνιξ της Αριζόνα στις 2 Μαΐου, 2000. Οι παρουσιάσεις στο ευρύ κοινό και η αρχική έκδοση beta του ASP+ (και το υπόλοιπο του. NET Framework) ήρθε στο Professional Developers Conference του 2000, στις 11 Ιουλίου 2000 στο Ορλάντο, Φλόριντα. Κατά τη διάρκεια της παρουσίασης της κεντρική ομιλία του Bill Gates, η Fujitsu παρουσίασε ASP+ να χρησιμοποιείται σε συνδυασμό με COBOL, και υποστήριξη για μια ποικιλία άλλων γλωσσών, συμπεριλαμβανομένων των νέων Visual της Microsoft Basic.NET και C#, καθώς επίσης και Python και Perl μέσω της διαλειτουργικότητας. Μόλις η ονοματολογία ".NET" αποφασίστηκε κατά το δεύτερο εξάμηνο του 2000, αποφασίστηκε η μετονομασία της ASP+ σε ASP.NET. Μετά από τέσσερα χρόνια ανάπτυξης, καθώς και μια σειρά από εκδόσεις beta, το 2000 και το 2001, η ASP.NET 1.0 κυκλοφόρησε στις 5 Ιανουαρίου 2002 ως μέρος της έκδοσης 1.0 του.net Framework. Ακόμη και πριν από την κυκλοφορία, δεκάδες βιβλία είχαν γραφτεί για ASP.NET, και η Microsoft την προώθησε σε μεγάλο βαθμό ως μέρος της πλατφόρμας της για τις υπηρεσίες Web. H ανάπτυξη συνεχίστηκε με εντατικούς ρυθμούς, με την έκδοση 1.1 που κυκλοφόρησε στις 24 Απριλίου 2003 ως μέρος του Windows Server 2003. Αυτή η έκδοση εστιάζεται στη βελτίωση της υποστήριξη της ASP.NET για κινητές συσκευές. Χαρακτηριστικά Σελίδες Οι ASP.NET ιστοσελίδες, γνωστές επισήμως ως φόρμες Web, είναι η κύρια δομική μονάδα για την ανάπτυξη εφαρμογών. Οι φόρμες Web περιέχονται σε αρχεία με κατάληξη ".aspx". Αυτά τα αρχεία περιέχουν συνήθως στατικές (X)HTML σημάνσεις, καθώς και σήμανση για server side Controls, όπου οι προγραμματιστές τοποθετούν όλο το απαιτούμενο στατικό και δυναμικό περιεχόμενο για την ιστοσελίδα. Επιπλέον, δυναμικόs κώδικας που τρέχει στον server μπορεί να τοποθετηθεί σε μια σελίδα μέσα σε ένα μπλοκ <% δυναμικόs κώδικας %>, το οποίο είναι παρόμοιο με άλλες τεχνολογίες ανάπτυξης Ιστού, όπως η PHP, JSP και ASP. Με τo ASP.NET Framework 2.0, η Microsoft εισήγαγε ένα νέο μοντέλο κώδικα από πίσω το οποίο επιτρέπει σε στατικό κείμενο να παραμείνει στην.aspx σελίδα, ενώ δυναμικόs κώδικας παραμένει σε ένα.aspx.vb ή.aspx.cs ή.aspx.fs αρχείο (ανάλογα με τη γλώσσα προγραμματισμού που χρησιμοποιείται).

Κεφάλαιο 2 19 Προσαρμοσμένα στοιχεία ελέγχου Οι προγραμματιστές μπορούν επίσης να οικοδομήσουμε προσαρμοσμένα στοιχεία ελέγχου για εφαρμογές ASP.NET, όπου όλος ο κώδικας τους συγκεντρώνονται σε μια βιβλιοθήκη δυναμικής σύνδεσης (DLL). Τέτοια προσαρμοσμένα στοιχεία ελέγχου μπορούν να χρησιμοποιηθούν σε πολλαπλές εφαρμογές Web. Κατάσταση Συνόδου H σύνοδος στην πλευρά του server(server side) αποτελείται από μια συλλογή από μεταβλητές χρήστη που είναι ανθεκτικές κατά τη διάρκεια της συνόδου του χρήστη. Αυτές οι μεταβλητές, που προσεγγίζονται με τη συλλογή Session, είναι μοναδικές για κάθε περίπτωση συνόδου. Οι μεταβλητές μπορεί να οριστούν να καταστραφούν αυτόματα μετά από προκαθορισμένο χρόνο αδράνειας ακόμη και αν η συνεδρίαση δεν τελειώνει. H σύνοδος στην πλευρά του χρήστη (Client side) διατηρείται είτε από ένα cookie ή με την κωδικοποίηση του ID της συνόδου στο URL. H ASP.NET υποστηρίζει τρεις καταστάσεις διατήρησης server side μεταβλητών συνόδου: In Process λειτουργία Οι μεταβλητές διατηρούνται στο πλαίσιο της διεργασίας ASP.NET. Αυτός είναι ο πιο γρήγορος τρόπος. Ωστόσο, σε αυτή τη λειτουργία οι μεταβλητές καταστρέφονται όταν η διαδικασία ASP.NET ανακυκλώνεται ή αν κλείσει. ASP State λειτουργία H ASP.NET εκτελεί μια ξεχωριστή υπηρεσία των Windows που διατηρεί τις μεταβλητές κατάστασης. Επειδή η διαχείριση της κατάστασης που συμβαίνει έξω από τη διαδικασία ASP.NET, είναι πιο αργή από ό, τι κατά τη In Process λειτουργία. Αυτή η λειτουργία επιτρέπει σε μια εφαρμογή του ASP.NET να γίνεται ισορροπημένα και να διαμοιράζεται σε πολλούς διακομιστές. SqlServer λειτουργία Οι μεταβλητές αποθηκεύονται σε μια βάση δεδομένων, επιτρέποντας τους να συνεχίζουν να υφίστανται ακόμη και μετά την παύση λειτουργίας της ASP.NET διαδικασίας. Το κύριο πλεονέκτημα αυτού του τρόπου είναι ότι επιτρέπει στην εφαρμογή την εξισορρόπηση του φορτίου σε ένα σύμπλεγμα διακομιστών και την ανταλλαγή συνόδων μεταξύ των διακομιστών. Αυτή είναι η πιο αργή μέθοδος διαχείρισης συνόδου της ASP.NET.

20 Περιγραφή Τεχνολογιών και εργαλείων Επίδοση H ASP.NET στοχεύει στα πλεονεκτήματα απόδοσης της σε σχέση με άλλες τεχνολογίες (συμπεριλαμβανομένων των Classic ASP), κυρίως με την κατάρτιση του κώδικα διακομιστή σε ένα ή περισσότερα αρχεία DLL στο διακομιστή Web. Αυτή η συλλογή γίνεται αυτόματα την πρώτη φορά που ζητείται μια σελίδα. Αυτή η δυνατότητα παρέχει την ευκολία της ανάπτυξης που προσφέρονται σε scripting γλώσσες, με τα πλεονεκτήματα επιδόσεων ενός καταρτισμένου(compiled) κώδικα. Ωστόσο μπορεί να προκαλέσει μια αξιοπρόσεχτη, αλλά μικρή καθυστέρηση στο χρήστη Web, όταν είναι η πρώτη φορά που ζητείται η σελίδα από το διακομιστή Web ή η σελίδα που ζητήθηκε έχει ενημερωθεί. Την πρώτη φορά που ένας πελάτης ζητά μια σελίδα, το.net Framework αναλύει και συνθέτει το αρχείο(α) και τέλος στέλνει την απάντηση. Οι επόμενες αιτήσεις εξυπηρετούνται από τα αρχεία DLL. Οι προγραμματιστές μπορούν επίσης να επιλέξουν να προ συλλέξουν (pre compile) τα "codebehind" αρχεία τους πριν από την αποστολή, με την χρήση του MS Visual Studio, εξαλείφοντας την ανάγκη για την κατάρτιση just in time σε ένα περιβάλλον παραγωγής. Αυτό εξαλείφει την ανάγκη της ύπαρξης του πηγαίου κώδικα στο διακομιστή Web.

Κεφάλαιο 2 21 2.1.3 Silverlight Το Microsoft Silverlight είναι ένα πλαίσιο λογισμικού για τη σύνταξη και τη λειτουργία πλούσιων εφαρμογών Internet, με χαρακτηριστικά και σκοπούς παρόμοια με εκείνα του Adobe Flash. Το περιβάλλον χρόνου εκτέλεσης για το Silverlight είναι διαθέσιμο ως plug in για προγράμματα περιήγησης στο Web που εκτελούνται στα Microsoft Windows και Mac OS X. Αν και οι προηγούμενες εκδόσεις του Silverlight επικεντρώθηκαν σε streaming media, οι τρέχουσες εκδόσεις υποστηρίζουν πολυμέσα, γραφικά και κινούμενα σχέδια, και παρέχουν στους προγραμματιστές υποστήριξη για CLI γλώσσες και εργαλεία ανάπτυξης. Το Silverlight είναι επίσης μία από τις δύο πλατφόρμες ανάπτυξης εφαρμογών για Windows Phone Κατά τη διάρκεια των περίπου πέντε χρόνων η Microsoft έχει κυκλοφορήσει πέντε εκδόσεις: Η πρώτη έκδοση κυκλοφόρησε το 2007. Η τελευταία έκδοση κυκλοφόρησε στις 9 Δεκεμβρίου 2011. Είναι συμβατή με πολλαπλά προγράμματα περιήγησης στο Web που χρησιμοποιούνται στα Microsoft Windows και Mac OS X λειτουργικά συστήματα. Μια δωρεάν εφαρμογή λογισμικού που ονομάζεται Moonlight, που αναπτύχθηκε από τη Novell, σε συνεργασία με τη Microsoft, είναι διαθέσιμη για να φέρει την λειτουργικότητα του Silverlight 1 και 2 σε Linux, FreeBSD και άλλες πλατφόρμες ανοιχτού κώδικα, αν και μερικές διανομές Linux δεν το περιλαμβάνουν. Overview Το Silverlight παρέχει ένα σύστημα διατήρησης και λειτουργίας γραφικών παρόμοιο με το Windows Presentation Foundation (WPF), και ενσωματώνει πολυμέσα, γραφικά, κινούμενα σχέδια και αλληλεπίδραση σε ένα ενιαίο περιβάλλον εκτέλεσης. Στις Silverlight εφαρμογές, οι διεπαφές χρήστη έχουν δηλωθεί σε Extensible Application Markup Language (XAML) και προγραμματιστεί χρησιμοποιώντας ένα υποσύνολο του.net Framework. Η XAML μπορεί να χρησιμοποιηθεί για τη δημιουργία γραφικών και κινούμενων σχεδίων. Το Silverlight μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία των Windows Sidebar Gadgets για τα Windows Vista. Υποστηρίζει H.264 βίντεο, Advanced Audio Coding, Windows Media Video (WMV), Windows Media Audio (WMA) και MPEG Layer III (MP3) σε όλα τα υποστηριζόμενα προγράμματα περιήγησης, χωρίς να απαιτείται το Windows Media Player ή το Windows Media browser plug ins. Επειδή το Windows Media Video 9 είναι μια υλοποίηση της Κοινωνίας των Μηχανικών του Κινηματογράφου και Τηλεόρασης (SMPTE) VC 1, το Silverlight υποστηρίζει, επίσης, VC 1 βίντεο. Σύμφωνα με την άδεια χρήσης τελικού χρήστη VC 1 και H.264 έχουν άδεια μόνο για την "προσωπική και μη εμπορική χρήση από τον καταναλωτή". Το Silverlight έχει τη δυνατότητα να φορτώσει δυναμικά

22 Περιγραφή Τεχνολογιών και εργαλείων περιεχόμενο Extensible Markup Language (XML) που μπορεί να χειριστεί μέσω ενός Document Object Model (DOM), μια τεχνική που είναι συνεπής με τεχνικές Ajax. Με την έκδοση 2, ο προγραμματισμός μπορεί να υλοποιηθεί σε οποιαδήποτε.net γλώσσα, συμπεριλαμβανομένων και ορισμένων παραγώγων των δυναμικών γλωσσών προγραμματισμού όπως IronRuby και IronPython. Ως εκ τούτου, οποιαδήποτε εργαλεία ανάπτυξης που λειτουργήσουν με το Silverlight μπορούν να χρησιμοποιηθούν, υπό την προϋπόθεση ότι έχουν πρόσβαση στο Silverlight CoreCLR για τη φιλοξενία της εφαρμογής, αντί για το.net Framework CLR. Η Microsoft έχει αναπτύξει το Microsoft Expression Blend ως συνοδευτικό εργαλείο του Visual Studio για το σχεδιασμό Silverlight εφαρμογών. Το Visual Studio επίσης μπορεί να χρησιμοποιηθεί και αυτόνομα για την ανάπτυξη και τον εντοπισμό σφαλμάτων σε Silverlight εφαρμογές. Για την δημιουργία Silverlight εφαρμογών με χρήση του Visual Studio απαιτείται το Silverlight Tools για το Visual Studio. Ένα στοιχείο ελέγχου Silverlight (control) είναι ένα αρχείο μορφής ZIP με κατάληξη.xap που περιέχει μια λίστα από ένα ή περισσότερα.net dlls μαζί με το αρχείο AppManifest.XAML που περιέχει την προαναφερόμενη λίστα μαζί με το σημείο εισόδου (class και assembly). Μπορεί να φιλοξενείται ενσωματωθεί σε οποιοδήποτε αρχείο HTML χρησιμοποιώντας μια ετικέτα αντικειμένου, για παράδειγμα: : <object data="data:application/x silverlight 2," type="application/x silverlight 2" width="100%" height="100%"><param name="source" value="mysilverlightcontrol.xap"/></object> Ένα Silverlight project περιέχει το Silverlight.js και CreateSilverlight.js, αρχεία που χρησιμοποιούνται για την αρχικοποίηση του Silverlight plug in για χρήση σε σελίδες HTML, ένα αρχείο XAML για την διεπαφή χρήστη (User Interface), και αρχεία για την εφαρμογή κώδικα. Οι Silverlight εφαρμογές συμβολομεταφράζονται με τρόπο παραπλήσιων των εφαρμογών ASP.NET.

Κεφάλαιο 2 23 2.1.4 Σύγκριση τεχνολογιών Ως εναλλακτικές τεχνολογίες, με παραπλήσιες δυνατότητες, αυτή την στιγμή διατίθενται η Flash και η Java. Η τεχνολογία Flash παρέχει δυνατότητα για ανάπτυξη γραφικών με καθορισμένο χρονικό πλαίσιο εκτέλεσης και έλεγχο γεγονότων. Οι δυνατότητες της για εντυπωσιακά αποτελέσματα γραφικών είναι θεωρητικά ανεξάντλητες. Σε αντίθεση η JAVA δεν παρέχει ιδιαίτερες δυνατότητες για εντυπωσιακά γραφικά αλλά είναι συμβατή με όλα τα λειτουργικά συστήματα. Παρά τα αντίστοιχα πλεονεκτήματα επιλέχθηκε τελικά η τεχνολογία Silverlight για τους εξής λόγους: Παρέχει την δυνατότητα για πολύ εντυπωσιακά γραφικά Είναι εξαιρετικά ελαφριά άρα και πολύ γρήγορη στην εκτέλεση της, λόγω του ότι τα δεδομένα που αποστέλλονται από τον server προς τον φυλλομετρητή είναι σε μορφή xml Αποτελεί μία πολύ σύγχρονη τεχνολογία που είναι η αιχμή του δόρατος για ανάπτυξη εφαρμογών στα μελλοντικά WINDOWS 8 αλλά και στα Windows PHONE. Επιτρέπει εξαιρετικά ακριβή χειρισμό των γεγονότων Υποστηρίζει CLI γλώσσες (άρα μπορεί να αναπτυχθεί εφαρμογή σε όλες τις γλώσσες του.net Framework ακόμη και συνεργασία) Κάνει πρωτοποριακό διαχωρισμό του ρόλου του web designer και του web developer, καθώς παρέχει την δυνατότητα για παράλληλη και ανεξάρτητη ανάπτυξη του σχεδιαστικό τμήματος και του προγραμματιστικού.

24 Περιγραφή Τεχνολογιών και εργαλείων 2.2 Περιγραφή Εργαλείων που χρησιμοποιήθηκαν Για την ανάπτυξη της εφαρμογής απαιτήθηκε τόσο η χρήση του Visual studio όσο και του Expression Blend ως εργαλεία ανάπτυξης. 2.3 Visual studio Το Microsoft Visual Studio 2010 Professional αποτελεί ένα ολοκληρωμένο περιβάλλον που απλοποιεί τη δημιουργία και ανάπτυξη εφαρμογών καθώς και τον εντοπισμό σφαλμάτων. Οι εργασίες κινούνται στο πλαίσιο ενός εξατομικευμένου περιβάλλοντος, με στόχο έναν αυξανόμενο αριθμό πλατφορμών, συμπεριλαμβανομένων των Microsoft SharePoint και τις εφαρμογές cloud και την επιτάχυνση της διαδικασίας κωδικοποίησης. Παρέχει, επίσης, ολοκληρωμένη υποστήριξη για Test First Ανάπτυξη και νέα εργαλεία εντοπισμού σφαλμάτων που επιτρέπουν τον εντοπισμό και τη διόρθωση αυτών γρήγορα και εύκολα για την εξασφάλιση υψηλής ποιότητας λύσεων. Σχήμα 2.3 Visual Studio. Τα κυριότερα πλεονεκτήματα είναι: η γρήγορη ερμηνεία κώδικα η δημιουργία πλούσιων διεπαφών χρήστη(ui) παρέχει ολοκληρωμένη υποστήριξη παράλληλου προγραμματισμού συνεργάζεται άψογα με τις υπάρχουσες τεχνολογίες επιτρέπει την τεχνική Test Πρώτα πριν την ανάπτυξη

Κεφάλαιο 2 25 χρησιμοποιώντας ετικέτες στα σημεία διακοπών κάνει ευκολότερη την συμβολομετάφραση Απαιτήσεις εφαρμογής Το Visual Studio 2010 μπορεί να εγκατασταθεί στα παρακάτω λειτουργικά συστήματα: Windows XP (x86) with Service Pack 3 Windows Vista (x86 & x64) with Service Pack 2 Windows 7 (x86 & x64) Windows Server 2003 (x86 & x64) with Service Pack 2 Windows Server 2003 R2 (x86 & x64) Windows Server 2008 (x86 & x64) with Service Pack 2 Windows Server 2008 R2 (x64) Υποστηριζόμενες αρχιτεκτονικές: 32 Bit (x86) 64 Bit (x64) Απαιτήσεις συστήματος: Επεξεργαστής 1.6 GHz ή ταχύτερος 1 GB (32 Bit) ή 2 GB (64 Bit) RAM (512 MB παραπάνω αν τρέχει σε virtual machine) 3GB ελεύθερο χώρο στο δίσκο 5400 RPM σκληρό δίσκο DirectX 9 συμβατή κάρτα γραφικών με ανάλυση 1024 x 768 ή υψηλότερη DVD ROM Drive 2.4 Expression Blend Το expression blend αποτελεί το βασικό εργαλείο ανάπτυξης για εφαρμογές Silverlight. Λειτουργεί συμπληρωματικά με ο visual studio καθώς παρέχει δυνατότητες επεξεργασία κώδικα αλλά ο κύριος προσανατολισμός του είναι στην διαχείριση και ανάπτυξη των γραφικών χρόνου της εφαρμογής. Με την επιλογή ενός μόνο κουμπιού μεταβάλει την διάταξη του παραθύρου του και τις δυνατότητες που αυτό παρέχει από εργαλείο συγγραφής κώδικα σε εργαλείο σχεδίασης διεπαφής. Επίσης παρέχει και δυνατότητες γραφιστική επεξεργασίας των αντικειμένων της εφαρμογής προκειμένου να προσδώσει ένα ομορφότερο οπτικό αποτέλεσμα στην εφαρμογή.

26 Περιγραφή Τεχνολογιών και εργαλείων Σχήμα 2.4 Expression Blend. Τέλος το Expression Blend αποτελεί τμήμα της σουίτας εργαλείων Expression Studio η οποία περιέχει και άλλα προγράμματα για την ανάπτυξη εφαρμογών. Με το σύνολο αυτών των προγραμμάτων καθιστάτε δυνατός ο διαχωρισμών της σχεδιαστικής ανάπτυξης από την ανάπτυξη της προγραμματιστικής λογικής. Δηλαδή μπορεί ο γραφίστας να αναπτύσσει παράλληλα με τον προγραμματιστή σε δύο διαφορετικά προγράμματα.

ΚΕΦΑΛΑΙΟ 3 Σχεδίαση μικροϋπολογιστικού συστήματος 3.1 Εισαγωγή Σε αυτό το κεφάλαιο εξετάζουμε την οργάνωση ενός βασικού μικροϋπολογιστικού συστήματος. Ένα τέτοιο σύστημα αποτελείται από τρία βασικά υποσυστήματα την Κεντρική μονάδα επεξεργασίας ή ΚΜΕ, το υποσύστημα μνήμης και το υποσύστημα εισόδου/εξόδου. Το κεφάλαιο ξεκινάει με μια επισκόπηση της οργάνωσης ενός βασικού μικροϋπολογιστικού συστήματος. Στη συνέχεια εξετάζουμε τα τρία βασικά υποσυστήματα με μεγαλύτερη λεπτομέρεια. Περιγράφουμε τη λειτουργικότητα και οργάνωση κάθε υποσυστήματος καθώς και την διασύνδεση τους με το υπόλοιπο μικροϋπολογιστικό σύστημα. Το κεφάλαιο τελειώνει με την παρουσίαση της οργάνωσης ενός πραγματικού μικροϋπολογιστικού συστήματος που θα μπορούσε να καλύψει αρκετές εφαρμογές.

28 Σχεδίαση μικροϋπολογιστικού συστήματος 3.2 Σχεδίαση μικροϋπολογιστικού συστήματος Σε αυτή τη παράγραφο εξετάζουμε την οργάνωση ενός βασικού μικροϋπολογιστικού συστήματος. Ένα μικροϋπολογιστικό σύστημα έχει τρία βασικά υποσυστήματα όπως φαίνεται στο σχήμα 1.1. Την Κεντρική Μονάδα Επεξεργασίας, ή ΚΜΕ, η οποία εκτελεί πολλές λειτουργίες και ελέγχει το μικροϋπολογιστικό σύστημα. Το υποσύστημα μνήμης το οποίο χρησιμοποιείται για την αποθήκευση των προγραμμάτων που εκτελεί η ΚΜΕ μαζί με τα δεδομένα προγράμματος. Το υποσύστημα εισόδου/εξόδου, ή Ι/Ο, επιτρέπει στην ΚΜΕ να αλληλεπιδρά με συσκευές εισόδου και εξόδου όπως πληκτρολόγια, οθόνες κλπ. Σχήμα 3.1 Βασική οργάνωση μικροϋπολογιστικού συστήματος. Στη συνέχεια αυτού του κεφαλαίου εξετάζουμε τα τρία βασικά υποσυστήματα με μεγαλύτερη λεπτομέρεια. Περιγράφουμε την λειτουργικότητα και την οργάνωση, κάθε υποσυστήματος, καθώς και την διασύνδεση τους με το υπόλοιπο μικροϋπολογιστικό σύστημα. 3.3 Σχεδίαση κεντρικής μονάδας επεξεργασίας (ΚΜΕ) 3.3.1 Εισαγωγή Ο ρόλος της κεντρικής μονάδας επεξεργασίας είναι καθοριστικός καθώς είναι αυτή που ελέγχει τη λειτουργία ενός υπολογιστικού συστήματος. Ανακαλεί τις εντολές από τη μνήμη, εφοδιάζοντάς την με τις διευθύνσεις και τα σήματα ελέγχου, τα οποία της είναι απαραίτητα, για να έχει πρόσβαση στα δεδομένα που βρίσκονται καταχωρημένα σε αυτή. Η ΚΜΕ αποκωδικοποιεί τις εντολές και ελέγχει την διαδικασία εκτέλεσης. Εκτελεί κάποιες από τις διεργασίες εσωτερικά και παρέχει τη διεύθυνση, την πληροφορία και τα σήματα ελέγχου που χρειάζονται από τη μνήμη και τις περιφερειακές συσκευές εισόδου/εξόδου (I/O) για την εκτέλεση μιας εντολής.

Κεφάλαιο 3 29 Η εσωτερική δομή της ΚΜΕ περιλαμβάνει τέσσερα βασικά τμήματα όπως φαίνεται στο σχήμα 1.2. Το τμήμα των καταχωρητών (Register Section) στο οποίο, όπως υποδηλώνει και η ονομασία του, περιλαμβάνει μία σειρά από καταχωρητές και ένα μηχανισμό επικοινωνίας μεταξύ τους (εσωτερικός δίαυλος δεδομένων). Το τμήμα της αριθμητικής και λογικής μονάδας (Arithmetic Logic Unit ALU), το οποίο εκτελεί αριθμητικές πράξεις όπως πρόσθεση και λογικές διεργασίες όπως AND,OR κτλ. Λαμβάνει τελεστές από το τμήμα καταχωρητών της ΚΜΕ, εκτελεί τις ανάλογες λογικές ή αριθμητικές πράξεις και αποθηκεύει τα αποτελέσματα στο τμήμα καταχωρητών. Το τμήμα της μονάδας διαχείρισης διακοπών το οποίο ελέγχει τις εξωτερικές διακοπές. Είναι υπεύθυνο για τον καθορισμό της προτεραιότητας και την εκτέλεση των διακοπών. Λαμβάνει τις εξωτερικές αιτήσεις διακοπής και δεδομένα από το τμήμα καταχωρητών της ΚΜΕ, εκτελεί τις κατάλληλες διεργασίες και αποθηκεύει τα αποτελέσματα στο τμήμα καταχωρητών. Το τμήμα της μονάδας ελέγχου (Control Unit) το οποίο είναι υπεύθυνο για τον έλεγχο κάθε λειτουργίας του επεξεργαστή. Η μονάδα ελέγχου λαμβάνει κάποιες τιμές δεδομένων από το τμήμα των καταχωρητών, τις οποίες χρησιμοποιεί για να δημιουργήσει τα σήματα ελέγχου. Ο ρόλος της μονάδας ελέγχου είναι να τοποθετήσει αυτά τα σήματα ελέγχου στη σωστή σειρά, ώστε η CPU αλλά και το υπόλοιπο του υπολογιστή να εκτελέσουν τις διεργασίες που απαιτούνται για την σωστή επεξεργασία των εντολών και διακοπών. Σχήμα 3.2 Εσωτερική οργάνωση ΚΜΕ. Στις παραγράφους που ακολουθούν γίνεται αρχικά εκτενής αναφορά στο ρεπερτόριο εντολών και διακοπών της ΚΜΕ και στη συνέχεια παρουσιάζεται η σχεδίαση σε επίπεδο υλικού (hardware) που απαιτείται για την υλοποίηση κάθε τμήματος της.

30 Σχεδίαση μικροϋπολογιστικού συστήματος 3.3.2 H ISA για την ΚΜΕ Στην ενότητα αυτή περιγράφεται η ISA της ΚΜΕ η οποία στην ουσία αποτελεί τις προδιαγραφές σχεδίασής της. Οι προδιαγραφές αυτές αφορούν κατά κύριο λόγο το σύνολο των λειτουργιών της ΚΜΕ, οι οποίες εκφράζονται μέσω ενός αντίστοιχου συνόλου εντολών (Instruction Set). Όμως για την σχεδίαση της ΚΜΕ δεν αρκεί μόνο το να γνωρίζει κανείς το ρεπερτόριο των εντολών της, αλλά θα πρέπει επιπλέον να γνωρίζει και τους διαθέσιμους καταχωρητές (registers). Το πλήθος και το είδος των καταχωρητών είναι εκείνο που θα καθορίσει τον τρόπο εκτέλεσης κάθε εντολής. 3.3.2.1 Καθορισμός του συνόλου των εντολών Όπως αναφέρθηκε και στην εισαγωγή, το πρώτο βήμα για τη σχεδίαση μιας ΚΜΕ, είναι ο καθορισμός του συνόλου των εντολών της (Instruction Set). Οι δυνατές λειτουργίες της ΚΜΕ είναι συνολικά τριάντα έξι (36), κάθε μία από τις οποίες αντιστοιχεί και σε μία εντολή. Το σύνολο των εντολών μαζί με μια σύντομη περιγραφή της αντίστοιχης λειτουργίας (operation) παρουσιάζεται στον πίνακα 1.1 που ακολουθεί. ΕΝΤΟΛΗ OPCODE(BIN) OPCODE(HEX) ΛΕΙΤΟΥΡΓΙΑ NOP 00000000 00 No Operation LDAC 00000001 Γ 01Γ STAC 00000010 Γ 02Γ MVAC 00000011 03 MOVR 00000100 04 JUMP 00000101 Γ 05Γ GOTO Γ JMPZ 00000110 Γ 06Γ IF z=1 THEN GOTO Γ JPNZ 00000111 Γ 07Γ IF z=0 THEN GOTO Γ ADD 00001000 08 SUB 00001001 09 INAC 00001010 0A 1 CLAC 00001011 0B 0 AND 00001100 0C OR 00001101 0D XOR 00001110 0E NOT 00001111 0F MVBAC 00011010 1A MOVB 00011011 1B ADDB 00011000 18 SUBB 00011001 19 ANDB 00011100 1C ORB 00011101 1D XORB 00011110 1E LDSP 10000000 Γ 80Γ CALL 10000010 Γ 82Γ RET 10000011 83 PUSHAC 10000100 84

Κεφάλαιο 3 31 POPAC 10000101 85 PUSHR 10000110 86 POPR 10000111 87 INPT 00100000A 20Α OTPT 00100001A 21Α IESET 01000000 40 1 IERST 01000001 41 0 IPRST 01000010 42 0 VIPRST 01000011 43 0 Πίνακας 3.1 Το σύνολο εντολών για την KME. Παρατηρείται στον παραπάνω πίνακα ότι οι εντολές LDAC, STAC, JUMP, JMPZ, JPNZ, LDSP και CALL απαιτούν μια 16 bits διευθυνσιοδότηση μνήμης που εδώ παριστάνεται με το γράμμα Γ. Από την στιγμή που κάθε byte της μνήμης έχει εύρος 8 bits, αυτές οι εντολές χρειάζονται για την πραγματοποίησή τους 3 bytes στην μνήμη. Αντίστοιχα οι εντολές INPT και OTPT απαιτούν μια διευθυνσιοδότηση περιφερειακών των 8 bits που εδώ παριστάνεται με το γράμμα Α. Από την στιγμή που κάθε byte της μνήμης έχει εύρος 8 bits, αυτές οι εντολές χρειάζονται για την πραγματοποίησή τους 2 bytes την μνήμη. Όλες οι άλλες εντολές χρειάζονται για την πραγματοποίησή τους 1 byte στην μνήμη. Μια πρώτη εντύπωση που αποκομίζει κανείς από το σύνολο των εντολών αφορά το πλήθος των αριθμητικών και λογικών πράξεων που καλείται να μπορεί να πραγματοποιεί η λογική μονάδα (logic unit) της ALU. Αυτές είναι οι AND, OR, XOR ANDΒ, ORΒ, XORΒ και NOT, ενώ αντίστοιχα για την αριθμητική μονάδα (arithmetic unit) είναι οι πράξεις της πρόσθεσης (ADD, ADDΒ) και της αφαίρεσης (SUB, SUBΒ). Επιπρόσθετα άλλες δύο λειτουργίες που θα πρέπει να συμπεριληφθούν σε αυτές της ALU, είναι η εκκαθάριση του περιεχομένου του συσσωρευτή (CLAC) και η προσαύξηση του περιεχομένου του κατά μία μονάδα (INAC). Μια δεύτερη παρατήρηση αφορά τις εντολές μετάβασης του ελέγχου του προγράμματος από μια διεύθυνση σε μία άλλη και οι οποίες είναι οι JUMP, JMPZ και JPNZ. Οι δύο τελευταίες αφορούν την μετάβαση σε μια νέα διεύθυνση υπό συνθήκη και πιο συγκεκριμένα μετάβαση που εξαρτάται από την τιμή ενός καταχωρητή Ζ. Όσον αφορά τις υπόλοιπες εντολές, μπορούν να θεωρηθούν σαν μια ομάδα εντολών οι οποίες έχουν να κάνουν με μεταφορά δεδομένων από ένα στοιχείο σε ένα άλλο, το οποίο μπορεί να είναι είτε καταχωρητής είτε η εξωτερική μνήμη είτε ακόμα και μονάδα εισόδου/εξόδου. Οι εντολές αυτές, οι οποίες είναι έξι (6) συνολικά, είναι οι LDAC, STAC, MVAC, MOVR, MVΒAC,MOVΒ,INPT και OTPT. Τέλος, η ΚΜΕ περιλαμβάνει μια (1) ακόμη εντολή κατά την οποία δεν θα πραγματοποιείται καμιά διεργασία, εντολή ΝΟΡ (No OPeration), και τέσσερις (4) εντολές που αφορούν την διαχείριση του καταχωρητή κατάστασης διακοπών τις εντολές IESET, IERST, IPRST, VIPRST. To σύνολο των τριάντα έξι εντολών και των δύο διακοπών θα παρουσιαστεί αναλυτικά σε μια από τις επόμενες παραγράφους όπου θα γίνει περιγραφή του τρόπου εκτέλεσης τους.