Καταχώρηση & Κατακερματισμός δίσκου

preview_player
Показать описание
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Καταχώρηση περιοχών του δίσκου
Όταν φτάσει η στιγμή να δημιουργηθεί ένα αρχείο,
το Λειτουργικό Σύστημα το αποθηκεύει
σε μονάδες εκχώρησης (συστοιχίες, clusters).
Κάθε αρχείο έχει τουλάχιστον μια μονάδα εκχώρησης.
Αυτό σημαίνει ότι, αν η μονάδα εκχώρησης έχει μέγεθος 4096 bytes
και το αρχείο έχει περιεχόμενο έναν χαρακτήρα (δηλαδή 1 byte),
τότε ο χώρος που θα καταλαμβάνει το αρχείο στον δίσκο
θα είναι 4096 bytes.
Τα υπόλοιπα 4095 bytes λοιπόν δεν θα αξιοποιούνται.
Αυτό ονομάζεται εσωτερικός κατακερματισμός
(internal fragmentation) του δίσκου.
Η απόδοση των μονάδων εκχώρησης (blocks, μπλοκ)
στα αρχεία γίνεται με διάφορους τρόπους
οι οποίοι αναφέρονται παρακάτω.
Συνεχής καταχώρηση (Contiguous Allocation)
Στην καταχώρηση αυτή τα μπλοκ(Sector-block) του αρχείου είναι συνεχόμενα στον δίσκο.
Αυτό έχει το πλεονέκτημα ότι είναι απλό στην υλοποίηση
και ότι για κάθε αρχείο απαιτείται
μόνο η διεύθυνση του πρώτου μπλοκ(Sector-block).
Το μειονέκτημα είναι ότι το μέγεθος των αρχείων
δεν είναι πάντα γνωστό κατά τη στιγμή της δημιουργίας τους
και το σύστημα δεν γνωρίζει πόσο χώρο να δεσμεύσει.
Καταχώρηση συνδεδεμένης λίστας (Linked List Allocation)
Σε αυτή τη μέθοδο το αρχείο καταχωρείται ως μια συνδεδεμένη λίστα από μπλοκ.
Στο τέλος του πρώτου μπλοκ τοποθετείται
ο αριθμός του επόμενου μπλοκ (ένας δείκτης δηλαδή στο επόμενο μπλοκ)
και το τελευταίο μπλοκ
έχει μια ειδική τιμή για να δείξει το τέλος της αλυσίδας.
Ένα μειονέκτημα αυτής της μεθόδου είναι ότι δεν είναι δυνατή η άμεση προσπέλαση
σε κάποιο τμήμα του αρχείου καθώς δεν είναι γνωστές οι διευθύνσεις των μπλοκ.
Καταχώρηση με χρήση δείκτη (Indexed Allocation)
Αυτή είναι μια παραλλαγή της μεθόδου συνδεδεμένης λίστας
στην οποία διατηρείται ένας πίνακας όπου υπάρχει μια θέση
για κάθε μπλοκ του δίσκου (FAT, File Allocation Table).
Δεν αποθηκεύει δεδομένα αρχείων, αλλά διατηρεί δείκτες στα μπλοκ δίσκων που κατέχουν δεδομένα αρχείου.
Ετσι, το περιεχόμενο της θέσης του πίνακα
που αντιστοιχεί στο πρώτο μπλοκ του αρχείου
θα είναι η διεύθυνση του δεύτερου μπλοκ του αρχείου κ.ο.κ.
Στη θέση του τελευταίου μπλοκ
υπάρχει επίσης μια ειδική τιμή
που σηματοδοτεί το τέλος του αρχείου.
Όπως φαίνεται και από το όνομα του πίνακα
αυτή η μέθοδος χρησιμοποιείται στα συστήματα FAT
που είδαμε παραπάνω.
Κόμβοι-δ (i-nodes) [index nodes]
Η μέθοδος αυτή στηρίζεται πάλι στη χρήση δεικτών αλλα με διαφορετικό τρόπο.
Έτσι, για κάθε αρχείο υπάρχει ένας μικρός πίνακας που λέγεται δ-κόμβος (i-node)
και αυτός περιέχει τους αριθμούς των μπλοκ του αρχείου.
Σε περίπτωση μεγάλων αρχείων όπου ο πίνακας
δεν είναι αρκετός για να χωρέσει όλες τις θέσεις των μπλόκ,
μια θέση του πίνακα αυτού περιέχει την διεύθυνση ενός άλλου πίνακα
που περιέχει τις υπόλοιπες θέσεις.
Σε αυτή τη λογική στηρίζονται τα συστήματα ext2, ext3, ext4 που είδαμε παραπάνω.
Επίσης το σύστημα NTFS υλοποιεί
κάτι ανάλογο με τη χρήση του Master File Table (MFT).
Κατακερματισμός (Fragmentation).
Μετά από πολλές διαδικασίες
δημιουργίας και διαγραφής
αρχείων είναι αναμενόμενο
ότι τα μπλοκ του κάθε αρχείου θα βρίσκονται διασκορπισμένα στον δίσκο.
Αυτό θα έχει ως αποτέλεσμα οι φυσικές διαδικασίες ανάγνωσης/εγγραφής
να απαιτούν πολλές μετακινήσεις των κεφαλών του σκληρού δίσκου έτσι ώστε να βρεθούν στις κατάλληλες θέσεις.
Έτσι όμως αυξάνεται ο χρόνος που απαιτείται για την ανάγνωση/εγγραφή.
Αυτή η κατάσταση ονομάζεται εξωτερικός κατακερματισμός (external fragmentation)
και μειώνει την απόδοση του δίσκου.
Για την αντιμετώπιση του είναι δυνατό να γίνει
μια λειτουργία ανασυγκρότησης (αποκατακερματισμού, defragmentation) του δίσκου
όπου τα μπλοκ των αρχείων τοποθετούνται σε γειτονικές θέσεις στο μεγαλύτερο δυνατό βαθμό.
Η λειτουργία αυτή είναι καλό να γίνεται τακτικά σε κάθε δίσκο ενός υπολογιστικού συστήματος.
Рекомендации по теме