Εισαγωγή στο Λειτουργικό Σύστημα UNIX & GNU/Linux Συστήματα αρχείων (Filesystem)

Γενικά

Με τον όρο αυτό, εννοούμε το πως σε ένα Λ.Σ και ειδικότερα στην περίπτωσή μας στο UNIX είναι οργανωμένα τα αρχεία και τα προγράμματα που το απαρτίζουν, όπως επίσης και τα αρχεία στα οποία αποθηκεύουν τα δεδομένα τους οι διάφοροι χρήστες του υπολογιστή. Υπάρχουν δύο βασικές έννοιες στο filesystem:

  • file (αρχείο): η αντιστοιχεία του με τον "πραγματικό" κόσμο είναι τα βιβλία που βρίσκονται μέσα σε μια βιβλιοθήκη. Κάθε ένα από αυτά μπορεί να περιέχει μια πληθώρα από πληροφορίες, όπως ονόματα και τηλέφωνα, αποτελέσματα από μια εργαστηριακή δουλειά αλλά και τα προγράμματα που σχηματίζουν το Λ.Σ. κλπ.
  • directory (κατάλογος): συνεχίζοντας την προηγούμενη αντιστοίχιση, είναι τα ράφια της βιλβιοθήκης μέσα στα οποία βρίσκονται τα βιβλια - τα αρχεία δηλαδή.

Για όλα αυτά ορίζεται άλλο ένα επίπεδο οργάνωσης, το filesystem. Στην αντιστοιχία που έχουμε κάνει ως τώρα, το filesysystem είναι η βιλβιοθήκη που περιέχει τα ράφια (directories) που με την σειρά τους περιέχουν τα βιβλία (files). Το ποια ακριβώς είναι η θέση του κάθε πράγματος στην δομή αυτή δεν είναι αυστηρά καθορισμένο. Αποτελεί αποτέλεσμα σύμβασης ανάμεσα στους διάφορους σχεδιαστές λειτουργικών συστημάτων και ο καθένας τα τοποθετεί ανάλογα με τις ανάγκες που προκύπτουν από τον σχεδιασμό τους.

Ωστόσο, σε ένα Λ.Σ UNIX θα συνατήσει κανείς ένα βασικό μοντέλο δόμησης που έχει αποδειχτεί με την πάροδο του χρόνου αρκετά βολικό για το ακολουθεί κανείς. Ένας λόγος ακόμα, είναι ότι, η κοινή τάση που υπάρχει ανάμεσα στους σχεδιαστές και προγραμματιστές Λ.Σ UNIX είναι να μπορούν τα ίδια προγράμματα να έχουν την δυνατότητα να λειτουργήσουν σε διαφορετική έκδοση ενός UNIX Λ.Σ χωρίς να χρειάζονται σημαντικές ή και καθόλου αλλαγές στο σχεδιασμό τους. Μια τυπική δομή ενός UNIX Λ.Σ. φαίνεται στο Σχ. 3:

Directory structure

Σχήμα 3: Directory structure

Διακρίνουμε δύο βασικές ομάδες από directories:

  • Τα directories του συστήματος. Εκεί βρίσκονται αποθηκευμένα αρχεία δεδομένων και προγράμματα που χρησιμοποιεί τόσο το Λ.Σ, όσο και οι χρήστες του υπολογιστή.
  • Τα directories των χρηστών. Προκειμένου ο κάθε χρήστης του υπολογιστή να έχει ένα δικό του χώρο για την αποθήκευση των δεδομένων του διασφαλίζοντας ταυτόχρονα την αφάλειά τους, έχει προβλευτεί από το διαχειριστή του συστήματος να υπάρχει ένα directory που να ανήκει αποκλειστικά και μόνο στον κάθε χρήστη. Από αυτό το directory και μετά, μπορεί ο κάθε χρήστης να φτιάξει άλλα directories αν θέλει και να αποθηκεύσει τα αρχεία του.

Μία πάρα πολύ βασική έννοια σε όλη αυτή τη δομή, είναι αυτή του λεγόμενου "root directory'. Πρόκειται για ένα ειδικό directory που υπάρχει με σκοπό να μπορεί κανείς να αναφερεθεί σε όλα τα directories που υπάρχουν στο σύστημα έχοντας ένα κοινό σημείο αναφοράς. Σε ένα directory μπορεί κάποιος να αναφερθεί με το ονομά του (για παράδειγμα αν θέλει να αναφερθεί στο directory με όνομα "john" απλά το ζητάει με το όνομά του, δηλαδή "john". Ωστόσο, αυτός ο τρόπος δεν είναι πάντα και ο καλλύτερος δυνατός. Θα μπορούσε να υπάρχει και άλλο ένα directory με ακριβώς το ίδιο όνομα κάπου αλλού στις αποθηκευτικές μονάδες του υπολογιστή. Προκειμένου λοιπόν να είναι ξεκάθαρο το σε πιο directory αναφερόμαστε, πρέπει κανείς να μπορεί να προσδιορίσει το κάθε αρχείο η directory με ένα μοναδικό τρόπο.

Εδώ είμαστε αναγκασμένοι πια να εισάγουμε την έννοια του "path". Σαν "path" (μονοπάτι) ορίζουμε την διαδρομή που πρέπει να ακολουθήσει κανείς προκειμένου να βρει ή να αναφερθεί σε ένα directory ή αρχείο. Στο παράδειγμά μας, φαίνεται ότι για να βρει κανείς το directory με όνομα "john" πρέπει να να το ψάξει κάτω από το directory με όνομα "home" που με την σειρά του είναι κάτω από το directory με όνομα "/". Έτσι, το path στο παράδειγμά μας είναι "/home/john". Το πρώτο - και μόνο το πρώτο - "/" που εμφανίζεται είναι το "root directory" που αναφέραμε προηγουμένως. Το επόμενο, ή όλα όσα άλλα "/" υπάρχουν, χρησιμοποιούνται απλά για να διακρίνονται τα ονόματα των directories που βρίσκονται μέσα σε "path" ή ένα "pathname" όπως είναι πιο σωστό να λέμε. Εδώ οφείλουμε να κάνουμε ένα διαχωρισμό. Υπάρχουν δύο είδη "path":

  • absolut path (απόλυτο path): είναι το κάθε path που στην αρχή έχει το "root directory" (πχ ."/home/john").
  • relative path (σχετικό path): είναι το κάθε path που προσδιορίζεται σε σχέση το path που εργαζόμαστε. Αν για παράδειγμα εργαζόμαστε κάτω από το absolut path "/home/mary" και ζητήσουμε από τον υπολογιστή ένα αρχείο με όνομα "file1" από το directory "work", τότε ο υπολογιστής θα θεωρήσει, ότι το directory "work" που περιέχει το αρχείο "file1" βρίσκεται κάτω από το absolute path "/home/mary".

Σημείωση: Αυτό που πρέπει να θυμάται κανείς όταν δουλεύει σε ενα UNIX μηχάνημα, είναι ότι το ονόματα τόσο των αρχείων και directories, όσο και των εντολών είναι case sensitive, κατά συνέπεια, ένα αρχείο με όνομα file1 δεν μπορούμε ποτέ να το καλέσουμε σαν FILE1.