Σύστημα Αρχείων
Για να μπορεί να χρησιμοποιηθεί ένας σκληρός δίσκος πρέπει πρώτα να έχει διαμορφωθεί (format). Η διαδικασία αυτή δημιουργεί τον πίνακα του συστήματος αρχείων στον οποίο καταγράφεται η διεύθυνση κάθε block του δίσκου.
Το block είναι ένα σύνολο από bytes που διαχειρίζεται από το σύστημα σαν αυτόνομη μονάδα πληροφορίας. To μέγεθος του block καθορίζεται από το λειτουργικό σύστημα και μπορεί να είναι 512 bytes, 1KB, 2KB, 4KB ή και περισσότερο. Το μέγεθος αυτό (blocksize) είναι σημαντικό γιατί αυτός είναι ο αριθμός των bytes που μεταφέρονται κάθε φορά που ο δίσκος εκτελεί μια εντολή ανάγνωσης (read) ή εγγραφής (write). Οι συσκευές δίσκων από την κατασκευή τους μπορούν να μεταφέρουν μόνο ολόκληρες ομάδες (blocks) πληροφοριών και όχι μεμονωμένα bytes (block devices). Κάθε block κατέχει μια συγκεκριμένη θέση στο δίσκο. Η θέση αυτή χαρακτηρίζεται από τη "διεύθυνσή της" που είναι μια τριάδα αριθμών (επιφάνεια, τροχιά, τομέας).
Ο πίνακας του συστήματος αρχείων καταγράφει το όνομα κάθε αρχείου και τη θέση του πρώτου block δεδομένων κάθε φορά που το αποθηκεύουμε στο δίσκο. Ο πίνακας του συστήματος αρχείων δεν είναι ίδιος για όλα τα λειτουργικά συστήματα. Eτσι στα λειτουργικά συστήματα DOS, Windows 3.x, Windows 95 ο πίνακας ονομάζεται FAT (File Allocation Table), στα Windows 98 λέγεται FAT32 και στα Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 και Windows 7, λέγεται NTFS. Κάθε σύστημα αρχείων εφαρμόζει τη δική του μέθοδο αποθήκευσης των αρχείων στο δίσκο.
Πιο απλή θεωρείται η μέθοδος της συνεχούς κατανομής σύμφωνα με την οποία κάθε αρχείο αποθηκεύεται στο δίσκο σαν ένα συνεχόμενο block δεδομένων. Το Λειτουργικό Σύστημα διατηρεί πίνακες με όλους τους γειτονικούς ελεύθερους τομείς. Όταν το αρχείο δημιουργείται, ο χρήστης πρέπει να δηλώσει ποιό θα είναι το ανώτατο μέγεθός του. Το Λ.Σ. δίνει μια σειρά από τομείς στο αρχείο για την αποκλειστική του χρήση.
Εναλλακτική μέθοδος είναι η μέθοδος της συνδεδεμένης λίστας (Linked List Allocation), όπου η πρώτη λέξη κάθε block ενός αρχείου χρησιμοποιείται ως δείκτης για το επόμενο block.
Η μέθοδος της συνδεδεμένης λίστας με πίνακα (Linked List with Index) επιλύει τα προβλήματα της προηγούμενης μεθόδου με την τοποθέτηση των δεικτών σε έναν ξεχωριστό πίνακα στην αρχή του δίσκου. Ο πίνακας των δεικτών διαβάζεται κατά την εκκίνηση και παραμένει στη μνήμη RAM του υπολογιστή.
Η τέταρτη μέθοδος δημιουργεί έναν ξεχωριστό μικρό πίνακα για κάθε αρχείο που ονομάζεται κόμβος-δ (Index node) και στον οποίο καταγράφονται οι διευθύνσεις των block του αρχείου στο δίσκο και τα χαρακτηριστικά του αρχείου. Ο κόμβος-δ φορτώνεται στη μνήμη του υπολογιστή κάθε φορά που ανοίγουμε το αρχείο. Αν πρόκειται για μικρά αρχεία ο κόμβος-δ, που μπορεί να αποθηκεύσει τις διευθύνσεις μόνο των πρώτων 10 block του αρχείου, είναι αρκετός για να αποθηκεύσει όλες τις απαραίτητες πληροφορίες. Σε περίπτωση που έχουμε λίγο μεγαλύτερα αρχεία τότε στον κόμβο-δ καταγράφεται η διεύθυνση στο δίσκο ενός block που λέγεται απλό έμμεσο block (single indirect block) και περιέχει έναν άλλο πίνακα - δείκτη συμπληρωματικών διευθύνσεων. Αν το μέγεθος του block είναι 1ΚΒ, και οι διευθύνσεις καταλαμβάνουν 4 bytes τότε μπορούν να αποθηκευτούν 1024 : 4 = 256 διευθύνσεις. Αυτό καλύπτει μέγεθος αρχείου μέχρι 256ΚΒ. Επειδή όμως τα 256ΚΒ είναι σχετικά μικρό μέγεθος αρχείου για τους σύγχρονους υπολογιστές, χρησιμοποιείται το διπλό έμμεσο block το οποίο περιέχει δείκτες διευθύνσεων 256 απλά έμμεσων block τα οποία με τη σειρά τους περιέχουν τις διευθύνσεις 256 block δεδομένων του αρχείου. Με το διπλό έμμεσο block καλύπτουμε μέγεθος αρχείων μέχρι 256*256*1ΚΒ = 64ΜΒ. Αν και αυτό δεν είναι αρκετό χρησιμοποιούμε το τριπλό έμμεσο block που καλύπτει αρχεία μεγέθους μέχρι 16GΒ. Την οργάνωση αυτή χρησιμοποιεί το λειτουργικό σύστημα UNIX.
Για να ελαχιστοποιηθεί ο χρόνος απασχόλησης του επεξεργαστή κάθε φορά που διαβάζονται ή γράφονται δεδομένα στο δίσκο εφαρμόζεται η μέθοδος της απευθείας προσπέλασης στη μνήμη (Direct Memory Access ή DMA) κατά την οποία τα δεδομένα τοποθετούνται πρώτα στη μνήμη του υπολογιστή με τη βοήθεια του ελεγκτή (controller) του σκληρού δίσκου.
Το block είναι ένα σύνολο από bytes που διαχειρίζεται από το σύστημα σαν αυτόνομη μονάδα πληροφορίας. To μέγεθος του block καθορίζεται από το λειτουργικό σύστημα και μπορεί να είναι 512 bytes, 1KB, 2KB, 4KB ή και περισσότερο. Το μέγεθος αυτό (blocksize) είναι σημαντικό γιατί αυτός είναι ο αριθμός των bytes που μεταφέρονται κάθε φορά που ο δίσκος εκτελεί μια εντολή ανάγνωσης (read) ή εγγραφής (write). Οι συσκευές δίσκων από την κατασκευή τους μπορούν να μεταφέρουν μόνο ολόκληρες ομάδες (blocks) πληροφοριών και όχι μεμονωμένα bytes (block devices). Κάθε block κατέχει μια συγκεκριμένη θέση στο δίσκο. Η θέση αυτή χαρακτηρίζεται από τη "διεύθυνσή της" που είναι μια τριάδα αριθμών (επιφάνεια, τροχιά, τομέας).
Ο πίνακας του συστήματος αρχείων καταγράφει το όνομα κάθε αρχείου και τη θέση του πρώτου block δεδομένων κάθε φορά που το αποθηκεύουμε στο δίσκο. Ο πίνακας του συστήματος αρχείων δεν είναι ίδιος για όλα τα λειτουργικά συστήματα. Eτσι στα λειτουργικά συστήματα DOS, Windows 3.x, Windows 95 ο πίνακας ονομάζεται FAT (File Allocation Table), στα Windows 98 λέγεται FAT32 και στα Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 και Windows 7, λέγεται NTFS. Κάθε σύστημα αρχείων εφαρμόζει τη δική του μέθοδο αποθήκευσης των αρχείων στο δίσκο.
Πιο απλή θεωρείται η μέθοδος της συνεχούς κατανομής σύμφωνα με την οποία κάθε αρχείο αποθηκεύεται στο δίσκο σαν ένα συνεχόμενο block δεδομένων. Το Λειτουργικό Σύστημα διατηρεί πίνακες με όλους τους γειτονικούς ελεύθερους τομείς. Όταν το αρχείο δημιουργείται, ο χρήστης πρέπει να δηλώσει ποιό θα είναι το ανώτατο μέγεθός του. Το Λ.Σ. δίνει μια σειρά από τομείς στο αρχείο για την αποκλειστική του χρήση.
- Πλεονεκτήματα της μεθόδου αυτής είναι η απλή υλοποίηση και η άριστη απόδοση αφού το αρχείο διαβάζεται από την αρχή μέχρι το τέλος με μια ενέργεια.
- Σημαντικό μειονέκτημα είναι η έλλειψη ευελιξίας εκτός αν είναι γνωστό εκ των προτέρων το μέγεθος του αρχείου (όπως συμβαίνει στα CD-ROM). Καθώς όμως στα αρχεία συνήθως προστίθενται πληροφορίες διαφοροποιώντας το μέγεθος τους, το λειτουργικό σύστημα δε γνωρίζει πόσο χώρο πρέπει να κρατήσει στο δίσκο και οι νέες πληροφορίες καταλαμβάνουν πολύ περισσότερο από τον χώρο που χρειάζονται προκαλώντας κατακερματισμό του δίσκου. Χάνεται δηλαδή πολύτιμος χώρος ανάμεσα στα αρχεία.
Εναλλακτική μέθοδος είναι η μέθοδος της συνδεδεμένης λίστας (Linked List Allocation), όπου η πρώτη λέξη κάθε block ενός αρχείου χρησιμοποιείται ως δείκτης για το επόμενο block.
- Η μέθοδος αυτή έχει το πλεονέκτημα ότι δεν υπάρχει απώλεια χώρου εξαιτίας του κατακερματισμού του δίσκου
- αλλά έχει και μειονεκτήματα, όπως την σχετικά αργή τυχαία προσπέλαση στα δεδομένα και την μικρότερη χωρητικότητα σε πραγματικά δεδομένα του κάθε block (λόγω των byte που καταλαμβάνει ο δείκτης).
Η μέθοδος της συνδεδεμένης λίστας με πίνακα (Linked List with Index) επιλύει τα προβλήματα της προηγούμενης μεθόδου με την τοποθέτηση των δεικτών σε έναν ξεχωριστό πίνακα στην αρχή του δίσκου. Ο πίνακας των δεικτών διαβάζεται κατά την εκκίνηση και παραμένει στη μνήμη RAM του υπολογιστή.
- H τυχαία προσπέλαση γίνεται τώρα πολύ πιο γρήγορα αφού για την εύρεση ενός block αρκεί να το αναζητήσουμε στον πίνακα που βρίσκεται στη μνήμη του υπολογιστή χωρίς να χρειάζονται αναφορές στο δίσκο.
- Μειονέκτημα της μεθόδου αυτής είναι ότι ο πίνακας των δεικτών καταλαμβάνει αρκετή μνήμη και χώρο στον δίσκο.
Η τέταρτη μέθοδος δημιουργεί έναν ξεχωριστό μικρό πίνακα για κάθε αρχείο που ονομάζεται κόμβος-δ (Index node) και στον οποίο καταγράφονται οι διευθύνσεις των block του αρχείου στο δίσκο και τα χαρακτηριστικά του αρχείου. Ο κόμβος-δ φορτώνεται στη μνήμη του υπολογιστή κάθε φορά που ανοίγουμε το αρχείο. Αν πρόκειται για μικρά αρχεία ο κόμβος-δ, που μπορεί να αποθηκεύσει τις διευθύνσεις μόνο των πρώτων 10 block του αρχείου, είναι αρκετός για να αποθηκεύσει όλες τις απαραίτητες πληροφορίες. Σε περίπτωση που έχουμε λίγο μεγαλύτερα αρχεία τότε στον κόμβο-δ καταγράφεται η διεύθυνση στο δίσκο ενός block που λέγεται απλό έμμεσο block (single indirect block) και περιέχει έναν άλλο πίνακα - δείκτη συμπληρωματικών διευθύνσεων. Αν το μέγεθος του block είναι 1ΚΒ, και οι διευθύνσεις καταλαμβάνουν 4 bytes τότε μπορούν να αποθηκευτούν 1024 : 4 = 256 διευθύνσεις. Αυτό καλύπτει μέγεθος αρχείου μέχρι 256ΚΒ. Επειδή όμως τα 256ΚΒ είναι σχετικά μικρό μέγεθος αρχείου για τους σύγχρονους υπολογιστές, χρησιμοποιείται το διπλό έμμεσο block το οποίο περιέχει δείκτες διευθύνσεων 256 απλά έμμεσων block τα οποία με τη σειρά τους περιέχουν τις διευθύνσεις 256 block δεδομένων του αρχείου. Με το διπλό έμμεσο block καλύπτουμε μέγεθος αρχείων μέχρι 256*256*1ΚΒ = 64ΜΒ. Αν και αυτό δεν είναι αρκετό χρησιμοποιούμε το τριπλό έμμεσο block που καλύπτει αρχεία μεγέθους μέχρι 16GΒ. Την οργάνωση αυτή χρησιμοποιεί το λειτουργικό σύστημα UNIX.
Για να ελαχιστοποιηθεί ο χρόνος απασχόλησης του επεξεργαστή κάθε φορά που διαβάζονται ή γράφονται δεδομένα στο δίσκο εφαρμόζεται η μέθοδος της απευθείας προσπέλασης στη μνήμη (Direct Memory Access ή DMA) κατά την οποία τα δεδομένα τοποθετούνται πρώτα στη μνήμη του υπολογιστή με τη βοήθεια του ελεγκτή (controller) του σκληρού δίσκου.