Ασκήσεις
Ένα υπολογιστικό σύστημα που χρησιμοποιεί σελιδοποίηση διαθέτει λογικό χώρο διευθύνσεων 12 bit και υποστηρίζεται από 2 πλαίσια φυσικής μνήμης. Την παρούσα στιγμή ο πίνακας σελίδων είναι ο εξής: Bit Παρουσίας 0-1 0 1 1 0 - Αριθμός Πλαισίου Από πόσες σελίδες αποτελείται ο ιδεατός χώρος διευθύνσεων; Β. Ποιο θα πρέπει να είναι το μέγεθος σελίδας στο σύστημα (θεωρούμε ότι όλες οι πιθανές διευθύνσεις θα πρέπει να μπορούν να αντιστοιχηθούν σε φυσικές διευθύνσεις) Γ. Η ιδεατή διεύθυνση (hex) 0xCB5 αντιστοιχίζεται σε κάποια θέση στην φυσική μνήμη αυτή την στιγμή; Δ. Ποια λογική διεύθυνση αντιστοιχίζεται στην φυσική διεύθυνση 0x401; Ε.Σε ποια φυσική διεύθυνση αντιστοιχίζεται η λογική διεύθυνση 0xΒF0;
Ο λογικός χώρος διευθύνσεων σε ένα υπολογιστικό σύστημα που χρησιμοποιεί σελιδοποίηση αποτελείται από 32 δυαδικά ψηφία. Το μέγεθος κάθε σελίδας είναι 8 Κ. Πόσες θέσεις θα πρέπει να έχει ο πίνακας σελίδων για να υποστηριχθεί όλος ο λογικός χώρος διευθύνσεων.
Η σελίδα αποτελείται από 8Κ bytes (= 2**13) άρα χρειάζονται 13 δυαδικά ψηφία για να προσδιορίσουν τη μετατόπιση (offset) για καθένα από αυτά. Από τα 32 bit της λογικής διεύθυνσης θα περισσέψουν (32-13) = 19 ψηφία για να προσδιορίσουν τον αριθμό σελίδας. Θα μπορούμε να έχουμε 2**19 (512Κ) σελίδες και αυτός θα πρέπει να είναι και ο αριθμός θέσεων στον πίνακα σελίδων.
Ποια είναι η μετατόπιση (offset) στο πλαίσιο που ανήκει η φυσική διεύθυνση 0xABCD αν το μέγεθος του πλαισίου είναι 512 Bytes.
Για μέγεθος σελίδας 512 θα χρειαστούμε 9 δυαδικά ψηφία για τον προσδιορισμός της μετατόπισης. Άρα στην διεύθυνση που μας δίνεται η μετατόπιση θα προσδιορίζεται από τα 9 λιγότερο σημαντικά ψηφία της διεύθυνσης. Ο δεκαεξαδικός αριθμός ABCD σε δυαδική μορφή είναι ο 1010 1011 1100 1101 Η μετατόπιση είναι ο 1 1100 1101 δηλαδή ο δεκαδικός αριθμός (256+128+64+8+4+1) = 461
Θεωρούµε ένα σύστηµα εναλλαγής στο οποίο η µνήµη περιέχει τα ακόλουθα µεγέθη κενών κατά σειρά: 10Κ, 4Κ, 20Κ, 18Κ, 7Κ, 9Κ, 12Κ και 15Κ. Ποιο κενό χρησιµοποιείται για καθεµιά από τις ακόλουθες τρεις αιτήσεις, όταν αυτές φτάνουν µε την εξής σειρά: 12Κ, 10Κ, 8Κ, µε τον αλγόριθµο πρώτης τοποθέτησης, τον αλγό- ριθµο καλύτερης τοποθέτησης, τον αλγόριθµο χειρότερης τοποθέτησης και τον αλγόριθµο επόµενης τοποθέτησης;
Κενά: Α 10Κ, Β 4Κ, Γ 20Κ, 18Κ, Ε 7Κ, Ζ 9Κ, Η 12Κ, Θ 15Κ
Μια µηχανή έχει διάστηµα διευθύνσεων των 32 bits και σελίδες µεγέθους 8Κ. Ο πίνακας σελίδων βρίσκεται εξολοκλήρου στο υλικό, µε µια λέξη των 32 bits για κάθε καταχώρισή του. Όταν ξεκινάει µια διαδικασία, ο πίνακας σελίδων αντιγράφεται από τη µνήµη στο υλικό, µε ρυθµό µια λέξη κάθε 100 nsec. Αν κάθε διαδικασία εκτελείται για 100 msec (συµπεριλαµβανοµένου και του χρόνου για τη φόρτωση του πίνακα σελίδων), ποιο είναι το ποσοστό του χρόνου της CPU που αφιερώνεται στη φόρτωση του πίνακα σελίδων;
Για να µπορέσουµε να προσδιορίσουµε το µέγεθος του πίνακα σελίδων, πρέπει πρώτα να υπολογίσουµε πόσα bits χρησιµοποιούνται για µετατόπιση (αφού ξέρου- µε το µέγεθος της σελίδας). Άρα, αφού η σελίδα έχει µέγεθος 8Κ, αυτό σηµαίνει ότι 8Κ = 2^3*2^10 και ότι χρειαζόµαστε 13 bits για τη µετατόπιση. Ξέρουµε επίσης από τα δεδοµένα της άσκησης ότι το διάστηµα των διευθύνσεων είναι 32 bits. Το µέγεθος του πίνακα σελίδων είναι 32 13 = 19 bits. Άρα ο πίνακας σελίδων έχει 524.288 εγγραφές (λέξεις). Για την αντιγραφή του πίνακα σελίδων από τη µνήµη στο υλικό χρειάζεται χρόνος ίσος µε (524288 * 100 nsec) = 52428800 nsec = 52.428800 msec. Στα 100 msec εκτέλεσης µιας εντολής τα 52.4288 msec χρησιµοποιούνται για την φόρτωση του πίνακα. ηλαδή το ποσοστό του χρόνου της CPU που αφιερώνεται στην φόρτωση του πίνακα σελίδων είναι 52%.
Έστω µια διαδικασία Ν σελίδων και µια εκτέλεσή της, στη διάρκεια της οποίας χρησιµοποιούνται p*n διαφορετικές σελίδες και γίνονται A προσπελάσεις στη µνήµη. Υπολογίστε το µέσο χρόνο προσπέλασης στη µνήµη χωρίς ιδεατή µνήµη ως εξής: (χρόνος φόρτωσης από δίσκο σε µνήµη των Ν σελίδων+ το χρόνο των Α προσπελάσεων) / Α. Τώρα υπολογίστε το µέσο χρόνο προσπέλασης στη µνήµη µε ιδεατή µνήµη ως εξής: (χρόνος φόρτωσης των p*n σελίδων (ξεχωριστά η καθεµία)+ χρόνο των Α προσπελάσεων)/α. Αν θεωρήσουµε ότι ο µέσος χρόνος εξυπηρέτησης σφάλµατος σελίδας είναι 10ms και ο χρόνος προσπέλασης µνήµης είναι 1µs τότε: Τελικός χρόνος προσπέλασης = (1 p) x (1 µs) + p x (10 ms) = ((1 p) + 10000 x p µs = (1+9999 x p) µs Βλέπουµε ότι ο τελικός χρόνος προσπέλασης είναι ευθέως ανάλογος του «ρυθµού σφαλµάτων σελίδας» (page fault rate). Αν µια προσπέλαση στις χίλιες προκαλεί ένα σφάλµα σελίδας, τότε ο τελικός χρόνος προσπέλασης είναι 11µs. Ο υπολογι- στής θα είχε καθυστέρηση 10 φορές εξαιτίας της σελιδοποίησης ζήτησης.
Ένας Η/Υ εκτελεί µια εντολή σε 1µsec. Καθεµιά από αυτές τις εντολές κάνει 2 προσπελάσεις στη µνήµη. Το 90% των προσπελάσεων γίνονται µέσω συσχετιστικής µνήµης, και στην περίπτωση αυτή δεν έχουµε πρόσθετες καθυστερήσεις. Όµως, όταν µια προσπέλαση γίνει µέσω πίνακα σελίδων, τότε υπάρχει πρόσθετη καθυστέρηση 0,5µsec. Το κάθε λάθος σελίδας συνεπάγεται πρόσθετη καθυστέρηση 20msec. Προσδιορίστε το ρυθµό λαθών σελίδας έτσι ώστε ο µέσος χρόνος εκτέλεσης µιας εντολής να είναι µικρότερος από 1,2µsec.
Στην περίπτωση που δε συµβαίνουν λάθη σελίδων, έχουµε µέσο χρόνο εκτέλεσης κάθε εντολής ίσο µε: 0,9 * 1µsec + 0,1 * (1 + 0,5) µsec = (0,9 + 0,15) µsec = (1,05) µsec
Έστω f ο ρυθµός µε τον οποίο συµβαίνουν λάθη σελίδων. Τότε, ο µέσος χρόνος εκτέλεσης εντολών είναι: 1,05 µsec * (1 f) + (1,05 µsec + 20 msec)f = 1,05 µsec 1,05f µsec + 1,05f µsec + 20000f µsec = 20000f µsec + 1,05 µsec Θέλουµε ο µέσος χρόνος εκτέλεσης εντολών να είναι µικρότερος από 1,2µsec. Άρα 20000f µsec + 1,05 µsec < 1,2 µsec f < (1,2 1,05) / 20000 µsec f < 0,15 / 20000 µsec].