2 |
ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΑΡΧΕΙΟΥ 2.1. Φυσικά και Λογικά ΑρχείαΌταν αναφερόμαστε για αρχεία (files) σε δίσκο ή σε ταινία αναφερόμαστε σε συγκεκριμένη συλλογή από bytes αποθηκευμένα στον δίσκο ή στην ταινία. Όταν η λέξη αρχείο χρησιμοποιείται μ’ αυτή την έννοια τότε λέμε ότι το αρχείο υπάρχει φυσικά (physical file). Ένας δίσκος μπορεί να περιέχει εκατοντάδες ακόμη και χιλιάδες από φυσικά αρχεία. Από την άποψη ενός προγράμματος εφαρμογής η έννοια του αρχείου είναι διαφορετική. Για ένα πρόγραμμα εφαρμογής το αρχείο θα μπορούσαμε να πούμε ότι είναι όπως η τηλεφωνική γραμμή συνδεδεμένη σ’ ένα τηλεφωνικό δίκτυο. Το πρόγραμμα μπορεί να δέχεται ή να στέλνει bytes μέσω αυτής της τηλεφωνικής γραμμής, χωρίς να γνωρίζει από που ή προς τα που αυτά τα bytes κατευθύνονται. Το πρόγραμμα γνωρίζει ότι βρίσκεται στη τηλεφωνική γραμμή. Ένας δίσκος είναι δυνατόν να περιλαμβάνει χιλιάδες αρχεία ενώ ένα πρόγραμμα περιορίζεται στη χρήση μόνο 20 αρχείων. Το πρόγραμμα εφαρμογής βασίζεται στο Λ.Σ. για όλες τις λεπτομέρειες που αφορούν το τηλεφωνικό σύστημα. Τα bytes μπορούν να φτάνουν μέσω της γραμμής στο πρόγραμμα προερχόμενα από ένα τρέχον φυσικό αρχείο ή από το πληκτρολόγιο ή άλλη συσκευή εισόδου. Όμοια τα bytes που στέλνει ένα πρόγραμμα μέσω της γραμμής μπορεί να καταλήγουν σ’ ένα αρχείο ή να εμφανίζονται στην οθόνη. Το πρόγραμμα δεν γνωρίζει ποια γραμμή χρησιμοποιεί. Αυτή συνήθως η γραμμή την αναφέρουμε ως λογικό αρχείο (logical file ) για να το διακρίνουμε από το φυσικό αρχείο που βρίσκεται πάνω στον δίσκο ή την ταινία. Πριν το πρόγραμμα ανοίξει ένα αρχείο για να το χρησιμοποιήσει, το Λ.Σ. πρέπει να λάβει οδηγίες για να συνδέσει το λογικό αρχείο (μια τηλεφωνική γραμμή) με το φυσικό αρχείο ή συσκευή. Όταν χρησιμοποιούνται Λ.Σ. όπως το ΙΒM, OS/MVS αυτές οι εντολές βρίσκονται στην JCL (Job Control Language). Οι μίνι ΗΥ ή μικρο ΗΥ με πιο μοντέρνο Λ.Σ. όπως το Unix, MS-Dos, VMS διαθέτουν αυτές της εντολές μέσα στο πρόγραμμα εφαρμογής π.χ. στην turbo Pascal η αντιστοίχηση μεταξύ του λογικού και του φυσικού αρχείου γίνεται με την εντολή assign(input_file, ‘myfile.dat’); Μ’ αυτή την εντολή ζητείται από το Λ.Σ. να βρει ένα φυσικό αρχείο με το όνομα “myfile.dat” και να το αντιστοιχίσει με το λογικό όνομα αρχείου “input_file” (τηλεφωνική γραμμή). Αυτό το λογικό όνομα χρησιμοποιείται μέσα στο πρόγραμμα. Συνεχίζοντας τον παραλληλισμό με την τηλεφωνική γραμμή, έστω ότι το τηλέφωνο του γραφείου μου έχει 6 τηλεφωνικές γραμμές. Όταν λαμβάνω κλήση τότε η τηλεφωνήτρια λέει “έχετε τηλεφώνημα στην 3η γραμμή” και δεν λέει “έχετε τηλεφώνημα από το 891890”. Γίνεται φανερό ότι χρειάζεται να προσδιορίσω το τηλεφώνημα λογικά και όχι φυσικά. 2.2 Γενικό Σύστημα Στην ενότητα αυτή παρουσιάζονται βασικές πράξεις (operations) συστημάτων αρχείου (file systems). Οι πράξεις που περιγράφονται είναι γενικές και προφανώς παρουσιάζουν διαφορές από Λειτουργικό Σύστημα σε Λειτουργικό Σύστημα αλλά όλες επιτελούν παρόμοιο έργο. Εκείνο που ποικίλει είναι το συντακτικό τους, αλλά οι αρχές είναι οι ίδιες. Πριν από την χρήση ενός οποιουδήποτε συστήματος αρχείων χρειάζεται να χρησιμοποιείται το manual για το συντακτικό τους.OPEN(filename) Λειτουργίες : 1. Επιτρέπει πρόσβαση στο αρχείο.
Παράμετρος :
CLOSE(filename) Λειτουργίες : 1. Διακόπτει κάθε πρόσβαση στο αρχείο. Παράμετρος :
READ_NEXT(filename, buffer) Λειτουργίες : 1. Προχωράει τον ΤΔ στην επόμενη μη σημειωμένη (καταλημένη) εγγραφή.
Παράμετροι :
READ_DIRECT(filename, buffer, record_nbr) Λειτουργίες : 1. Τοποθετεί τον ΤΔ στην εγγραφή της οποίας ο αριθμός εγγραφής είναι ίσος με record_nbr.
Παράμετροι :
UPDATE(filename, buffer) Λειτουργίες : 1. Αντιγράφει μια εγγραφή από την μεταβλητή buffer στη θέση που βρίσκεται ο ΤΔ.
Παράμετροι : 1. filename : Προσδιορίζει το αρχείο που θα «ανοιχθεί». 2. buffer : Μεταβλητή όπου είναι αποθηκευμένη η εγγραφή. APPEND(filename, buffer) Λειτουργίες : 1. Τοποθετεί τον ΤΔ στη θέση ακριβώς μετά την τελευταί εγγραφή του αρχείου.
Παράμετροι :
WRITE_NEXT(filename, buffer) Λειτουργίες : 1. Προχωρά τον ΤΔ στην επόμενη εγγραφή στο αρχείο.
Παράμετροι :
WRITE_DIRECT(filename, buffer, record_nbr) Λειτουργίες : 1. Τοποθετεί τον ΤΔ στην εγγραφή της οποίας ο αριθμός εγγραφής είναι ίσος με record_nbr.
Παράμετροι :
logical EOF(filename) Λειτουργίες : 1. Γίνεται true, αν ο ΤΔ είναι μετά την τελευταία εγγραφή του αρχείου, αλλιώς false. Παράμετρος :
logical VALID(filename) Λειτουργία : 1. Γίνεται false, αν
οποιαδήποτε λειτουργία αποτυγχάνει ή αν η
εγγραφή έχει λογικά διαγραφεί, αλλιώς Παράμετρος :
ALLOCATE(filename, pointer) Λειτουργίες : 1. Επιλέγει ελεύθερο χώρο μεγέθους όσο το bucket του συγκεκριμένου αρχείου.
Παράμετροι :
DEALLOCATE(filename, pointer) Λειτουργίες : 1. Απομακρύνει το bucket που δηλώνεται από τον ΤΔ από το αρχείο.
Παράμετροι :
Βασική έννοια σ’ όλες τις παραπάνω πράξεις είναι η έννοια του τρέχοντα δείκτη. Ο τρέχον δείκτης (ΤΔ) είναι ένας λογικός δείκτης που δείχνει την τρέχουσα εγγραφή του αρχείου. Κάποια συστήματα αρχείου διαθέτουν εντολές για να μετακινούν τον ΤΔ (π.χ. η Turbo Pascal διαθέτει την εντολή SEEK). Στις παραπάνω βασικές γενικές πράξεις σχετικά με τα αρχεία η μετακίνηση του ΤΔ γίνεται έμμεσα. Οι πράξεις OPEN (RESET, REWRITE), APPEND τοποθετούν τον ΤΔ στην αρχή του αρχείου και στο τέλος αντίστοιχα.
Πολλές φορές όταν δημιουργούμε αρχεία ή επεξεργαζόμαστε υπάρχοντα αρχεία συναντάμε χαρακτήρες τους οποίους δεν είχαμε προσθέσει κατά την δημιουργία του αρχείου ή η εμφάνισή τους σε υπάρχοντα αρχεία μας είναι αδικαιολόγητη. Μερικά παραδείγματα δίνονται στη συνέχεια. Σε αρχεία δημιουργημένα σε PC’s συνήθως προστίθεται στο τέλος του αρχείου ο χαρακτήρας Control-Z (ASCII τιμή 26). Μερικές εφαρμογές προσθέτουν αυτόν τον χαρακτήρα μόνες τους. Μερικά συστήματα αρχείων χρησιμοποιούν ένα ζεύγος χαρακτήρων για να δηλώσουν το τέλος της γραμμής στα αρχεία κειμένου (text files), όπως το Carriage return (CR = #13) και line feed (#10). 2.3 Οι 6 καθιερωμένες διαδικασίες στα αρχεία Υπάρχουν αρκετές διαδικασίες που χρειάζεται να εφαρμοσθούν στα αρχεία, αλλά συνήθως η επεξεργασία αρχείου περιλαμβάνει 6 καθιερωμένες διαδικασίες. Μερικές απ’ αυτές τις διαδικασίες είναι καταλληλότερες για κάποιο τύπο αρχείου και άλλες για άλλους τύπους αρχείων. Παρ’ όλα αυτά είναι αναγκαίο να αναπτυχθούν μέθοδοι που θα υλοποιούν και τις 6 διαδικασίες γι’ όλους τους τύπους αρχείων. Αλγόριθμοι αναπτύσσονται με βάση τις βασικές πράξεις επί των αρχείων για να εφαρμοσθούν οι 6 διαδικασίες σε κάθε τύπο αρχείου που θα μελετηθεί. Η επιλογή μιας συγκεκριμένης δομής αρχείου (file structure) προσδιορίζει και τις βασικές πράξεις που μπορούμε να εφαρμόσουμε σ’ αυτό. Με τη σειρά τους οι αλγόριθμοι που μπορούν να αναπτυχθούν περιορίζονται λόγω των βασικών πράξεων. Συνεπώς η επιλογή μιας δομής αρχείου σημαίνει και ένα περιορισμένο σύνολο αλγόριθμων που μπορούν να αναπτυχθούν για τη λύση του προβλήματος. Οι 6 καθιερωμένες διαδικασίες για τα αρχεία είναι :
Οι αλγόριθμοι που θα αναπτυχθούν για τη διαχείριση αρχείων θα βασίζονται στις βασικές πράξεις. Κάθε δομή αρχείου θα επιτρέπει τη χρήση συγκεκριμένων βασικών πράξεων που με τη σειρά τους θα οδηγήσουν σε διαφορετικούς αλγόριθμους. Στη συνέχεια για κάθε δομή αρχείου θα δίνεται η περιγραφή της δομής, οι βασικές πράξεις που υποστηρίζει η δομή αυτή και οι αντίστοιχοι αλγόριθμοι. Η επιλογή της συγκεκριμένης δομής αρχείου θα καθορίζει και το σύνολο των βασικών πράξεων. Όμοια και οι αλγόριθμοι καθορίζονται από το σύνολο των βασικών πράξεων που υποστηρίζει η συγκεκριμένη δομή. Έτσι ο σχεδιαστής - αναλυτής της εφαρμογής επιλέγοντας συγκεκριμένη δομή αρχείου επιλέγει ταυτόχρονα και το σύνολο αλγορίθμων που μπορούν να λύσουν το συγκεκριμένο πρόβλημα. Άρα η επιλογή της συγκεκριμένης δομής αρχείου πρέπει να γίνεται με μεγάλη προσοχή και εκ των προτέρων γνώση για τις συνέπειες της επιλογής.
|
Copyright Πανεπιστήμιο Μακεδονίας
|