Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016
Κεφάλαιο 2: Σύστημα Αρχείων
Τα προγράμματα που εκτελούνται (συμπεριλαμβανομένου του Λ.Σ.) είναι αποθηκευμένα στη μνήμη RAM, η οποία όμως δε διατηρεί μόνιμα το περιεχόμενό της. Για αυτό το λόγο τόσο τα δεδομένα μας όσο και τα προγράμματά μας αποθηκεύονται μόνιμα σε κάποια συσκευή περιφερειακής μνήμης (σκληρό δίσκο, Οπτικό δίσκο, Flash Memory κλπ)
Οι συσκευές περιφερειακής μνήμης περιέχουν συνήθως πολλά αρχεία, έτσι για την ευκολότερη πρόσβαση, αυτά οργανώνονται από το λειτουργικό σύστημα με κάποια λογική δομή που λέγεται Σύστημα Αρχείων (File System). Κάθε Λ.Σ. υποστηρίζει ένα ή περισσότερα συστήματα αρχείων, π.χ. : Windows: FAT, NTFS LINUX: ext, ext2, ext3, ext4 κ.α. Το σύστημα αρχείων δεν ασχολείται με την ερμηνεία και αξιοποίηση του περιεχομένου των αρχείων. Αυτό το κάνουν τα προγράμματα εφαρμογών.
Το Σύστημα Αρχείων διατηρεί μια σειρά από πληροφορίες για κάθε αρχείο, όπως: Όνομα Μέγεθος Ημερομηνία Δημιουργίας Ημερομηνία Τροποποίησης Ημερομηνία Τελευταίας Πρόσβασης Δικαιώματα Χρήσης Ορατό/Αόρατο Μόνο Ανάγνωσης Που βρίσκονται πραγματικά αποθηκευμένα τα δεδομένα του
Ο πιο συνηθισμένος τρόπος οργάνωσης των αρχείων που έχει επικρατήσει σε όλα τα μοντέρνα Λ.Σ. είναι η Ιεραρχική Δομή (ή αλλιώς δενδρική). Κεντρικός Φάκελος (root) Φάκελος (Directory) Υπο-Φάκελος (Sub - Directory) Αρχεία
Το Σύστημα Αρχείων προσφέρει: Οργάνωση Ονοματολογία Έλεγχο προσπέλασης (δικαιώματα και προστασία) Φυσική αποθήκευση στο μέσο Αναζήτηση αρχείου Εκτέλεση προγράμματος Δημιουργία, Μετονομασία, Διαγραφή, Αντιγραφή αρχείων και φακέλων
Φάκελος Αρχείο Για το αρχείο F5: Απόλυτοo Όνομα: \D3\D4\F5 Σχετικό Όνομα από το D3: D4\F5 Συνήθως ένα όνομα αρχείου έχει τη μορφή : «Όνομα». «Επέκταση» Η επέκταση δηλώνει τον τύπο του αρχείο (πρόγραμμα, αρχείο εφαρμογής) και δηλώνει την εφαρμογή που μπορεί να χειριστεί και να ερμηνεύσει το αρχείο.
Τύποι Αρχείων: Αρχεία δεδομένων σε δυαδική μορφή: Το περιεχόμενό τους μπορούμε να το δούμε μέσω της αντίστοιχης εφαρμογής Αρχεία Κειμένου: Περιέχουν απλό κείμενο (ASCII ή UNICODE) Αρχεία Προγραμμάτων (Program Files): περιέχουν τον εκτελέσιμο κώδικα προγραμμάτων. Αρχεία Συστήματος (System Files): Περιέχουν δεδομένα για αποκλειστική χρήση από το Λ.Σ.
Φυσική Οργάνωση ενός Δίσκου Κάθε δίσκος αποτελείται από 1 ή περισσότερα Πλατό (Platters) καθένα από τα οποία έχει δύο επιφάνειες (Surfaces) την πάνω και την κάτω. Κάθε επιφάνεια χωρίζεται σε δακτυλίους που ονομάζονται Ίχνη (tracks). Κάθε ίχνος χωρίζεται σε τμήματα που ονομάζονται Τομείς (Sectors). Όλοι οι τομείς έχουν ίδιο μέγεθος σε Bytes. Τα δεδομένα που αποθηκεύονται σε ένα τομέα αποτελούν μια ομάδα δεδομένων block. Το μέγεθος του Block είναι χαρακτηριστικό του λειτουργικού συστήματος. Ο δίσκος δε διαβάζει μεμονωμένα Bytes. Η Ελάχιστη ποσότητα που μπορεί να διαβαστεί ή να γραφεί είναι ένα block. Μεγάλο μέγεθος block οδηγεί σε σπατάλη χωρητικότητας (μια που μέρος του block μένει ανεκμετάλλευτο). Μικρό μέγεθος block οδηγεί σε καλύτερη εκμετάλλευση χώρου αλλά μεγαλύτερους χρόνους αναζήτησης στο δίσκο.
Φυσική Οργάνωση ενός Δίσκου Η κεφαλή μπορεί να κινείται από ίχνος σε ίχνος. Όταν βρεθεί στο σωστό ίχνος, η επιφάνεια περιστρέφεται προκειμένου η κεφαλή να φτάσει στο σωστό τομέα. Στους μαγνητικούς δίσκους η αποθήκευση γίνεται με το μαγνητισμό (1) ή απομαγνητισμό (0). Στους οπτικούς δίσκους μια κεφαλή Laser «καίει» την επιφάνεια δημιουργώντας έτσι τη δυαδική πληροφορία 0 και 1.
Φυσική Οργάνωση ενός Δίσκου Η χωρητικότητα του δίσκου υπολογίζεται : Χωρητικότητα = (Αριθμός Επιφανειών) Χ (Αριθμός Ιχνών) Χ (Αριθμό Τομέων) Χ (Χωρητικότητα Τομέα) Παράδειγμα: Σκληρός Δίσκος με δύο πλατό διπλής όψης, με 1024 ίχνη ανά επιφάνεια, 1024 τομείς ανά ίχνος και χωρητικότητα τομέα 4096 Bytes θα έχει συνολική χωρητικότητα: 4 Χ 1024 Χ1024 Χ 4096 Bytes = 16 GB (Gigabytes) Αναλυτικά: 4096 Bytes = 4KB. 4KB X 1024 = 4 MB 4MB X 1024 = 4 GB 4 επιφάνειες Χ 4GB = 16 GB
Προσπέλαση Δίσκων Εντολή προγράμματος για Ανάγνωση ή Εγγραφή στο Δίσκο Ο Μεταγλωττιστής (Compiler) μεταφράζει την εντολή στην αντίστοιχη κλήση του Λ.Σ. Το Λ.Σ. εκτελεί την εγγραφή ή την Ανάγνωση. Οι σχετικές αιτήσεις μπαίνουν σε ουρά και εξυπηρετούνται.
Χρόνος Εξυπηρέτησης Λειτουργίας Ανάγνωσης - Εγγραφής Αναμονή στην ουρά του Λ.Σ. Wait Time Χρόνος μεταφοράς των δεδομένων Transfer Time Χρόνος για να φτάσει η κεφαλή στο σωστό ίχνος (Seek Time) Χρόνος για περιστροφή στο σωστό τομέα Latency Time Οι σκληροί δίσκοι έχουν χρόνους αναζήτησης της τάξης των msec (10-3 ) ενώ η μνήμη RAM της τάξης των nsec (10-9 ). Η μνήμη RAM λοιπόν είναι χιλιάδες φορές πιο γρήγορη από το σκληρό δίσκο. Η προσπέλαση στο δίσκο είναι η κύρια αιτία καθυστέρησης προγραμμάτων που εκτελούν διαδικασίες εισόδου / εξόδου δεδομένων στο δίσκο.
Ένα αρχείο δεν καταλαμβάνει απαραίτητα συνεχόμενους τομείς (blocks) στο δίσκο. Αυτό γίνεται για την καλύτερη εκμετάλλευση του χώρου του δίσκου. Ο χρήστης δε χρειάζεται να ξέρει σε ποιους τομείς έχει αποθηκευτεί το αρχείο του. Το Λ.Σ. αναλαμβάνει να χειριστεί τις λεπτομέρειες. Μέθοδοι εκχώρησης χώρου σε αρχεία: Συνεχόμενη εκχώρηση (continuous allocation) Συνδεδεμένη εκχώρηση (Linked allocation)
Συνεχόμενη εκχώρηση (continuous allocation) Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 Block 8 Το αρχείο αποθηκεύεται σε συνεχόμενα Blocks. Όταν δημιουργείται το αρχείο πρέπει να δηλωθεί το μέγιστο μέγεθός του ώστε το ΛΣ να δεσμεύσει τα απαιτούμενα γειτονικά blocks. Το πρόβλημα είναι ότι το μέγιστο μέγεθος μπορεί να μην είναι εξ αρχής γνωστό με αποτέλεσμα είτε να δεσμεύεται κενός χώρος άσκοπα είτε όταν γεμίσει ο δεσμευμένος χώρος να απαιτείται η επανα-κατασκευή (rebuild) του αρχείου σε νέο μεγαλύτερο χώρο.
Αρχείο Συνδεδεμένη εκχώρηση (Linked Allocation) Block 1 Block 3 Block 7 NIL Το αρχείο αποθηκεύεται σε διάσπαρτα blocks. Κάθε block περιέχει ένα δείκτη στο επόμενο block του αρχείου. Το τελευταίο block έχει δείκτη σε NIL. Ο φάκελος (κατάλογος) κρατάει ένα δείκτη στο πρώτο block του αρχείου. Τα ελεύθερα blocks καταχωρούνται σε μια λίστα και το Λ.Σ. αντλεί από εκεί αυτά που χρειάζεται για να επεκτείνει το αρχείο. Η εκμετάλλευση του χώρου είναι πολύ καλή αφού οποιοδήποτε ελεύθερο block μπορεί να χρησιμοποιηθεί. Το σύστημα υστερεί στην τυχαία προσπέλαση ενός αρχείου αφού αυτό βρίσκεται διασκορπισμένο σε τυχαία blocks. Προσφέρεται περισσότερο για σειριακή προσπέλαση.
Εσωτερικός Κατακερματισμός Block 1 Block 2 Block 3 Block4 Ένα block είναι ο ελάχιστος χώρος που μπορεί να ανατεθεί από το Λ.Σ. σε ένα αρχείο. Επειδή όμως σπάνια ένα αρχείο έχει μέγεθος ακέραιο πολλαπλάσιο του μεγέθους ενός block, κάποια Bytes σχεδόν πάντα θα περισσεύουν ανεκμετάλλευτα. Αυτό το φαινόμενο ονομάζεται Εσωτερικός Κατακερματισμός Άσκηση: Ένα αρχείο με μέγεθος 5000 Bytes σε ένα Λειτουργικό Σύστημα με block 512 Bytes, πόσα blocks θα καταλάβει; Πόσος χώρος θα πάει χαμένος; Απάντηση: 5000 / 512 = 9,76. Άρα θα χρειαστούν 10 blocks αφού τα blocks διατίθενται ολόκληρα. Θα διατεθούν λοιπόν από το Λ.Σ. 512 Χ 10 = 5120 Bytes, άρα 120 Bytes περισσότερα από όσα χρειάζεται το αρχείο.
Εξωτερικός Κατακερματισμός Με τη διαρκή χρήση του δίσκου και καθώς τα νέα αρχεία δημιουργούνται, υπάρχοντα αρχεία αλλάζουν μέγεθος, αρχεία διαγράφονται, εν καιρώ τα αρχεία καταλήγουν διασκορπισμένα σε τυχαία σημεία του δίσκου με αποτέλεσμα να μειώνονται οι επιδόσεις εγγραφής και ανάγνωσης αρχείων. Το φαινόμενο αυτό λέγεται Εξωτερικός Κατακερματισμός Κατακερματισμένος Δίσκος: Τα διαφορετικά χρώματα δηλώνουν διαφορετικά αρχεία. Από-κατακερματισμένος Δίσκος: Τα αρχεία έχουν αναδιαταχτεί ώστε να καταλαμβάνουν συνεχόμενα blocks στο δίσκο.
Λειτουργικό Σύστημα και Ασφάλεια Τα προσωπικά αρχεία των χρηστών ενός υπολογιστικού συστήματος έχουν αξία που μπορεί να είναι: Οικονομική Επαγγελματική Συναισθηματική Το Λειτουργικό σύστημα περιλαμβάνει μηχανισμούς διασφάλισης της ακεραιτότητας και της ασφάλειας των αρχείων.
Λειτουργικό Σύστημα και Ασφάλεια Ακεραιότητα Με τον όρο Ακεραιότητα αναφερόμαστε στην προστασία συστημάτων και πληροφοριών από αλλοίωση Ασφάλεια Τα μέτρα που προστατεύουν από: Φυσικές καταστροφές και διακοπές ρεύματος Βλάβες του Υλικού Βλάβες από λανθασμένο χειρισμό Βλάβες από σκόπιμο κακό χειρισμό (δολιοφθορά) Ακούσια αλλοίωση αρχείων Κλοπή ή διαρροή εμπιστευτικών αρχείων Κακόβουλο λογισμικό όπως οι ιοί
Λειτουργικό Σύστημα και Ασφάλεια Μηχανισμοί προστασίας του Λ.Σ. Εργαλεία λήψης αντίγραφων ασφαλείας Έλεγχος πρόσβασης χρηστών στα αρχεία Διαβάθμιση πρόσβασης στα αρχεία Ενσωματωμένοι μηχανισμοί ασφάλειας όπως firewall και antivirus Δυνατότητα Versioning (τήρηση ιστορικού απ όπου μπορούμε να επαναφέρουμε το αρχείο σε προηγούμενη ημερομηνία).