Υλικό υπολογιστών

Γνώση Υπολογιστών >> Υλικό υπολογιστών >  >> Δίσκοι & Αποθήκευση Υπολογιστών

Ποια είναι η διαδικασία ανοίγματος αρχείων αντιγράφοντας στη μνήμη;

Η διαδικασία ανοίγματος ενός αρχείου αντιγράφοντας το περιεχόμενό του στη μνήμη δεν είναι μια τυπική μέθοδος ανοίγματος αρχείων στις περισσότερες γλώσσες προγραμματισμού. Αντ 'αυτού, τα αρχεία συνήθως ανοίγουν με τρόπο που να επιτρέπει την * πρόσβαση * στο περιεχόμενό τους χωρίς να φορτώσουν απαραίτητα ολόκληρο το αρχείο στη μνήμη ταυτόχρονα. Αυτό είναι ζωτικής σημασίας για το χειρισμό μεγάλων αρχείων που δεν θα ταιριάζουν σε διαθέσιμη μνήμη RAM.

Ωστόσο, * Φόρτωση * Το σύνολο των περιεχομένων ενός αρχείου στη μνήμη * είναι * μια κοινή λειτουργία και η διαδικασία μοιάζει με αυτό:

1. Άνοιγμα αρχείου: Το πρόγραμμα χρησιμοποιεί μια κλήση συστήματος (ή τη συνάρτηση βιβλιοθήκης) όπως `open ()` (in c), `open ()` (σε python) ή παρόμοιες λειτουργίες σε άλλες γλώσσες. Αυτό δημιουργεί μια σύνδεση με το αρχείο στο δίσκο. Βασικά, αυτό το βήμα δεν φορτώνει το αρχείο στη μνήμη. Απλώς προετοιμάζεται για ανάγνωση. Το λειτουργικό σύστημα χειρίζεται λεπτομέρειες όπως η εύρεση του αρχείου και η επαλήθευση των δικαιωμάτων πρόσβασης.

2. Ανάγνωση του αρχείου: Το πρόγραμμα χρησιμοποιεί στη συνέχεια λειτουργίες όπως `read ()` (στο C, Python και πολλά άλλα) για να διαβάσει τα περιεχόμενα του αρχείου. Η λειτουργία `read ()` παίρνει τυπικά μια παράμετρο που καθορίζει τον αριθμό των bytes για ανάγνωση.

* για μικρότερα αρχεία: Ολόκληρο το αρχείο μπορεί να διαβαστεί στη μνήμη σε μία μόνο λειτουργία (ή μερικές). Αυτό έχει ως αποτέλεσμα ένα πλήρες αντίγραφο της μνήμης των περιεχομένων του αρχείου. Τα δεδομένα αποθηκεύονται συνήθως σε ένα buffer (μια περιοχή μνήμης που διατίθεται για το σκοπό αυτό).

* για μεγαλύτερα αρχεία: Το πρόγραμμα μπορεί να διαβάσει το αρχείο σε κομμάτια (μικρότερα τμήματα κάθε φορά). Αυτή η προσέγγιση αποφεύγει την εξάντληση της μνήμης. Το πρόγραμμα επεξεργάζεται κάθε κομμάτι και στη συνέχεια μπορεί να το απορρίψει ή να το αποθηκεύσει σε μια πιο εξελιγμένη δομή δεδομένων (όπως μια εγγραφή βάσης δεδομένων ή μια διαδικασία ροής).

3. Κατανομή μνήμης: Εάν φορτωθεί ολόκληρο το αρχείο, το πρόγραμμα πρέπει να διαθέσει επαρκή μνήμη για να κρατήσει το περιεχόμενο του αρχείου. Εάν η κατανομή αποτύχει (δεν υπάρχει αρκετή διαθέσιμη μνήμη), το πρόγραμμα πιθανότατα θα καταρρεύσει ή θα ρίξει μια εξαίρεση.

4. Κλείσιμο αρχείων: Μόλις ολοκληρωθεί το πρόγραμμα χρησιμοποιώντας το αρχείο, είναι απαραίτητο να το κλείσετε χρησιμοποιώντας μια συνάρτηση όπως `close ()`. Αυτό απελευθερώνει τη σύνδεση με το αρχείο και εξασφαλίζει ότι τυχόν αλλαγές που γράφονται στο αρχείο είναι σωστά ξεπλυμένες στο δίσκο.

Παράδειγμα (επεξηγηματική Python):

`` `Python

δοκιμή:

με ανοιχτό ("myfile.txt", "r") ως f:# ανοίγει το αρχείο? το κλείνει αυτόματα στο τέλος του μπλοκ «με»

file_contents =f.read () # διαβάζει ολόκληρο το αρχείο στη μεταβλητή 'File_Contents'.

# Process File_Contents (π.χ. αναζήτηση, χειρισμό κ.λπ.)

Εκτός από το FileNotFounderRor:

εκτύπωση ("Αρχείο δεν βρέθηκε!")

εκτός από την εξαίρεση ως e:

εκτύπωση (F "Παρουσιάστηκε σφάλμα:{e}")

`` `

Αυτός ο κώδικας Python καταδεικνύει τη φόρτωση ενός ολόκληρου αρχείου. Για πολύ μεγάλα αρχεία, θα θέλατε να το επεξεργαστείτε με γραμμή ή σε κομμάτια για να αποφύγετε προβλήματα μνήμης, χρησιμοποιώντας τεχνικές όπως iterators ή διαβάζοντας το αρχείο σε ένα βρόχο με `f.readline ()` ή `f.readlines ()`. Θυμηθείτε ότι ακόμη και οι `f.readlines ()` φορτώνει το αρχείο * ολόκληρο * στη μνήμη, αν και ως λίστα γραμμών, που μπορεί να προκαλέσουν προβλήματα με υπερβολικά μεγάλα αρχεία.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα