Assignment 6
Στόχος της άσκησης αυτής είναι η εξοικείωση με την σχεδίαση και υλοποίηση
του εξομοιωτή QEMU. Αφού εγκαταστήσετε το QEMU, μελετήστε τον κώδικα για να
εντοπίσετε τα σημεία στα οποία πραγματοποιούνται οι προσπελάσεις
ανάγνωσης και εγγραφής δεδομένων σε κύρια μνήμη.
Ξεκινήστε δημιουργώντας μια μηχανή αρχιτεκτονικής ARM που να τρέχει σε περιβάλλον (host) αρχιτεκτονικής x86.
Ζητούμενο 1ο [ υποχρεωτικό ]
Να προσθέτετε μετρητές για να καταγράφετε πόσες αναγνώσεις και πόσες εγγραφές πραγματοποιεί το εξομοιούμενο σύστημα, καθώς και πόσα δεδομένα (μετρημένα σε bytes) προσπελάζονται. Οι τιμές των μετρητών πρέπει να εκτυπώνονται με τον τερματισμό της εξομοίωσης συστήματος.
Παραδοτέα:
- οι προσθήκες/αλλαγές σας στον κώδικα του QEMU, με την μορφή patch file (διευκρινίζοντας επί ποιάς έκδοσης του QEMU εφαρμόζεται - ενδεικτικά: 1.7.50)
- αποτελέσματα μετρήσεων από ένα παράδειγμα εξομοίωσης, διευκρινίζοντας με ποιά αρχεία και υπό ποιές συνθήκες λάβατε αυτές τις μετρήσεις.
Ζητούμενο 2ο [ προαιρετικό, με bonus 30% επί της βαθμολογίας της άσκησης ]
Με αφετηρία τα παραδοτέα του Ζητούμενου 1, να προσθέσετε επιπλέον μετρητές
ώστε να μπορείτε να απαντήσετε τις παρακάτω ερωτήσεις :
(α) Πόσες προσπελάσεις κύριας μνήμης (ανάγνωση, εγγραφή) αφορούν τα προγράμματα
χρήστη στο εξομοιούμενο σύστημα (user-space), και πόσες το λειτουργικό σύστημα
(kernel-space) ;
(β) Ποιός είναι ο όγκος δεδομένων
(μετρούμενος σε bytes) από user-space και από kernel-space προσπελάσεις ;
(γ) Πόσα είναι τα page-faults, και πόσα από αυτά αφορούν σελίδες κώδικα ;