Κυριακή 13 Φεβρουαρίου 2011

Λειτουργικά Συστήματα: Διάλεξη 5

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


5: Εικονική μνήμη, Συστήματα αρχείων, Είσοδος / Έξοδος
  • Διαχείριση μνήμης:
oΟι σύγχρονοι επεξεργαστές έχουν καταχωρητές μεγέθους 32 bit ή 64 bit. Επειδή οι διευθύνσεις μνήμης που περιέχονται στον κώδικα των εκτελούμενων προγραμμάτων αποθηκεύονται σε αυτούς τους καταχωρητές κατά την εκτέλεση, πρέπει να χωρούν σε αυτούς, με αποτέλεσμα ένας 32μπιτος υπολογιστής να μπορεί να διευθυνσιοδοτήσει μέχρι 232 διαφορετικά byte μνήμης RAM (=4 GB).
oΌμως ως τη δεκαετία του 2000 ελάχιστοι υπολογιστές είχαν τόση πολλή μνήμη, ενώ ακόμη και όσοι είχαν έπρεπε να τη διαμοιράζουν μεταξύ πολλαπλών εκτελούμενων διεργασιών σ' ένα πολυδιεργασιακό ΛΣ (συμπεριλαμβανομένων των διεργασιών συστήματος του πυρήνα).
oΈτσι στις περισσότερες σύγχρονες αρχιτεκτονικές υπολογιστών εφαρμόζεται από τον πυρήνα, με υποστήριξη από το υλικό του επεξεργαστή, ένας μηχανισμός «εικονικής μνήμης» (virtual memory) -- συνήθως με τη μέθοδο της «σελιδοποίησης» (paging).


  • Σελιδοποίηση:
oΚάθε διεργασία έχει στη διάθεσή της έναν πλήρη, ιδιωτικό χώρο εικονικών διευθύνσεων σταθερού μεγέθους (2 GB στα Windows, ενώ τα άλλα 2 GB δεσμεύονται για χρήση από το ΛΣ), στον οποίον έχει πρόσβαση μόνο αυτή και το ΛΣ. Συν τοις άλλοις έτσι διασφαλίζεται στοιχειώδης προστασία μεταξύ των διεργασιών, αφού η καθεμία δεν μπορεί να προσπελάσει τη μνήμη της άλλης.
oΑυτός ο χώρος διευθύνσεων διαμερίζεται σε σελίδες επίσης σταθερού μεγέθους (συνήθως 4 ΚΒ), ενώ η φυσική μνήμη (η οποία μπορεί να είναι πολύ μικρότερη από τα εικονικά 2 GB που έχει κάθε διεργασία στη διάθεσή της) διαμερίζεται σε ίδιου μήκους πλαίσια σελίδων. Σε κάθε πλαίσιο σελίδων μπορεί κάθε στιγμή να είναι φορτωμένη μία σελίδα. Κάθε διεργασία περιέχει έναν πίνακα σελίδων (page table), με μία εγγραφή για κάθε εν χρήση σελίδα του εικονικού της χώρου διευθύνσεων, ο οποίος διατηρεί τις αντιστοιχίες μεταξύ σελίδων και πλαισίων σελίδων.
oΜία σελίδα όμως μπορεί να μην είναι φορτωμένη πραγματικά στη RAM (π.χ. δεν χωράει αν η φυσική RAM είναι μικρότερη από τη μνήμη που απαιτούν συνολικά ο πυρήνας και οι εκτελούμενες εφαρμογές), αλλά να είναι αποθηκευμένη σε ένα ειδικό αρχείο του δίσκου, ονόματι αρχείο αντιμετάθεσης (swap file), που ελέγχεται και συντηρείται από τον πυρήνα. Σε αυτήν την περίπτωση η εγγραφή  που της αντιστοιχεί στον πίνακα σελίδων δεν περιέχει  καμία διεύθυνση πλαισίου, αλλά είναι σημειωμένη ως «απούσα».
oΑν ο εκτελούμενος κώδικας επιχειρήσει να προσπελάσει εικονική διεύθυνση που περιέχεται σε απούσα σελίδα, τότε το υλικό παράγει ένα σφάλμα σελίδας (page fault) που το χειρίζεται αυτόματα το ΛΣ: μετακινεί τη ζητούμενη σελίδα από το αρχείο αντιμετάθεσης σε ένα πλαίσιο της RAM (αντικαθιστώντας πιθανώς μία άλλη σελίδα που μεταφέρεται τώρα στο αρχείο) και επιστρέφει τον έλεγχο στην εφαρμογή.
oΜε τον μηχανισμό της εικονικής μνήμης:
  • Κάθε διεργασία έχει απεριόριστη πρόσβαση σε έναν μεγάλο, ιδιωτικό και προστατευμένο χώρο διευθύνσεων, στο εύρος 0 - 2 GB. Ο χώρος αυτός είναι εικονικός, αλλά την αντιστοίχιση με τη φυσική μνήμη την αναλαμβάνει διαφανώς το ΛΣ με τη βοήθεια του υλικού, κατά τον χρόνο εκτέλεσης της εφαρμογής.
  • Έτσι οι προγραμματιστές των εφαρμογών και των μεταγλωττιστών δεν χρειάζεται να ενδιαφέρονται για τις πραγματικές διευθύνσεις μνήμης τις οποίες θα καταλαμβάνει το λογισμικό χρήστη κάθε φορά που θα εκτελείται.
  • Ο δίσκος χρησιμοποιείται ως επέκταση της φυσικής RAM.


  • Translation Lookaside Buffer (TLB):
oΟ TLB είναι μία κρυφή μνήμη (cache) στο υλικό της CPU (τελείως ανεξάρτητη από την κανονική κρυφή μνήμη), η οποία αντί να αποθηκεύει δεδομένα από την κύρια μνήμη για ταχύτερη προσπέλασή τους από τον επεξεργαστή, αποθηκεύει προσφάτως χρησιμοποιημένες αντιστοιχήσεις μεταξύ φυσικών και εικονικών διευθύνσεων μνήμης, δηλαδή εγγραφές από τους διάφορους πίνακες σελίδων όλων των ενεργών διεργασιών.
oΈτσι επιταχύνεται η μετάφραση εικονικών σε φυσικές διευθύνσεις κατά τον χρόνο εκτέλεσης κάθε προγράμματος, αφού μειώνονται οι προσπελάσεις στη RAM (πολύ βραδύτερη από τον TLB), όπου είναι αποθηκευμένοι οι πίνακες σελίδων.
oΕπομένως, μόνο αν η ζητούμενη αντιστοίχηση εικονικής σε φυσική διεύθυνση δεν βρεθεί στον TLB θα επιχειρηθεί ανάγνωσή της από τον πίνακα σελίδων. Μόλις ωστόσο η φυσική διεύθυνση μεταφερθεί από τη RAM στον επεξεργαστή, θα τοποθετηθεί και η ανάλογη εγγραφή στον TLB, ώστε την επόμενη φορά που θα ζητηθεί να μη χρειαστεί ξανά πρόσβαση στην κύρια μνήμη.


  • Αλγόριθμοι αντικατάστασης σελίδων:
oΌταν συμβαίνει ένα σφάλμα σελίδας και μία σελίδα μνήμης μεταφέρεται από το αρχείο αντιμετάθεσης του δίσκου στη RAM, αλλά δεν υπάρχει ελεύθερο πλαίσιο σελίδας για την τοποθέτησή της (η φυσική μνήμη είναι πλήρης), τότε πρέπει μία υπάρχουσα σελίδα να μεταφερθεί στον δίσκο και η νέα να τοποθετηθεί στο πλαίσιο που απελευθερώνεται. Ο μηχανισμός ο οποίος αποφασίζει ποιες σελίδες θα εναλλαχθούν και υλοποιεί την απόφαση λέγεται επόπτης σελιδοποίησης.
oΟ επόπτης σελιδοποίησης αξιοποιεί κάποιον αλγόριθμο αντικατάστασης σελίδων για να επιλέξει ποια σελίδα θα μετακινηθεί από τη RAM στο αρχείο αντιμετάθεσης. Συνήθως στον δίσκο μεταφέρεται η σελίδα που προσπελάστηκε λιγότερο πρόσφατα από όλες.


  • Σύστημα αρχείων (Filesystem):
oΣύστημα αρχείων ονομάζεται ο μηχανισμός των λειτουργικών συστημάτων ο οποίος οργανώνει την αποθήκευση, προσπέλαση και διαχείριση αρχείων και καταλόγων στις μονάδες δίσκου του υπολογιστή. Συνήθως αποτελεί τμήμα του πυρήνα και συνίσταται σε κατάλληλο κώδικα, αλλά και σε δομές δεδομένων αποθηκευμένες στους ίδιους τους δίσκους.
oΜία μονάδα δίσκου (δισκέτα, φλασάκι USB, σκληρός δίσκος, οπτικός δίσκος κλπ) διαιρείται από τη σκοπιά του υλικού σε μικρά τμήματα, στα οποία χωρά μία ελάχιστη ποσότητα δεδομένων. Ενδεικτικά, στους σκληρούς δίσκους και στις δισκέτες τα τμήματα αυτά ονομάζονται τομείς και συνήθως χαρακτηρίζονται από χωρητικότητα 512 byte, 1 Kb, 2 Kb ή 4 Kb το καθένα.
oΑπό τη σκοπιά του συστήματος αρχείων, οι τομείς αυτοί ομαδοποιούνται σε «μπλοκ» (συνήθως των 4, 8, 16 ή 32 Kb το καθένα) και οι μηχανισμοί του ΛΣ είναι υπεύθυνοι για τη διατήρηση αντιστοιχήσεων μεταξύ αρχείων και των μπλοκ όπου διατηρούνται τα περιεχόμενα κάθε αρχείου. Οι πληροφορίες αυτές αποθηκεύονται στις δομές δεδομένων που καταλαμβάνει το σύστημα αρχείων στην εκάστοτε μονάδα δίσκου, δεσμεύοντας κάποιο ποσοστό της χωρητικότητάς της. Οι εν λόγω δομές δεδομένων είναι παντελώς αόρατες για τους τελικούς χρήστες και προσπελάσιμες μόνο από το ΛΣ.
oΓια κάθε αρχείο αποθηκεύεται το όνομά του, κάποια συναφή μεταδεδομένα (π.χ. μέγεθος, ημερομηνία δημιουργίας, άδειες πρόσβασης από διαφορετικούς χρήστες κλπ), καθώς και μία λίστα με τα μπλοκ τα οποία καταλαμβάνουν τα περιεχόμενά του. Τα μπλοκ αυτά δεν είναι απαραιτήτως διαδοχικά και γι' αυτό ένα αρχείο μπορεί στην πραγματικότητα να είναι διασπασμένο σε πολλά τμήματα, τοποθετημένα σε διαφορετικά σημεία της μονάδας δίσκου. Για τους καταλόγους, αποθηκεύεται επιπροσθέτως και μία λίστα με τα αρχεία που περιέχουν (συμπεριλαμβανομένων υποκαταλόγων, καθώς ένας κατάλογος δεν είναι παρά ειδικός τύπος αρχείου).
oΣε κάθε απόπειρα προσπέλασης αρχείου / καταλόγου από τον δίσκο, ο πυρήνας εντοπίζει και δίνει στο υλικό εντολές ανάγνωσης των κατάλληλων δεδομένων συμβουλευόμενος αρχικά τις δομές του συστήματος αρχείων. Η όλη διαδικασία είναι τελείως διαφανής για τον χρήστη.
oΟ χρήστης μπορεί προαιρετικά να «διαμερίσει» (partition) μία μονάδα δίσκου σε κατατμήσεις διαφορετικού μεγέθους, αρκεί να έχει δικαίωμα εγγραφής σε αυτήν. Σε καθεμία μπορεί να εγκατασταθεί διαφορετικό σύστημα αρχείων, με μία διαδικασία γνωστή ως διαμόρφωση (format), ώστε στη συνέχεια κάθε κατάτμηση να είναι ορατή στον χρήστη σαν διαφορετικός δίσκος. Αμέσως μετά από μία διαμόρφωση, το σύστημα αρχείων είναι κενό: δεν περιέχει εγγραφές περί αρχείων και η πλήρης χωρητικότητα της κατάτμησης είναι διαθέσιμη στον χρήστη για αποθήκευση δεδομένων (εκτός από τον αόρατο χώρο που δεσμεύεται για τις δομές του ίδιου του συστήματος αρχείων).
oΚάθε ΛΣ υποστηρίζει διαφορετικούς τύπους συστημάτων αρχείων, οι οποίοι διαφέρουν μεταξύ τους ως προς τις εσωτερικές τους συμβάσεις και τους χρησιμοποιούμενους αλγορίθμους (π.χ. μέγεθος των μπλοκ, δομές δεδομένων που αξιοποιούν, αποθηκευόμενα μεταδεδομένα κλπ), αλλά και ως προς τις δυνατότητες χειρισμού αρχείων που παρέχουν στους χρήστες. Έτσι στα Windows επικρατούν τα συστήματα αρχείων «FAT32» και «NTFS», ενώ στο Linux τα «ext3», «ext4» και «ReiserFS».

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

Αφήστε το σχόλιό σας για την τρέχουσα ανάρτηση: