belosback.jpg (5806 bytes)

Το σύστημα Αρχείων (File System)

Το εξάρτημα αυτό,μια από τις λειτουργίες του Kernel ελέγχει την αποθήκευση πληροφορίας στην Δευτερεύουσα Μνήμη του Συστήματος (mass storage), διευκολύνει την οργάνωση, επιτρέπει την επανεξέταση της (information retrieval).

Κύρια Χαρακτηριστικά του Συστήματος

Hierarchical Structure
Οι χρήστες έχουν τη δυνατότητα να οργανώνουν συσχετιζόμενες πληροφορίες (με την γενικότερη έννοια) σε ομάδα και να επεξεργάζονται μια ομάδα αρχείων σαν μια οντότητα,

File Expansion
Tα αρχελια επεκτείνονται δυναμικά ανάλογα με τις ανάγκες. Ο χρήστης δεν χρειάζεται να αποφασίσει πιο θα είναι το μέγεθος των αρχείων τους.

Structurelless Files
Το σύστημα δεν επιβάλει καμιά εσωτερική δομή στο περιεχόμενο του αρχείου.Η ερμηνεία και η οργάνωση του περιεχομένου είναι στην αποκλειστικότητα του χρήστη.

Ασφάλεια υπάρχει σύστημα ελέγχου προσπέλασης στα αρχεία.

File and Device Independence

Tα αρχεία και τα Ι/Ο devices ανήκουν στην ίδια κατηγορία, η επεξεργασία τους είναι η ίδια. Έτσι προγράμματα που έχουν εισόδους/εξόδους πάνω σε αρχεία μπορούν να χρησιμοποιηθούν πάνω σε τερματικά,εκτυπωτές ή να έχουν επικοινωνία (μέσω pipes) με άλλα προγράμματα.

Η έννοια File/Αρχείο

Το μέσο αποθήκευσης κάθε είδους πληροφορίας στο Σύστημα, με δοσμένο όνομα (file name) που αποτελείται από 1-14 χαρακτήρες.

Η έννοια directory / κατάλογος

Αποτελεί την αντιστοιχεία μεταξύ ονομάτων αρχείων και των αρχείων.Η αντιστοιχία αυτή προσδιορίζει κάποιο δομή πάνω στο file system.

To Σύστημα αρχείων αποτελείται από τρία είδη αρχείων :

(α) Απλά αρχεία   (ordinary disk files)
(β) Κατάλογοι       (directories)
(γ) Ειδικά αρχεία  (special files)
(δ) Pipes

Απλά Αρχεία

Ένα αρχείο περιέχει όποια πληροφορία έχει τοποθετήσει ο χρήστης πχ. object programs,κείμενα κα.Αρχεία με περιεχόμενο κάποιο κείμενο αποτελούνται από μια σειρά χαρακτήρες. Οι γραμμές στο κείμενο ξεχωρίζονται από τον χαρακτήρα " NL ".Προγράμματα σε γλώσσα μηχανής αποτελούνται από μια σειρά words, όπως ακριβώς βρίσκονται στη Μνήμη. Υπάρχουν βέβαια προγράμματα που οι assembler και ο loader παίρνουν στην είσοδο τους ένα binary αρχείο με συγκεκριμένη δομή .Όμως αυτή η δομή πάνω στα αρχεία είναι υπόθεση των προγραμμάτων που τα χρησιμοποιούν και όχι του Συστήματος Αρχείων.

Κατάλογοι

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

root.jpg (12107 bytes)

Ο ρόλος των καταλόγων του Συστήματος:

/ bin                             UNIX utilities
/ dev                            Mηχανισμοί Ε/Ε, Ειδικά Αρχεία
/ lib                              βιβλιοθήκες για επεξεργαστές γλώσσας
/ ete                            προγράμματα, πίνακες για system administration
/ tmp                           προσωρινά αρχεία
/ usr / bin                    βοηθητικός χώρος του  /bin
/ usr / games             παιχνίδια
/ usr / lib                     επεξεργαστές κειμένου κ.α.
/ usr / spool               αρχεία για εκτύπωση
/ usr / src                   προγράμματα σε μορφή C,furtram,parcel κ.τ.λ.

Προσπέλαση στο αρχείο Μαρία εκφράζεται :
/ usr / Mαρία

Κάθε κατάλογος έχει τουλάχιστον δυο στοιχεία στο περιεχόμενο του.Το όνομα " ." που σημαίνει τον τωρινό κατάλογο εργασίας χρήστη (current working) και το όνομα ".." που αναφέρεται στον πατέρα - κατάλογο, δηλαδή αυτόν που περιέχει τον δοσμένο κατάλογο.Αυτά τα συμβατικά ονόματα αντικαθιστούν τα ονόματα που έχουν οι δοσμένοι κατάλογοι κατάλογοι.Βλέπουμε ότι το Σύστημα Αρχείων, με τους καταλόγους επιβάλει τον περιορισμό να έχει την δομή Δέντρο με αρχική ρίζα τον κατάλογο roat (η /).

Το όνομα Αρχείου είναι απλώς το μέσο προσδιορισμού κάποιου αρχείου στο σύστημα.Ένα αρχείο μπορεί να έχει δύο ή περισσότερα ονόματα.Έτσι λέμε ότι υπάρχουν πολλαπλοί δεσμοί (links) πάνω σε αυτό το αρχείο. Αυτό καθιστά την αντιγραφή αρχείων που είναι κοινά, περιτή.Αυτό ισχύει μόνο για αρχεία που δεν είναι κατάλογοι. Από μια σκοπιά μπορούμε να πούμε ότι το κάθε αρχείο δεν "κατοικεί" σε κάποιο κατάλογο αποκλειστικά.Βέβαια όταν σβήνουν όλοι οι δεσμοί πάνω του τότε αυτό εξαφανίζεται από το Σύστημα.Ο προσδιορισμός κάθε αρχείου μέσα από την έκφραση ολόκληρου του δρόμου,μέσα από καταλόγους,που οδηγεί σε αυτό, είναι δύσχρηστη διαδικασία.Συνήθως οι χρήστες εργάζονται με μια μικρή ομάδα αρχείων μπλεγμένα σ' ένα κατάλογο.Το σύστημα διατηρεί μεταβλητή που καταγράφει τον τωρινό κατάλογο εργασιών current working directory. Έτσι ο προσδιορισμός ξεκινάει από αυτό και όχι απο το Root.

Eιδικά Αρχεία

Αυτά λειτουργούν σαν τα απλά Αρχεία (ordinary disk files) έχουν την ίδιαιτερότητα ότι σε κάθε ειδικό Αρχείο αντιστοιχεί τουλάχιστον ένας Μηχανισμός Ε/Ε (Ι/Ο device).Tα χρησιμοποιούμε για διάβασμα ή γράψιμο όπως και τα απλά αρχεία με την διαφορά όμως ότι εδώ συμβαίνει (το side effect) η μετακίνηση, μεταφορά πληροφορίας στο αντίστοιχο Μηχανισμό ή από αυτόν. Ο κατάλογος του Συστήματος /dev περιέχει όλα αυτά τα ειδικά Αρχεία όμως μπορεί να δημιουργηθεί δεσμός πάνω τους από αλλού πχ. η εκτύπωση πάνω σε χαρτο-ταινία.

       / dev / ppt

Ειδικά αρχεία υπάρχουν για κάθε γραμμή επικοινωνίας, κάθε Δίσκο, κάθε ταινία και Μνήμη.Μ' αυτόν τον τρόπο έχουμε τα εξής οφέλη :

1. Κοινή αντιμετώπιση Μηχανισμού Ε/Ε και Αρχείων
2. Κοινό συνταχτικό για προσδιορισμό τους. Όταν το πρόγραμμα έχει παράμετρο το όνομα αρχείου μπορεί να "πάρει" και το όνομα Μηχανισμού Ε/Ε.
3. Το Σύστημα Ασφάλειας Αρχείων μπορεί να εφαρμοστεί πάνω στους Μηχανισμούς Ε/Ε (Ι/Ο devices)

Έχουμε δυο κατηγορίες ειδικών αρχείων :

1. Μπλοκ : Αφορά μονάδα μεταφοράς πληροφορίας (ποσότητα) 512 byte.

2. Xαρακτήρα : Ανά χαρακτήρα πχ. Τηλέτυπο.

Εντολή χρήσης αρχείου

open

close

seek

Ένα αρχείο πρέπει πρώτα να το "ανοίξουμε" με την εντολη

                             θέση = open (όνομα, γιατί)

Η "θέση" λέγεται προσδιοριστής αρχείου

file descriptor είναι ένας ακέραιος αριθμός

"γιατί" δείχνει τον λόγο προσπέλασης, για διάβασμα, γράψιμο ή και τα δύο.

Για να δημιουργήσουμε ένα αρχείο ή για να επαναγράψουμε πάνω σε παλιό, επικαλύπτοντας το ολοκληρωτικά χρησιμοποιούμε την εντολή create.
Eάν το αρχείο "όνομα" είναι ήδη μέσα στο σύστημα τότε η εντολή έχει αποτέλεσμα τη συρίκνωση του σε μέγεθος O.
Σε περίπτωση που χρήστες μπαίνουν με ταυτόχρονα μέσα στο ίδιο αρχείο, η λογική σειρά των πράξεων τηρήται αλλά δεν είναι ασφαλής.Αυτός ο κίνδυνος θα ήταν πραγματικό πρόβλημα μόνο σε μεγάλα αρχεία πχ. τραπεζικών πληροφοριών.

Εκτός περιπτώσεων που θα αναφέρουμε παρακάτω το διάβασμα/γράψιμο αρχείων είναι ακολουθιακό δηλαδή ανά byte προς το τέλος του αρχείου ή προς την αρχή του.

Σημείωση: Σειριακή προσπέλαση σημαίνει από την αρχή του αρχείου προς το τέλος του μόνο, τον έναν record μετά τον άλλο (πχ.record = 1 byte).Η προσπέλαση σε συγκεκριμένο byte του αρχείου γίνεται με το να προδιορίζουμε την σχετική του θέση από την αρχή του αρχείου (byte O). Αυτός ο τρόπος οργάνωσης των αρχείων έχει το πλεονέκτημα να μη "βλέπει" ο χρήστης τα blocks ή τα records των πραγματικών αρχείων (physical files) δηλαδή των χώρων αποθήκευσης πάνω στα μέσα Δίσκους κ.τ.λ.

Θα δούμε παρακάτω πως τελικά υλοποιείται αυτή η απλή δομή των αρχείων μέσα από index blocks, data blocks κ.τ.λ. Έτσι η πληροφορία πάνω στα αρχεία οργανώνεται με βάση την ιδιαίτερη δομή της (logical structure) και όχι τη δομή του τρόπου υλοποίησης των αρχείων (physical structure).Για κάθε "ανοιχτό" αρχείο, μετά από εκτέλεση της εντολής open * το σύστημα φτιάχνει έναν pointer (Δείχτη) που στέκεται στο επόμενο byte του αρχείου που θα διαβαστεί ή θα γραφτεί, πχ.Εάν ν bytes διαβάζονται, ο δείχτης προχωράει v bytes από την θέση του.Το διάβασμα / γράψιμο γίνεται με τις εντολές :

                αποτέλεσμα : = read (Προσδ. Αρχ,θέση. byffer,πόσα)
                                           write

* open  (όνομα, i)               i  = O   για διάβασμα
                                           i   = 1    για γράψιμο
                                           i   = 2    για διάβασμα και γράψιμο

Οι παράμετροι των εντολών read/write:

"Προσδ. Αρχ." :
Είναι το αποτέλεσμα των εντολών open,create δηλαδή ένας file descriptor.

"θέση.byffer" : 
Eίναι η θέση (location) του αριθμού " Πόσα" bytes συνεχόμενα, πάνω στα οποία θα αποθηκευτεί η είσοδος (input) πληροφορίας.Όταν πρόκειται για γράψιμο τότε αυτά τα bytes στέλνονται στην έξοδο (output)

Το "αποτέλεσμα" των παραπάνω εντολών είναι ο τελικός αριθμός των bytes που μεταφέρθηκαν.Σε περίπτωση που συμβαίνει κάποιο λάθος στη λειτουργία της εντολής (Ι/Ο error) αυτός ο αριθμός διαφαίρει από τον επιθυμητό αριθμό "Πόσα".Δηλαδή η εντολή δεν εγγυάται ότι "πόσα" bytes θα διαβαστούν πχ1. όταν το αρχείο αναφέρεται σε ένα τηλέτυπο που μέγιστο αριθμό έχει μια γραμμή bytes, πχ2. όταν η address του byffer δεν είναι σωστή κ.α.

Όταν το "αποτέλεσμα" είναι ο αριθμός O σημαίνει ότι ο Δείχτης κτύπησε το τέλος του αρχείου, δηλαδή μηδέν bytes απομένουν να διαβαστούν.

Όταν γράφουμε πάνω σε ένα αρχείο μόνο τα bytes που θέλουμε να αλλάξουμε επηρεάζονται.Αυτά προσδιορίζονται από το Δείχτη του συστήματος και τη παράμετρο "πόσα".Εάν το τελευταίο byte που θέλουμε να γράψουμε έχει θέση πέρα από το τωρινό τέλος του αρχείου το αρχείο επιμηκείνεται.

Άμεση (Random) Προσπέλαση στα Αρχεία

Η άμεση προσπέλαση σε συγκεκριμένο byte, χωρίς να "δούμε" άλλα bytes που μεσολαβούν μεταξύ αρχής του αρχείου (byte O) και του συγκεκριμένου, γίνεται απλά με την μετακίνηση του Δείχτη που διατηρεί το σύστημα για κάθε αρχείο στην επιθυμητή θέση.Αυτό είναι δουλειά της εντολής seek :

27                                           29                   -2
θέση  : = seek (Προς.Αρχ, Αφετηρία,Απόσταση)

"θέση" είναι που θέλουμε να σταθεί ο Δείχτης πάνω σε ποιό byte.Aυτό προσδιορίζεται από τους παραμέτρους που λένε πχ. -2 bytes ξεκινώντας από το τριακοστό byte (δηλαδή byte 29).
O Δείχτης τοποθετείται στο byte 27.Tώρα το επόμενο read η write θα αφορά αυτό το byte.Το seek δεν εφαρμόζεται πάνω σε τηλέτυπο,χαρτοταινία . (ΓΙΑΤΙ ;)

Κινητό Σύστημα Αρχείων

Το Σύστημα Αρχείων που εξετάσαμε μέχρι τώρα λειτουργεί κάτω από την υπόθεση ότι όλα τα αρχεία βρίσκονται πάνω σ' ένα μαζικό μέσο αποθήκευσης (single storage volume).Tο Σύστημα Αρχείων μπορεί να επεκταθεί πάνω σ' άλλα μέσα αποθήκευσης (σ ' άλλους μηχανισμούς [devices]).Bέβαια η ρίζα (Root) του Συστήματος Αρχείων βρίσκεται πάντοτε στο ίδιο μέσο.Η επέκταση γίνεται με την προσάρτηση του νέου μέσου (volume) πάνω στο Δέντρο.

kinsustimaarxeion.jpg (38086 bytes)

Η εντολή mount Α / der / dk1 προσάρτει το (Ανεξάρτητο) κινητό σύστημα αρχείων Β σαν υπό-κατάλογο του καταλόγου Α.Μετά την προσάρτηση δεν υπάρχει διαφορά μεταξύ των αρχείων πάνω στα δύο μέσα (volumes)
ΠΕΡΙΟΡΙΣΜΟΣ : δεσμοί (links) μεταξύ των αρχείων που βρίσκονται πάνω σε διαφορετικά μέσα αποθήκευσης (direct access storage devices) δεν επιτρέπονται ΓΙΑΤΙ ;

Η εντολή umount / der / dk1 αποσπά το υπό - Σύστημα αρχείων Β, που βρίσκεται πάνω στο   κινητό μέσο αποθήκευσης στο δίσκο dk1.Kάθε απόπειρα προσπέλασης πχ. cat    A / x αρχείου του Α θα δώσει σφάλμα.

Εκτύπωση

Σε κάθε σύστημα με πολλούς ταυτόχρονους χρήστες (multi-user environment) για να αποφύγει την εμπλοκή που προκύπτει αν στέλνουμε στον εκτυπωτή "ταυτόχρονα" εκτυπώσεις το Σύστημα χρησιμοποιεί την τεχνική spooling (τυλίγω πάνω σε κύλινδρο).Αυτή η τεχνική επιτρέπει   στον χρήστη να δίνει εντολή για εκτύπωση αρχείων του καθώς προκύπτει η ανάγκη ενώ το Σύστημα οργανώνει την εκτύπωση των στοιχείων Εξόδου με τάξη.Το UNIX περιλαμβάνει διάφορες τέτοιες εντολές (utilities) ανάλογα με τι είδους εκτυπωτές υπάρχουν πάνω στο Σύστημα. Εφαρμόζοντας την τεχνική spooling οι εντολές λειτουργούν με την αντιγραφή των αρχείων για εκτύπωση πάνω σε προσωρινά αρχεία του δίσκου και μετά ένας αριθμός διαδικασιών δευτερεύουσας προτεραιότητας (background processes) τα εκτυπώνουν ένα προς ένα.Για εκτύπωση έχουμε την εντολή lp (line printer) με παραμέτρους τα ονόματα αρχείων (ου), τον αριθμό αντιγράφων, το είδος εκτυπωτή.Η εντολή cancel αποσύρει την εντολή για εκτύπωση.

Λογιστικά

Το UNIX διαθέτει ένα αριθμό αρχείων (log files) πάνω τους καταγράφει τις δραστηριότητες του Συστήματος. Σ΄αυτά αντιστοιχούν διαδικασίες (utilities) που εκτυπώνουν τα στοιχεία που συσωρεύονται στα log files.Τα στοιχεία αυτά χρησιμοποιούνται για να προσδιοριστεί το είδος χρήσης του Συστήματος, να εντοπιστεί η ανάγκη για περισσότερη μνήμη, περισσότερο χώρο αποθήκευσης πάνω σε δίσκους,τερματικά, το κόστος χρήσης από διάφορα τμήματα χρηστών.

Το Σύστημα έχει δυο log files ένα για Λογιστικά Ανά διαδικασία (per process). Πάνω σ' αυτό καταγράφεται το όνομα του προγράμματος που εκτελέστηκε, το χρόνο που πέρασε στο Σύστημα, το χρόνο χρήσης της Κεντρικής Μονάδας Επεξεργασιών (CPU), το μέγεθος κύριας μνήμης, τον αριθμό Ι/Ο εντολών για Είσοδο / Έξοδο, τη ταυτότητα του χρήστη (id of process owner), το όνομα του τερματικού που ξεκίνησε η process και ένα αρχείο για Λογιστικά Ανά Είσοδο στο Σύστημα (per login). To Σύστημα καταγράφει πάνω του το όνομα του Χρήστη, το χρόνο ΚΜΕ, το χρόνο σύνδεσης του τερματικού, τον αριθμό processes που εκτελέστηκαν, πληροφορίες σχετικά με την χρήση των Δίσκων.

Ασφάλεια Αρχείων

Η εντολή chown Makis Aρχείο Τ αλλάζει τον ιδιοκτήτη του αρχείου. Η εντολή chgrp. έτος Δ' Αρχείο αλλάζει την ομάδα - ιδιοκτήτη   του αρχείου "ΑρχείοΤ". Η εντολή chmod ρ ΑρχείοΤ αλλάζει τους περιορισμούς προσπέλασης πάνω στο αρχείο.Η παράμετρος ρ παίρνει τις παρακάτω τιμές :

O (- - -)        καμιά προσπέλαση
1 (- - -)        προσπέλαση για εκτέλεση μόνο
2 (w w -)     προσπέλαση για γράψιμο μόνο
3 (w w x)     προσπέλαση για γράψιμο και εκτέλεση
4 (r - -)        προσπέλαση για διάβασμα μόνο
5 (r - x)        προσπέλαση για διάβασμα και εκτέλεση
6 (r w x)      προσπέλαση για διάβασμα ,εκτέλεση και γράψιμο

Όταν ζητάμε το περιεχόμενο ενός καταλόγου Χ   ls   -l   X , με την παράμετρο  -l ζητάμε μακρά αναφορά (long), το Σύστημα απαντά :

Αρχείο 1         19/7/84         Γιάννης         215            r - x              - - x
     Aρχείο 2           8 /8/88         Πέτρος           7           I group        I άλλος   

Η εντολή su ακολουθούμενη από το password μετατρέπει τον χρήστη σε super -user με κανένα περιορισμό προσπέλασης.

~~~~~~~~~~

Υλοποίηση του Συστήματος Αρχείων (ΣΑ)

Κάθε μέσο αποθήκευσης (storage volume) που χρησιμοποιεί το ΣΑ έχει μια χαρακτηριστική δομή (format).To format ενός δίσκου για το Λειτουργικό Σύστημα 05/32 είναι διαφορετικό από αυτό του UNIX.

Aς υποθέσουμε ότι έχουμε ένα δίσκο με χωρητικότητα 67 Μbyte και η κύρια μνήμη της μηχανής είναι τέτοια που ζητά το χωρισμό του δίσκου σε τρεις φανταστικούς δίσκους (virtual disks), o καθένας είναι ένα Ειδικό Αρχείο με ονόματα και περιεχόμενο:

1. / dev / si O         περιέχει τον κατάλογο Root, system source,libraries, εντολές.Αποτελείται απο 20.000 blocks
                               με 1600 block κλεισμένα για swap area από τον scheduler.Είναι μονίμος mounted
                               (φορτωμένος).

2. / dev / si 1         περιέχει όλους τους χρήστες, εντολές, τα αρχεία χρηστών, είναι φορτωμένο μονίμως, με 64000
                              blocks μέγεθος.

3. / dev / si 2         Με 47000, χώρος για διάφορες πληροφορίες έμμεσης χρήσης, δεν είναι φορτωμένος μόνιμα.

Σημείωση:
20,000 x 512 + 64,000 x 512 = 67M byte κάθε μπλοκ έχει μέγεθος 512 = 1/2 Κ bytes

Tα μπλοκ του κάθε φανταστικού δίσκου είναι αριθμημένα από 0 - (Ν - 1) όπου Ν είναι το μέγεθος του φανταστικού δίσκου (φ.δ.).Η οργάνωση του κάθε φ.δ. έχει ως εξής:

Mπλοκ

mplok.jpg (33333 bytes)

Τι είναι το SUPER-BLOCK;

Σ' αυτό το χώρο του φ.δ. καταγράφεται η κατάσταση του Σ.Α. Βρίσκεται εντός κυρίας μνήμης όταν το UNIX "τρέχει" και ανανεώνεται πάνω στο Δίσκο κάθε 30''.Αυτό είναι ένα μέτρο προστασίας από βλάβες που "ρίχνουν" το Σύστημα (System Failures).Έχει το εξής περιεχόμενο :

1. Πόσα block έχουν δωθεί για i-nodes
2. To μέγεθος του Σ.Α. σε block
3. To χώρο FREE LIST, από block ελεύθερα για χρήση
4. To χρόνο της ημέρας

Ο αριθμός των block που χρησιμοποιούνται για i-nodes εξαρτάται από το μέγεθος του Σ.Α. και υπολογίζεται όταν το Σ.Α. δημιουργείται, παίρνοντας υπ' όψη ένα μέσο όρο για το μέγεθος αρχείων. Όταν ένα block παραχωρείται σ' ένα αρχείο ο αριθμός του είναι

1. + 3.  <  Αριθμ. BLOCK    <  => γρήγορος έλεγχος Σ.Α.

Όπως αναφέραμε προηγούμενα, ένας κατάλογος (directory) υλοποιεί την αντιστοιχεία μεταξύ ονομάτων αρχείων (file names) και προσδιοριστών αρχείων (file descriptors) που λέγονται i -numbers και χρησιμεύουν στην προσπέλαση αρχείων.

Προσωπικό                  <--- όνομα καταλόγου
Μισθοί                7
Φόροι                 15
Υπάλληλοι         3
Εργάτες            19 <--- index number (συντ. i-number)
(όνομα αρχείου)

Το στοιχείο i-number χρησιμοποιείται σαν δείχτης index πάνω στον πίνακα i-list για προσπέλαση στη πληροφορία που περιγράφει το συσχετιζόμενο αρχείο και λέγεται i-node.

i-list.jpg (10466 bytes)

Ένας i-node περιγράφει στο σύστημα το συσχετιζόμενο αρχείο περιέχει την παρακάτω πληροφορία :

1. Το i-node  είναι σε χρήση ή όχι
2. Τις θέσεις addresses που κρατάει το αρχείο πάνω στο πραγματικό δίσκο η ταινία.Αποτελείται από 8 words.
3. To είδος αρχείου (απλό, Κατάλογος, Ειδικό)
4. Μικρό ή Μεγάλο  αρχείο
5. Πότε έγινε η τελευταία προσπέλαση/τροποποίηση
6. Το μέγεθος του αρχείου
7. Το σύνολο δεσμών links πάνω στο αρχείο από άλλα αρχεία
8. Ταυτότητα ιδιοχτήτη
9. Άδεια permission για είδος προσπέλασης (read,write,execute) από χρήστες (owner,group, others δηλαδή ιδιοχτήτη,ομάδα,άλλοι)

Η εκτέλεση εντολής open ή create έχει σαν αποτέλεσμα τη μετατροπή μιας έκφρασης προσδιορισμού αρχείου
σ' έναν i-number πχ. :

i-number : = create (/usr/games/σκακι, O)
                              path name *

Aπό το πίνακα i-list παίρνεται ένας i-node που δεν χρησιμοποιείται και ο αντίστοιχος i-number.Στο κατάλογο που περιέχει το αρχείο που δημιουργείται "σκάκι" μπαίνει το όνομα του αρχείου και ενός i-number.

/ usr / games
ντάμα     
:
φιδάκι
:
:
σκάκι     88

* λέμε path name γιατί είναι ο δρόμος που οδηγεί στο αρχείο

path name.jpg (14003 bytes)

Δεσμός (link) πάνω σ' ένα υπαρκτό αρχείο γίνεται ως εξής :

                                                            ln         Νέο         Υπαρκτό

Πρώτα φτιάχνεται ένα νέο όνομα μέσα σ' ένα κατάλογο πχ. στο τωρινό κατάλογο εργασίας. Ο i-number του υπάρχοντος αρχείου αντιγράφεται σ' αυτόν που αντιστοιχεί στο νέο όνομα.Η παράμετρος (7) του i-node που αντιστοιχεί στο Υπαρκτό αρχείο αυξάνεται +1.

Το σβήσιμο αρχείου

    rm    Νέο

μειώνει αυτή την παράμετρο -1. Όταν η παράμετρος γίνει (7) γίνει μηδέν τότε ο αντίστοιχος i-node μαρκάρεται "κενός" και όλα τα block που δόθηκαν στο αρχείο (δες παρακάτω) επιστρέφονται στο σύστημα.

Πως παραχωρείται ο χώρος Δίσκου σε αρχεία

Ο χώρος Δίσκου (σταθερός ή κινητός ,fixed removable) που φιλοξενεί ένα Σ.Α. διατηρείται σε block μεγέθους 512 bytes = 1/2 Kb με φανταστικές (συμβατικές) διευθύνσεις (adresses) O - όριο Μηχανισμού. Όταν το Σ.Α. χρειάζεται χώρο σε Δίσκο ζητά ένα block.

O χώρος FREE LIST που βρίσκεται στο χώρο SUPER BLOCK διερευνάται και εάν βρεθεί αχρησιμοποίητο block επιστρέφεται η διεύθυνση του = αριθμός του block.

O xώρος FREE LIST έχει την εξής δομή :

freelist.jpg (28115 bytes)

Ο πίνακας των 100 θέσεων λειτουργεί σα δέσμη.Η πρώτη θέση δείχνει μια αλυσίδα block το κάθε ένα αποτελείται από 256 words το κάθε word είναι ένα pointer σε block μεγέθους 512 bytes που παραχωρείται σε αρχεία.Οι υπόλοιπες 99 θέσεις περιέχουν τον αριθμό ενός block που είναι ελεύθερο για χρήση η τον αριθμό O που σημαίνει πχ. το block 98 είναι σε χρήση.

Δημιουργία / Απόσπαση (σβήσιμο) Αρχείου

Αρχικά όταν ένα αρχείο δημιουργείται του δίνεται ένας i-node από τον πίνακα i-list.O πίνακας ερευνάται μέχρι να βρεθεί i-node με παράμετρο (1) να έχει τιμή "όχι σε χρήση". Ο δείχτης του πίνακα i-number που αντιστοιχεί τοποθετείται στον κατάλογο (directory) που περιέχει -, νέο αρχείο μαζί με το όνομα του αρχείου.Οι υπόλοιπες πληροφορίες τοποθετούνται στον i-node.

Κατά την απόσταση αρχείου ο i-node επιστρέφεται και τα block των 512bytes που δόθηκαν σ'αυτό επιστρέφοντας στο χώρο FREE LIST.

Προσπέλαση

Eδώ μιλάμε μόνο για απλά αρχεία και Καταλόγους.Η προσπάθεια σε κάποιο block ενός αρχείου καθορίζεται στο σύστημα από το εάν είναι μικρό ή μεγάλο αρχείο.

Μικρά
Η παράμετρος (2) του i-node αποτελείται από 8 words που είναι οι αριθμοί των block.
Άρα όριο = 8 x 512 = 4096 = 4K bytes

Mεγάλα
(α) Το word 8 είναι μηδέν
                                    όριο = 7 x 256 x 512 = 7/8 M bytes

prospelasi.jpg (11935 bytes)

(β) Το word 8 # από το μηδέν άρα
                                                    όριο = (7 + 256) 256 x 512 = 34 M bytes

Tα προηγούμενα αφορούσαν απλά αρχεία και καταλόγους.Όταν έχουμε μια εντολή Ε/Ε πάνω σε ένα αρχείο που το i-node δείχνει ότι πρόκειται για ειδικό αρχείο δηλαδή αντιστοιχεί σε κάποιο μηχανισμό (device) τότε η παράμετρος (2) του i-node που αποτελείται από 8 words χρησιμοποιέιται ως εξής:

Οι 7 τελευταίες θέσεις αγνοούνται και η πρώτη θέση (το πρώτο word) πέρνεται σαν ένα ζεύγος bytes που συνιστούν το Major device (πρώτο byte) και το minor device (δεύτερο byte).

To Major device που προσδιορίζει το πρώτο byte ποιός disk drive οδηγός δίσκου που έχει σχέση με συγκεκριμένο controller θα επιλέγει κάποιο interface τηλετύπων.

Το Minor device επιλέγει ποιά ρουτίνα του συστήματος θα αναλάβει να διεκπεραιώσει την εντολή για Ε/Ε είσοδο/έξοδο.

Πως γίνεται το γράψιμο / διάβασμα πάνω σε αρχείο

Στον χρήστη το γράψιμο / διάβασμα πάνω σε αρχείο φαίνεται να γίνεται κατευθείαν δηλαδή μετά από write από χώρο εργασίας του χρήστη στο αρχείο.Ο χώρος εργασίας δεν χρειάζεται πλέον όμως τα πράγματα ,δεν είναι όπως φαίνεται.Το σύστημα χρησιμοποιεί ένα αρκετά πολύπλοκο μηχανισμό από buffers που μεσολαβούν μεταξύ χώρων εργασίας και αρχείου.Στόχος των συστημάτων είναι να περιορισθούν το μέγιστο οι προσπελάσεις σε δίσκους , ώστε οι διάφορες διεργασίες να μην "κολάνε" περιμένοντας για κάποιο disk access.Αυτό βέβαια σε βάρος του χώρου Κύριας Μνήμης που καταλαμβάνουν τα byffers. (σημείωση: Η σχέση χώρου - χρόνου στη μηχανή. )




belosback.jpg (5806 bytes)