Πώς μπορεί το μέγεθος αρχείου να είναι μηδέν;
Όλοι περιστασιακά αντιμετωπίζουμε μια «κατάσταση» στους υπολογιστές μας που μας αφήνει εντελώς αμηχανία, όπως ένα αρχείο που έχει μέγεθος μηδέν, αλλά πώς είναι δυνατόν; Η σημερινή θέση Q & A της SuperUser έχει τις απαντήσεις σε μια ερώτηση που προκαλεί σύγχυση στον αναγνώστη.
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.
Το ερώτημα
Ο αναγνώστης SuperUser Eugene S θέλει να μάθει πώς το μέγεθος ενός αρχείου μπορεί να είναι μηδέν:
Αυτό είναι κάτι που έτρεξα και δεν μπορούσα να σκεφτώ μια σωστή εξήγηση. Εάν δημιουργώ ένα κενό * .txt αρχείο στον υπολογιστή μου και στη συνέχεια να δούμε το μέγεθός του, δείχνει μέγεθος μηδέν. Πώς γίνεται αυτό? Εννοώ ακόμα και αν το ίδιο το αρχείο είναι άδειο, πρέπει να έχει ακόμα κάποιο μέγεθος (ακόμα και αν πρόκειται απλώς να αποθηκεύσει το δικό του όνομα). Πώς μπορεί να εξηγηθεί αυτό?
Πώς είναι δυνατόν ένα αρχείο να έχει μέγεθος μηδέν?
Η απάντηση
Οι συνεργάτες του SuperUser David Schwartz και Cort Ammon έχουν την απάντηση για εμάς. Πρώτα, ο David Schwartz:
Είναι δυνατόν επειδή δεν υπάρχει πραγματικά αρχείο. Υπάρχει μόνο μια καταχώρηση καταλόγου με όνομα και κάτοχο. Η καταχώρηση του καταλόγου είναι λογικά διαφορετική από το αρχείο. Για παράδειγμα, το ίδιο αρχείο μπορεί να έχει περισσότερα από ένα ονόματα σε περισσότερους από έναν κατάλογο.
Δυστυχώς, ο όρος αρχείων δεν χρησιμοποιείται πάντα για να σημαίνει ακριβώς το ίδιο πράγμα. Αλλά η λογική μεγέθους αρχείου προέρχεται από το μοντέλο όπου μια καταχώρηση καταλόγου αποδίδει ένα αρχείο σε έναν κατάλογο, τότε τα ονόματα των αρχείων και τα σχετικά μεταδεδομένα αποθηκεύονται στον κατάλογο.
Ακολουθούμενη από την απάντηση του Cort Ammon:
Η σημασιολογική σημασία του μεγέθους του αρχείου είναι διαφορετική από αυτή που χρησιμοποιείτε.
Υπάρχουν πολλά μεγέθη αρχείων που έχουν νόημα. Η πιο συνηθισμένη και αυτή που βλέπετε εδώ είναι ο αριθμός των byte στο αρχείο. Αν το αρχείο είναι κενό αρχείο κειμένου, μπορεί να περιέχει μηδενικά byte. Αυτός ο αριθμός είναι σημαντικός για τους προγραμματιστές, επειδή πρέπει συχνά να ανοίξουμε ένα αρχείο, να διαβάσουμε όλα τα δεδομένα και να το κλείσουμε. Πρέπει να γνωρίζουμε πόσα bytes δεδομένων θα βρίσκονται στον φάκελο ώστε να μπορέσουμε να σχεδιάσουμε μπροστά.
Μια άλλη έννοια προκύπτει από τον τρόπο που τα περισσότερα συστήματα αρχείων αποθηκεύουν δεδομένα. Τα περισσότερα συστήματα αρχείων αποθηκεύουν δεδομένα σε μπλοκ. Για παράδειγμα, το σύστημα αρχείων μπορεί να αποθηκεύει δεδομένα σε μπλοκ των 64 kB, πράγμα που σημαίνει ότι ποτέ δεν θα διαθέσει τίποτα που δεν είναι ένα πολλαπλάσιο των 64 kB. Αυτό ακούγεται αναποτελεσματικό, αλλά μπορεί να κάνει τη λογιστική αρκετά απλούστερη και συχνά πιο απλή σημαίνει ταχύτερη.
Ένα τρίτο νόημα, το οποίο τραβάτε, θα είναι ο πραγματικός αριθμός των bits που απαιτούνται στον σκληρό δίσκο για να περιγράψει την παρουσία ενός αρχείου. Αυτό περιλαμβάνει πληροφορίες που αποθηκεύονται συνήθως ξεχωριστά από το αρχείο. Για παράδειγμα, στο Linux, η έννοια του ονόματος αρχείου αποθηκεύεται στο inode για τον κατάλογο που περιέχει το αρχείο. [Με βάση τις παρατηρήσεις από άλλα σχόλια, αυτό αποθηκεύεται (τεχνικά) στα δεδομένα του καταλόγου. Όταν έγραψα αυτό, σκέφτηκα την υπόθεση μικρού καταλόγου. Δεδομένα μικρότερα από 156 byte μπορούν να αποθηκευτούν απευθείας στο inode.] Αυτό δεν είναι μια συνήθης έννοια, επειδή είναι εξαιρετικά δύσκολο να προσδιοριστεί χωρίς να γνωρίζετε τις εξαιρετικά βαθιές εσωτερικές λειτουργίες του συστήματος αρχείων σας (όπως για παράδειγμα ο χώρος που απαιτείται για την αποθήκευση όλων των αδειών στο αρχείο). Ωστόσο, εάν έχετε σκληρό δίσκο 1.000.000 byte και θέλετε να μάθετε πόσο μεγάλο αρχείο μπορεί να χωρέσει σε αυτόν τον σκληρό δίσκο, αυτό θα είναι πολύ σημαντικό νόημα για εσάς!
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.