Κατασκευή: Βουρόπουλος Ηλίας, Γιολδάσης Νεκτάριος, Σαράφης Ιωάννης

 

Εισαγωγή
Λογικά μέρη της μνήμης
Συμβατική μνήμη

Εισαγωγή

Για να κατανοήσουμε πως είναι λογικά οργανωμένη η μνήμη, θα πρέπει πρώτα να καταλάβουμε πως ο υπολογιστής χειρίζεται τις διευθύνσεις της μνήμης. Ο απλούστερος και ευκολότερος τρόπος για να αναφερθούμε στις διευθύνσεις της μνήμης είναι να χρησιμοποιήσουμε μια γραμμική σειρά διευθύνσεων, δηλαδή η κάθε διεύθυνση να διαφέρει από την προηγούμενη και την επόμενη κατά ένα ψηφίο (δεκαεξαδικό ή δυαδικό). Για παράδειγμα, λέμε ότι το BIOS του σκληρού δίσκου IDE αρχίζει από τη διεύθυνση C8000 της μνήμης (η διεύθυνση C8000 είναι εκφρασμένη βάσει του δεκαεξαδικού συστήματος). Ωστόσο, οι επεξεργαστές χρησιμοποιούν διαφορετικό τρόπο για την αναφορά στις διευθύνσεις της μνήμης.

Στα συστήματα με επεξεργαστές x86 οι διευθύνσεις της μνήμης χωρίζονται σε δυο μέρη: στο segment address και στο offset. Αυτά τα δυο μέρη δημιουργούν την πραγματική διεύθυνση ως εξής: αρχικά κάνουμε μια ολίσθηση στο segment address κατά ένα ψηφίο προς τα αριστερά και στη συνέχεια προσθέτουμε το offset (μετατόπιση). Στην πράξη, για να αναφερθούμε σε μια διεύθυνση χρησιμοποιούμε το συμβολισμό segment:offset. Για παράδειγμα, έστω ότι θέλουμε να αναφερθούμε στη γραμμική διεύθυνση C8000. Χρησιμοποιώντας τον παραπάνω συμβολισμό, η γραμμική διεύθυνση C8000, ισοδυναμεί με C000:8000. Έτσι, παίρνουμε το segment address C000, το οποίο και ολισθένουμε κατά ένα ψηφίο προς τα αριστερά, οπότε παίρνουμε τον αριθμό C0000, στον οποίο προσθέτουμε το offset 8000 και παράγεται η γραμμική διεύθυνση C8000. Η γραμμική διεύθυνση μπορεί επίσης να προσπελαστεί και με το συνδυασμό C800:0000.

 

Διάφοροι τρόποι αναφοράς στην κύρια μνήμη

Στην κορυφή της σελίδας


Λογικά μέρη της μνήμης

Η κύρια μνήμη του συστήματος αν και αντιμετωπίζεται τις περισσότερες φορές ως μια οντότητα, στην πράξη έχει χωριστεί σε 4 διαφορετικά λογικά μέρη, καθένα από τα οποία έχει και ένα συγκεκριμένο ρόλο:

  • Conventional Memory: Τα πρώτα 640 KB της κύριας μνήμης του συστήματος είναι γνωστά ως συμβατική μνήμη (conventional memory). Είναι ο χώρος της μνήμης που χρησιμοποιείται από τα προγράμματα του DOS, καθώς και από αρκετούς οδηγούς. Η συμβατική μνήμη αρχίζει από τη γραμμική διεύθυνση 00000 και τελειώνει στη διεύθυνση 9FFFF.
  • Upper Memory Area (UMA): Είναι τα τελευταία 384 KB του πρώτου megabyte της κύρια μνήμης του συστήματος. Τα 384 KB της UMA που ακολουθούν τα 640 KB της Conventional Memory αποτελούν το πρώτο megabyte της κύρια μνήμης. Ο χώρος της UMA χρησιμοποιείται από διάφορες συσκευές του συστήματος, καθώς και για ορισμένες ειδικές εργασίες όπως για το shadowing στις ROMs των οδηγών. Η Upper Memory Area αρχίζει από τη γραμμική διεύθυνση A0000 και τελειώνει στη διεύθυνση FFFFF.
  • High Memory Area (HMA): Είναι τα πρώτα 64 KB (μείον 16 bytes) του δεύτερου megabyte της κύρια μνήμης του συστήματος. Από τεχνικής απόψεως, πρόκειται για τα πρώτα 64 KB της εκτεταμένης μνήμης (extended memory), αλλά μπορεί να προσπελαστεί ως ξεχωριστή οντότητα, μόνο όταν ο επεξεργαστής λειτουργεί σε real mode, οπότε και δε συμπεριλαμβάνεται μέσα στην υπόλοιπη εκτεταμένη μνήμη. Χρησιμοποιείται όταν τα προγράμματα του DOS χρειάζονται επιπλέον conventional memory, ενώ ο χώρος αυτός ορίζεται από τις διευθύνσεις 100000 και 10FFEF.
  • Extended Memory (XMS): Είναι ο χώρος πάνω από τη HMA και μέχρι το τέλος της κύριας μνήμης του συστήματος. Χρησιμοποιείται για προγράμματα και τα δεδομένα όταν το λειτουργικό σύστημα τρέχει σε protected mode, όπως για παράδειγμα όλες οι εκδόσεις των Windows. Η εκτεταμένη μνήμη αρχίζει από τη διεύθυνση 10FFF0 και εκτείνεται μέχρι το τέλος της κύριας μνήμης. Από τεχνικής απόψεως, η HMA είναι μέρος της extended memory όταν ο επεξεργαστής δε λειτουργεί σε real mode.

 

Λογική οργάνωση της μνήμης

Στην κορυφή της σελίδας


Συμβατική μνήμη

Τα πρώτα 640 KB της κύριας μνήμης του συστήματος ονομάζονται συμβατική μνήμη (conventional memory). Η ονομασία έχει σχέση με το γεγονός ότι το λειτουργικό σύστημα DOS καθώς και τα προγράμματα που τρέχουν κάτω από το DOS χρησιμοποιούν συνήθως αυτό το χώρο της κύριας μνήμης. Αρχικά, αυτός ήταν και ο μοναδικός χώρος τον οποίο μπορούσαν να χρησιμοποιήσουν τα διάφορα προγράμματα. Σήμερα, αν και οι υπολογιστές διαθέτουν πολύ περισσότερη μνήμη από τους αρχικούς υπολογιστές, εντούτoις σε ορισμένες περιπτώσεις αυτά τα 640 ΚΒ της conventional memory εξακολουθούν να είναι ο σημαντικότερος χώρος της κύρια μνήμης. Αυτό ωφείλεται στο γεγονός ότι για να χρησιμοποιηθούν τα υπόλοιπα τμήματα της κύριας μνήμης από τα προγράμματα του DOS, θα πρέπει να έχουμε ειδικό software. Η conventional memory εμπεριέχεται στο διάστημα 00000-9FFFF.

Για ποιον όμως λόγο υπάρχει αυτό το όριο των 640 ΚΒ στο μέγεθος της conventional memory; Ο λόγος για τον οποίο υπάρχει αυτό το όριο στο μέγεθος της conventional memory, έχει σχέση με την απόφαση της IBM να τοποθετήσει το χώρο που θα χρησιμοποιούνταν από το σύστημα κάτω από το χώρο που προορίζονταν για τα προγράμματα των χρηστών. Επίσης, και το γεγονός ότι οι πρώτοι επεξεργαστές μπορούσαν να διευθυνσιοδοτήσουν μέχρι 1 ΜΒ κύριας μνήμης συνέβαλε στο όριο των 640 ΚΒ της conventional memory. Οι παραπάνω λόγοι οδήγησαν στο διαχωρισμό της conventional memory από την υπόλοιπη κύρια μνήμη (extended memory). Αν ο χώρος που προορίζονταν για τα προγράμματα των χρηστών (conventional memory) είχε τοποθετηθεί κάτω από το χώρο που χρησιμοποιούνταν αποκλειστικά από το σύστημα, θα υπήρχε δυνατότητα να επεκτείνουμε την conventional memory.

Κατά τη διάρκεια της δεκαετίας του '80, καθώς το μέγεθος και η πολυπλοκότητα των προγραμμάτων αυξανόταν με ταχείς ρυθμούς, το μέγεθος της conventional memory φάνταζε πολύ μικρό, αν λάβουμε υπόψη και το γεγονός ότι δεν ήταν διαθέσιμα στα προγράμματα των χρηστών όλα τα 640 KB της conventional memory. Μεγάλα τμήματα της conventional memory χρησιμοποιούνταν από ρουτίνες του DOS, από vector tables, από buffers για file access, από διάφορους οδηγούς (όπως CD-ROM drives, κτλπ). Τα προγράμματα των χρηστών από τα 640 ΚΒ της conventional memory είχαν διαθέσιμα μόνο 500-550 KB. Υπήρχαν συστήματα, όπου χωρίς να υπάρχει κάποια διαδιακασία βελτιστοποίσης της conventional memory μετά την εκκίνηση είχαν διαθέσιμα λιγότερα από 400 KB conventional memory. Επίσης, μερικά προγράμματα χρηστών είχαν αναπτυχθεί έτσι ώστε να μην τρέχουν αν η διαθέσιμη conventional memory ήταν λιγότερη από 500 ΚΒ. Επομένως, ο περιορισμός στο μέγεθος της conventional memory ήταν η αιτία για την εμφάνιση πολλών προβλημάτων στη λειτουργία του υπολογιστή.

 

Ο χώρος της Conventional Memory

 

Η Microsoft χρησιμοποίησε δυο τεχνικές, στην προσπάθειά της να λύσει μερικά από τα προβλήματα που σχετιζόταν με τον περιορισμό στο μέγεθος της conventional memory. Η πρώτη τεχνική λειτουργούσε με τον εξής τρόπο: το λειτουργικό σύστημα DOS δεν φορτώνονταν στην conventional memory αλλά στην high memory area (τα πρώτα 64 KB της extended memory). Με τον τρόπο αυτό, εξοικονομούνταν για τα προγράμματα των χρηστών 45 KB conventional memory. Όταν χρησιμοποιούνταν η δεύτερη τεχνική, πολλοί οδηγοί (όχι προγράμματα χρηστών) αντί να χρησιμοποιήσουν conventional memory, χρησιμοποιούσαν την upper memory area (τα 384 KB μεταξύ της conventional memory και extended memory).

Η μεγιστοποίηση της διαθέσιμης στα προγράμματα των χρηστών conventional memory, έγινε βασικός στόχος σε κάθε υπολογιστή που χρησιμοποιούσε προγράμματα του DOS. Βελτιστοποιώντας την λειτουργία των high memory area και upper memory area, σε συνδιασμό με τη χρησιμοποίηση διαφόρων τρικ, μπορούμε να εξασφαλίσουμε για τα προγράμματα των χρηστών μέχρι και 620 ΚΒ conventional memory.

Στα σύγχρονα λειτουργικά συστήματα (σε όλα πλην του DOS) που λειτουργούν σε protected mode, η conventional memory δεν έχει τόση σημασία όση είχε στα πρώτα συστήματα που χρησιμοποιήθηκε. Τα προγράμματα που τρέχουν κάτω από αυτά τα λειτουργικά συστήματα χρησιμοποιούν την extended memory. Επίσης, τα 32-bit λειτουργικά συστήματα (όπως τα Windows 95) χρησιμοποιούν επίσης την extended memory για τους hardware drivers. Βέβαια, μερικά κομμάτια κώδικα εξακολουθούν να φορτώνονται στην conventional memory, αλλά οι εφαρμογές των χρηστών δεν περιορίζονται από το όριο των 640 ΚΒ της conventional memory.

Στην κορυφή της σελίδας


Εργαστήριο παράλληλης και κατανεμημένης επεξεργασίας Κατασκευή: Βουρόπουλος Ηλίας, Γιολδάσης Νεκτάριος, Σαράφης Ιωάννης