ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. E/E, Δίσκοι, Συστήματα αρχείων

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα αρχείων, δίσκοι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα αρχείων, δίσκοι, Ε/Ε


Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Οργάνωση Υπολογιστών (IΙI)

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι. Συστήματα Αρχείων. Επ. Καθ. Κ. Λαμπρινουδάκης

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Εισαγωγή στα Λειτουργικά Συστήματα

Εισαγωγή στα Λειτουργικά Συστήματα

Εισαγωγή στα Λειτουργικά

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα (Λ/Σ)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΗΜΑ ΑΡΧΕΙΩΝ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

Αποθήκευση εδομένων. ομή ενός Σ Β. Εισαγωγή Το «εσωτερικό» ενός ΜΕΡΟΣ Β : Η (εσωτερική) αρχιτεκτονική ενός Σ Β είναι σε επίπεδα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Συστήματα Αρχείων (Σ.Α.)

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Λιβανός Γιώργος Εξάμηνο 2017Β

Μάθημα 8: Διαχείριση Μνήμης

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Λειτουργικά Συστήματα (Λ/Σ)

Μάθημα 2 ο ΟΡΓΑΝΩΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

Κεφάλαιο 4: Λογισμικό Συστήματος

Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 3

Εισαγωγή στην Πληροφορική

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts

Λειτουργικά Συστήματα Η/Υ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Σύστηµα Αρχείων File System

Κεφάλαιο 4. Λογισμικό Συστήματος

Εικονική Μνήμη (1/2)

Αποθήκευση και Οργάνωση αρχείων. Βάσεις Δεδομένων Μάθημα 2ο Διδάσκων: Μαρία Χαλκίδη

Λειτουργικά Συστήματα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

ΠΛΗΡΟΦΟΡΙΚΗ I. 3 η ΔΙΑΛΕΞΗ Περιφερειακές Μνήμες

Κεφάλαιο 2. Διδακτικοί Στόχοι

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στα Λειτουργικά Συστήματα

Λειτουργικά Συστήματα Ι. Συστήματα Εισόδου/Εξόδου (I/O --- Input/Output)

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εισαγωγή στα Λειτουργικά

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Memory)

Λειτουργικά Συστήματα Ι. Συστήματα Αρχείων (File Systems)

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Ερµήνευση Boot Sector :

Λειτουργικά Συστήματα (ΗΥ321)

Λειτουργικά Συστήματα Η/Υ

Σκοπός Μαθήματος. Λειτουργικά Συστήματα Η/Υ. Γενικές Πληροφορίες. Στόχοι Μαθήματος ΚΕΦΑΛΑΙΟ 1 - ΕΙΣΑΓΩΓΗ. Θεωρία: Εργαστήριο: Κεφάλαιο 1 «Εισαγωγή»

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Επανάληψη

Το Λειτουργικό Σύστημα MS-DOS

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Λειτουργικά Συστήματα (Λ/Σ)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Διδάσκοντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη Λειτουργικά Συστήματα

Αρχιτεκτονική Υπολογιστών

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Επανάληψη

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Βασικές Έννοιες της Πληροφορικής

Λειτουργικά Συστήματα (ΗΥ222)

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor

Αρχιτεκτονική υπολογιστών

Transcript:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ E/E, Δίσκοι, Συστήματα αρχείων Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin and Gange, Operating Systems Concepts. Deitel, Deitel and Choffnes, Operating Systems Λειτουργικά Συστήματα, Γ.Α. Παπαδόπουλος, Πανεπιστήμιο Κύπρου Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ Systems Programming in C, A.D. Marshal, University of Cardiff Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ E/E, Δίσκοι, Συστήματα αρχείων Ε/Ε Δίσκοι Συστήματα αρχείων Υλοποίηση Βελτίωση απόδοσης

Λειτουργίες Ε/Ε και ΛΣ Απεικόνιση / Προσπέλαση συσκευών Ε/Ε: Ποιές είναι οι διαθέσιμες συσκευές Ε/Ε; πώς τις αναγνωρίζει το λ.σ.; Με ποιές εντολές γλώσσας μηχανής προσπελαύνονται για ανάγνωση-εγγραφή; Σε ποιές διευθύνσεις βρίσκονται οι ενταμιευτές των συσκευών Ε/Ε; Επικοινωνία ελέγχου / δεδομένων E/E: Προγραμματισμένη Ε/Ε ή Ε/Ε με Διακοπές; Με ποιο μηχανισμό μεταφέρονται τα δεδομένα από/προς τις συσκευές Ε/Ε; Υπάρχουν ειδικοί δίαυλοι; Υποστήριξη DMA; Σύγχρονη ή Ασύγχρονη επικοινωνία; Στοίβα λογισμικού συστήματος για Ε/Ε: Λογισμικό εξαρτώμενο από τη συσκευή Ε/Ε. Λογισμικό ανεξάρτητο από τη συσκευή Ε/Ε εκτελούμενο σε kernel mode. Λογισμικό ανεξάρτητο από τη συσκευή Ε/Ε εκτελούμενο σε user mode. Γενικευμένες διεπιφάνειες Ε/Ε.

Συσκευές Ε/Ε Μερικές τυπικές συσκευές Ε/Ε, κάρτες δικτύου και δίαυλοι καθώς και οι αντίστοιχες ταχύτητες μετάδοσης δεδομένων.

Προσπέλαση συσκευών Ε/Ε (1) Σχηματικό διαύλων και σύνδεση συσκευών Ε/Ε σε Pentium 4. Φαίνονται οι θύρες των και των συσκευών Ε/Ε. Tanenbaum, Modern Operating Systems 3και e, (c) ελεγκτές 2008 Prentice-Hall, Inc. Allδιαύλων rights reserved. 0-13-6006639

Προσπέλαση συσκευών Ε/Ε (2) Θύρα (Port / Slot): η φυσική υποδοχή σύνδεσης της συσκευής Ε/Ε με τη μητρική πλακέτα. Ελεγκτής (Controller): το υλικό/λογισμικό (firmware) που είναι υπεύθυνο για τη διασύνδεση μιας συσκευής E/E με το δίαυλο (και με το σύστημα). Κάθε ελεγκτής συσκευής εξειδικεύεται στον έλεγχο ενός τύπου συσκευής. Ο ελεγκτής συσκευής διαθέτει ένα τοπικό buffer (ενταμιευτής μνήμης). Η CPU μετακινεί δεδομένα από / προς την κύρια μνήμη (ή και CPU) προς /από τα τοπικά buffers. Οι λειτουργίες E/E γίνονται από τη συσκευή προς το τοπικό buffer του ελεγκτή. 6

Γλώσσα μηχανής και Ε/Ε (a) Εξειδικευμένη Ε/Ε: Οι θύρες Ε/Ε έχουν δικό τους χώρο διευθύνσεων και ειδικές εντολές γλώσσας μηχανής (b) Χαρτογραφημένη Ε/Ε (Memory-mapped I/O): οι θύρες Ε/Ε αντιμετωπίζονται ως θέσεις μνήμης και χρησιμοποιούνται απλές εντολές μεταφοράς δεδομένων από/προς τη μνήμη (c) Υβριδικό σχήμα.

Παράδειγμα διευθύνσεων Ε/Ε σε PC

Προγραμματισμένη Ε/Ε - Περιόδευση Πλήρης απασχόληση kernel και αναστολή προγράμματος χρήστη. Η ρουτίνα εκτύπωσης (σε kernel mode) έχει καταλάβει τη CPU και την κρατά μέχρι να τερματίσει τη λειτουργία Ε/Ε. Το πρόγραμμα χρήστη προφανώς δεν μπορεί να εκτελεστεί. Το while εκτελεί ελέγχει συνεχώς τη κατάσταση της συσκευής Ε/Ε. Όταν ο ενταμιευτής της συσκευής Ε/Ε είναι διαθέσιμος η ρουτίνα μεταφέρει δεδομένα προς εκτύπωση. Σε μικρο-ελεγκτές ή συστήματα πραγματικού χρόνου η διαδικασία λέγεται περιόδευση (polling) και μπορεί να γίνεται με ειδικό λογισμικό, όπου η CPU σε προκαθορισμένα χρονικά διαστήματα διακόπτει την εκτέλεση του προγράμματος και ελέγχει τις πηγές διακοπών.

Ανάκληση-εκτέλεση με διακοπές Στο τέλος κάθε κύκλου ανάκλησης-εκτέλεσης η CPU ελέγχει τo PSW. Aν υπάρχει διακοπή, η CPU μεταπίπτει σε kernel mode και ξεκινά μια σειρά ενεργειών με τη βοήθεια υλικού και λογισμικού για την εξυπηρέτηση της διακοπής με την εκτέλεση της Ρουτίνας Εξυπηρέτησης Διακοπής (Interrupt Service Routine, ISR).

Ελεγκτής Διακοπών (1) Ο ελεγκτής διακοπών (interrupt controller) είναι ξεχωριστό ολοκληρωμένο κύκλωμα που δέχεται αιτήσεις διακοπών από διάφορες συσκευές Ε/Ε, καθορίζει ποια έχει τη μεγαλύτερη προτεραιότητα (με βάση προκαθορισμένη ρύθμιση ή συνδεσμολογία) και τελικά παρέχει μια αίτηση διακοπής στη CPU, δηλαδή θέτει τα κατάλληλα bits στο PSW της CPU. Για την επιτάχυνση της διαδικασίας, κάθε πηγή διακοπής διαθέτει το δικό της άνυσμα διακοπής (interrupt vector), δηλαδή ένα κώδικο που βοηθά στην απευθείας πρόσβαση στην αντίστοιχη ρουτίνα εξυπηρέτησης διακοπής (Interrupt Service Routine, ΙSR). Το άνυσμα αποστέλεται στη CPU μόλις ζητηθεί (ack διακοπής από τη CPU).

Ελεγκτής Διακοπών (2) PSW Ακολουθία αρχικών βημάτων για την σύνδεση ελέγχου Ε/Ε μέσω ελεγκτή διακοπών: μετά το βήμα 3 η CPU εκτελεί τη ρουτίνα εξυπηρέτησης διακοπής.

Ε/Ε και διακοπές (1)

Ε/Ε και διακοπές (2) Όλες οι εντολές Ε/Ε είναι προνομιούχες εντολές. Έτσι ένα πρόγραμμα χρήστη δεν μπορεί ποτέ να αποκτήσει τον πλήρη έλεγχο ενός πόρου, και, από λάθος, να μην τον επιστρέφει. Ένα πρόγραμμα χρήστη ξεκινά λειτουργίες Ε/Ε μέσω κλήσεων συστήματος, με τη μορφή διακοπής λογισμικού (1). Ο έλεγχος περνά στο λ.σ. και η CPU τίθεται σε kernel mode (2). Ο πυρήνας εκτελεί την αίτηση (2) και επιστρέφει τον έλεγχο στην εντολή που ακολουθεί την κλήση συστήματος (3). Οι συσκευές ξεκινούν λειτουργίες Ε/Ε μέσω εξωτερικών διακοπών που διακόπτουν την εκτέλεση των προγραμμάτων χρήστη ή λ.σ. και εξυπηρετούνται από το λ.σ. αντίστοιχα.

Ε/Ε και διακοπές (3) (a) Κώδικας που εκτελεί ο kernel όταν εξυπηρετεί τη κλήση συστήματος. Προσοχή στην αναμονή στο while. Μόλις ληφθεί το ack από τον εκτυπωτή ο kernel αποχωρεί. (b) Κώδικας ρουτίνας εξυπηρέτησης διακοπής του εκτυπωτή. Τυπώνει -όποτε του δίνεται χρόνος από το λ.σ.- και στο τέλος ενημερώνει το kernel και τερματίζει.

Προτεραιότητα Διακοπών (1) Προκαθορισμένη σειρά προτεραιότητας μεταξύ των διαφόρων πηγών διακοπών που καθορίζει ποια θα εξυπηρετεί πρώτη όταν δύο ή περισσότερες απαιτήσεις φθάσουν ταυτόχρονα. Επίσης είναι προκαθορισμένο ποιες καταστάσεις θα μπορούν να διακόπτουν τον υπολογιστή καθώς αυτός θα εξυπηρετεί μια άλλη διακοπή (Maskable / Non-Maskable Interrupts). Το κατάλληλο Ιnterrupt Mask εφαρμόζεται στο PSW ώστε καποια bits του δεν λαμβάνονται υπ' όψη. Στο υψηλότερο επίπεδο προτεραιοτήτων βρίσκονται εκείνες οι απαιτήσεις για τις οποίες οποιαδήποτε καθυστέρηση ή διακοπή μπορεί να επιφέρει σημαντικές συνέπειες. Οι συσκευές με υψηλές ταχύτητες μεταφοράς, όπως οι δίσκοι έχουν υψηλή προτεραιότητα, ενώ αργές συσκευές, όπως το πληκτρολόγιο λαμβάνουν χαμηλή προτεραιότητα.

Προτεραιότητα Διακοπών (2) Προτεραιότητες Διακοπών. Maskable NonMaskable Interrupts.

Προτεραιότητα Διακοπών (3) Στην αρχιτεκτονική x86 (Pentium) υπάρχουν 256 8-bit ανύσματα διακοπών (0..255): 0..31 για Non-maskable interrupts : εξωτερικές διακοπές υλικου ή παγιδεύσεις / εξαιρέσεις (traps / exceptions) λογισμικού. 32..47 για Maskable interrupts: τυπικές εξωτερικές διακοπές από συσκευές Ι/Ο μέσω ελεγκτή διακοπών, IRQs. 48..255 για διακοπές λογισμικού (κλήσεις συστήματος). Το Linux χρησιμοποιεί το άνυσμα 128 (0x80) για κλήσεις συστήματος.

Εξυπηρέτηση Διακοπών 1. Μετάπτωση σε supervisor/kernel mode. Λήψη ανύσματος διακοπής. 2. Προσωρινή ακύρωση όλων των διακοπών με κατάλληλο Interrupt Mask. 3. Αν η διακοπή προέρχεται από κάποιο πρόγραμμα δηλώνεται οτι αναμένει εξυπηρέτηση. Αλλιώς απλά το πρόγραμμα διακόπτεται. 4. Αποθήκευση της κατάστασης (context) του προγράμματος που διακόπηκε. 5. Φόρτωση του PC με τη διεύθυνση εκκίνησης της ISR με βάση το άνυσμα διακοπής. 6. Εκκίνηση ISR. Επανενεργοποίηση διακοπών με βάση τη προτεραιότητα (Interrupt Mask) της εξυπηρετούμενης διακοπής. 7. Η ISR εκτελείται ως ρουτίνα συστήματος με κύκλο Ανάκλησης - εκτέλεσης και έλεγχο για τυχόν διακοπές (με βάση το Interrupt Mask). 8. Σε περίπτωση νέας διακοπής: ξανά από το βήμα 1. 9. Μόλις η ISR τελειώσει την εκτέλεση εκτελεί Return from Interrupt: επιστροφή σε προηγούμενη (διακοπείσα) διακοπή από το βήμα 6... 10...Ή (εν τέλει) Το πρόγραμμα που είχε προκαλέσει διακοπή ελευθερώνεται. 11. Επιστροφή στη κανονική εκτέλεση προγραμμάτων χρηστών από το λ.σ.

Direct Memory Access (DMA) (1) 5.

Direct Memory Access (DMA) (2) 1. Η CPU ζητά από τον ελεγκτή DMA να εκτελέσει Ε/Ε με μια συσκευή Ε/Ε. 2. Ο ελεγκτής DMA ειδοποιεί τον διαιτητή διαύλου και τη CPU (μέσω διακοπής). 3. H CPU στο τέλος του τρέχοντος κύκλου ανάκλησης-εκτέλεσης αποδέχεται (ack μέσω ρουτίνας εξυπηρέτησης διακοπής). 4. O ελεγκτής DMA καταλαμβάνει το δίαυλο. 5. Η CPU ενημερώνεται για την κατάληψη και ετοιμάζει τη καταγραφή κίνησης των δεδομένων (supervisor/kernel mode). Μπορεί να συνεχίσει σε λειτουργίες που δεν απαιτούν κατάληψη διαύλου. 6. Η συσκευή DMA εκτελεί τη μεταφορά δεδομένων. 7. Κατά τη μεταφορά η CPU ελέγχει τις διευθύνσεις μνήμης που γράφονται (DMA write) και σε περίπτωση που απαιτείται ενημερώνει τη κρυφή μνήμη (supervisor/kernel mode). 8. Στο τέλος της μεταφοράς DMA η συσκευή ενημερώνει τον ελεγκτή DMA. 9. Ο ελεγκτής DMA ελευθερώνει το δίαυλο, ενημερώνει τον διαιτητή διαύλου και τη CPU (μέσω διακοπής). 10. Η CPU ενημερώνεται και συνεχίζει τις επικοινωνίες διαύλου εκεί που είχε σταματήσει (μέσω ρουτίνας εξυπηρέτησης διακοπής).

Direct Memory Access (DMA) (3) (a) Κώδικας που εκτελεί ο kernel όταν εξυπηρετεί τη κλήση συστήματος. (b) Κώδικας εξυπηρέτησης διακοπής για τον εκτυπωτή.

Ελεγκτές και Οδηγοί (1) Οδηγός (Driver): το λογισμικό που είναι υπεύθυνο για τη διαχείριση της συσκευής και του ελεγκτή Ε/Ε. Συνδέεται άμεσα με το πυρήνα (kernel) του λ.σ. Εκτελείται σε supervisor mode. Τρόποι σύνδεσης οδηγών στο λ.σ.: Προεγκατάσταση, ενσωμάτωση στο λ.σ. (βασικοί οδηγοί συσκευών, πχ generic keyboard, mouse, display drivers) Κατά την εγκατάσταση του λ.σ. (διερεύνηση διαθέσιμου υλικού και επιλογή από διαθέσιμους οδηγούς, πχ ανίχνευση ειδικής κάρτας οθόνης) Κατά την εγκατάσταση της συσκευής (συνοδεύει τη συσκευή ή μεταφορτώνεται από το διαδίκτυο, πχ εγκατάσταση νέου εκτυπωτή)

Ελεγκτές και Οδηγοί (2) Λογική θέση των ελεγκτών και οδηγών συσκευών Ε/Ε σε σχέση με το λ.σ. System call Ορισμένοι οδηγοί βρίσκονται μόνιμα στο πυρήνα ενώ άλλοι φορτώνονται με την προσάρτηση της συσκευής (πχ usb stick, usb headset κλπ)

Στοίβα λογισμικού E/E (1) User space Kernel space Device / Hardware dependend Πχ: Κλήση συνάρτησης βιβλιοθήκης <stdio.h> fprintf User mode Κλήση συστήματος POSIX write User- Kernel mode Κλήση οδηγού δίσκου σε kernel mode Kernel mode Κλήση ρουτίνας εξυπηρέτησης διακοπής Kernel mode-hardware

Στοίβα λογισμικού E/E (2)

Στοίβα λογισμικού E/E (3) Spooling, error reporting, logistics Βασικές λειτουργίες των διαφόρων επιπέδων λογισμικού Ε/Ε. Προσοχή στη παράκαμψη της κλήσης ρουτίνας διακοπής κατά τη 'κάθοδο' με την έννοια οτι η συσκευή είναι συνεχώς διαθέσιμη για χρήση και η πρωτοβουλία είναι στο λ.σ.

Λογισμικό Ε/Ε ανεξάρτητο συσκευής (1)

Λογισμικό Ε/Ε ανεξάρτητο συσκευής (2) Ονομασία συσκευών Ε/Ε και συσχέτισή τους με τα υπόλοιπα τμήματα του λ.σ. Για παράδειγμα, στο Unix οι συσκευές εμφανίζοναι ως ειδικού τύπου αρχεία (βλ. επόμενη διαφάνεια). Ενιαία διεπιφάνεια χρήσης διαφορετικών συσκευών ίδιας λειτουργικότητας, πχ ενιαία διεπιφάνεια χρήσης εκτυπωτών CUPS (www.cups.org). Δικαιώματα πρόσβασης /χρήσης: έλεγχος αδειών πρόσβασης / χρήσης συσκευών Ε/Ε από χρήστες και εφαρμογές. Aναφορά σφαλμάτων (Error reporting): κοινοί κωδικοί / μηνύματα σφαλμάτων προς τα προγράμματα χρηστών. Καταγραφή λειτουργιών (Logging) και καθορισμός ορίων χρήσης, πχ ποσόστωση χώρου δίσκου, αριθμός σελίδων προς εκτύπωση κλπ Παροχέτευση (Spooling): διατήρηση ουράς αιτημάτων Ε/Ε για συσκευές που εξυπηρετούν μια λειτουργία Ε/Ε κάθε φορά (εκτύπωση).

Λογισμικό Ε/Ε ανεξάρτητο συσκευής (3) Ενταμίευση (Buffering): αντιμετώπιση προβλημάτων ταχύτητας μεταφοράς, μεθόδων κωδικοποίησης δεδομένων κλπ. Επικοινωνία δεδομένων: αντιμετώπιση διαφορετικών τρόπων επικοινωνίας (πχ σύγχρονη, ασύγχρονη), διαφορετικών μεγεθών blocks μεταφοράς δεδομένων κλπ. Κρυφή Μνήμη Ε/Ε (Ι/Ο Caching): διατήρηση αντιγράφων στη κύρια μνήμη για αποφυγή συνεχούς αναφοράς στις συσκευές Ε/Ε. Δέσμευση συσκευών / πόρων: έλεγχος για κατάληψη / ελευθέρωση πόρων (δέσμευση / αποδέσμευση συσκευών) και αποφυγή προβλημάτων αδιεξόδων. Δρομολόγηση αιτημάτων Ε/Ε ανά διεργασία και ανά συσκευή Ε/Ε.

Συσκευές στο Unix User Programs User Programs Trap User level Libraries Kernel level System Call Interface File System Management /dev /cdrom /media... IPC Buffer Cache Process Mgt. Scheduling Memory Mgt. Device Drivers Hardware Control (Interrupts handling, etc) Hardware Στο Unix οι συσκευές Ε/Ε αντιμετωπίζονται ως ειδικά αρχεία.

Σύγχρονη Ε/Ε Αναστολή προγράμματος χρήστη. user requesting process waiting device driver kernel Interrupt handler Hardware data transfer time Σε ορισμένες συσκευές μπορεί να επιτρέπεται μόνο μια λειτουργία Ε/Ε ανά συσκευή (όχι spooling). Σύγχρονη Ε/Ε: Σε ορισμένες περιπτώσεις ή σε ειδικά συστήματα ένα πρόγραμμα του χρήστη πρέπει να περιμένει την ολοκλήρωση της λειτουργίας Ε/Ε, δηλαδή τίθεται σε κατάσταση αναστολής. Ο kernel μπορεί να ελευθερώσει τη CPU και πιθανώς να εκτελεστεί κάποιο άλλο πρόγραμμα χρήστη, αλλά η Ε/Ε για το συγκεκριμένο πρόγραμμα χρήστη απαιτεί συγχρονισμό.

Ασύγχρονη Ε/Ε user requesting process continuing device driver kernel Interrupt handler Hardware data transfer time Μη- αναστολή του προγράμματος χρήστη. Μετά την αρχική διακοπή λογισμικού επιστρέφει τον έλεγχο στο πρόγραμμα του χρήστη χωρίς να αναμένει την ολοκλήρωση των Ε/Ε. Το πρόγραμμα χρήστη μπορεί να ανασταλεί σε αναμονή της Ε/Ε ή να εκτελέσει άλλη λειτουργία (Ασύγχρονη Ε/Ε). Όταν ολοκληρωθεί η λειτουργία Ε/Ε, προκαλείται μια διακοπή από τη συσκευή προς την CPU που αναστέλλει προσωρινά το πρόγραμμα χρήστη και διαχειρίζεται τη συσκευή Ε/Ε. Το λ.σ. διατηρεί πίνακα με τη κατάσταση των συσκευών Ε/Ε. Πολλαπλές λειτουργίες Ε/Ε ανά πρόγραμμα και ανά συσκευή (spooling)

Παροχέτευση (Spooling) E/E Ασύγχρονη Ε/Ε που επιτρέπει διαχείριση ουράς αιτημάτων Ε/Ε ανά συσκευή. Τα προγράμματα χρηστών στέλνουν πολλά αιτήματα Ε/Ε και ο kernel τα τοποθετεί σε ουρές ανά συσκευή (πιθανή χρήση προτεραιότητας).

Συσκευές block και χαρακτήρων Συσκευές block: κυρίως δίσκοι (και ssd) Ακολουθιακή (sequential) και τυχαία (random) προσπέλαση. Ε/Ε ανά byte, χαρακτήρα ή δομή, εγγραφή (structure, record) από bytes. Μεταφορά ολοκλήρων περιοχών (blocks) του δίσκου από / προς τη κύρια μνήμη (λειτουργία ιδεατής μνήμης, virtual memory). Επίσης ο δίσκος μπορεί να λειτουργεί ως 'επέκταση' της μνήμης (χώρος εναλλαγής, swap space). Συσκευές χαρακτήρων: πληκτρολόγια, ποντίκια, οθόνες χαρακτήρων Ακολουθιακή προσπέλαση Ε/Ε ανά byte, χαρακτήρα Πρότυπες ροές (standrad streams): stdin (0), stdout(1), stderr(2). Αυτόματη σύνδεση εκτελούμενων προγραμμάτων μέσω βιβλιοθήκης <stdio.h> Δίαυλοι (pipes) και γενικευμένες ροές (streams): αμφίδρομη (in, out) επικοινωνία μεταξύ προγραμμάτων στο ίδιο σε διαφορετικά συστήματα (δίκτυο).

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ E/E, Δίσκοι, Συστήματα αρχείων Ε/Ε Δίσκοι Συστήματα αρχείων Υλοποίηση Ζητήματα απόδοσης

Δίσκοι (1) Γεωμετρία: Ίχνος (Track) Επιφάνεια (Platter) Κύλινδρος (Cylinder) Τομέας (Sector) (σταθερός αριθμός bytes/τομέα). Χρόνοι/Ταχύτητες: Περιστροφή Δίσκων + Μετακίνηση Κεφαλών = Αναζήτηση Μεταφορά Δεδομένων.

Δίσκοι (2) Παράμετροι δισκέτας IBM PC 360-KB και δίσκου Western Digital WD 18300.

Δίσκοι (3) (a) Φυσική γεωμετρία δίσκου με δύο ζώνες. (b) Μια πιθανή εικονική γεωμετρία του ίδιου δίσκου.

Γεωμετρία δίσκου (1) Τομέας δίσκου. Τα δεδομένα (data) αντιστοιχούν συνήθως σε 1 φυσικό block. Preable: δεδομένα ελέγχου για την αναγνώριση του τομέα. ΕCC: Error Correcting Code.

Γεωμετρία δίσκου (2) Στρέβλωση κυλίνδρων

Γεωμετρία δίσκου (3) (a) Χωρίς παρεμβολή τομέων. (b) Απλή παρεμβολή τομέων. (c) Διπλή παρεμβολή τομέων.

Χειρισμός σφαλμάτων (a) Τροχιά δίσκου με ελαττωματικό τομέα και δύο εφεδρικούς. (b) Αντικατάσταση ελαττωματικού τομέα με εφεδρικό. (c) Ολίσθηση τομέων για ορθή σειρά τομέων. Διαμόρφωση χαμηλού επιπέδου (Low level format).

Redundant Array of Inexpensive Disks RAID (1) 0: Block level stripping. Διαμοιρασμός ζωνών (stripes) από blocks σε πολλαπλoύς (n) δίσκους. Αύξηση χωρητικότητας. Δεν υπάρχει πλεονασμός. +: Ταχύτητα στη μεταφορά δεδομένων xn -: Mηδενική ανοχή σε σφάλματα δίσκων. 1: Mirroring. Πλήρης αντιγραφή (ομοιότυπο) και πλεονασμός. Πολλαπλή εγγραφή αλλά υποπολλαπλάσιος χρόνος ανάγνωσης. +: Ταχύτητα ανάγνωσης xn, Πλήρης αξιοπιστία σε βλάβη δίσκου. -: Ταχύτητα εγγραφής x1, Κόστος. 2: Bit level stripping. Κατανομή ανά bit με κωδικοποίηση Hamming. Τεράστια διεκπεραιωτική ικανότητα, ανοχή σε απλά τυχαία σφάλματα. +: Ταχύτητα αντίστοιχη με τον αριθμό δίσκων, κλιμάκωση. -: Συγχρονισμός δίσκων, περίσσεια δίσκων, απαιτητικός ελεγκτής.

RAID (2) P1 P2 P3 Συστοιχίες δίσκων RAID, επίπεδα (levels) 0 έως 2. Οι δίσκοι backup και parity φαίνονται γκρίζοι ή σημειώνονται.

Redundant Array of Inexpensive Disks RAID (3) 3: Byte level striping. Kατανομή ανά byte με κωδικοποίηση Parity. Mεγάλη διεκπεραιωτική ικανότητα, προβλήματα σε συγκεντρωμένα σφάλματα. +: Ταχύτητα αντίστοιχη με τον αριθμό δίσκων, κλιμάκωση. -: Συγχρονισμός δίσκων, απαιτητικός ελεγκτής. 4: Block level striping / dedicated Parity. Kατανομή ανά ζώνη όπως στο Επίπεδο 0 αλλά με κωδικοποίηση Parity σε ξεχωριστό δίσκο. Ίδιες ιδιότητες με το Επίπεδο 0, καλύτερη ανοχή σε σφάλαματα, αλλά εμφανίζει συμφόρηση στο δίσκο με τα Parity bits. 5: Block level striping / distributed Parity. Οργάνωση όπως στο Επίπεδο 4 αλλά τα Parity bits κατανέμονται σε ζώνες όλων των δίσκων. Μικρότερη συμφόρηση αλλά σύνθετη διαδικάσία δόρθωσης. 6: Block level striping / double distributed Parity. Οργάνωση όπως στο Επίπεδο 5 αλλά με 2 Parity bits ανά block να ακατανέμονται σε ζώνες όλων των δίσκων.

RAID (4) Συστοιχίες δίσκων RAID, επίπεδα (levels) 3 έως 5. Οι δίσκοι backup και parity φαίνονται γκρίζοι.

Πληροφορίες δίσκου $ fdisk l Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x752aa292... Πολλά εξειδικευμένα προγράμματα ανάλυσης/διαχείριση/επαναφοράς δίσκων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ E/E, Δίσκοι, Συστήματα αρχείων Ε/Ε Δίσκοι Συστήματα αρχείων Υλοποίηση Ζητήματα απόδοσης

Συστήματα αρχείων (1) Βασικές απαιτήσεις για τη δευτερεύουσα μνήμη: Μόνιμη αποθήκευση δεδομένων, ανεξάρτητη από τη παροχή ρεύματος. Πρακτικά απεριόριστος αποθηκευτικός χώρος. Αποθήκευση δεδομένων ανεξάρτητα από τις διεργασίες που τα δημιουργούν ή τα χρησιμοποιούν. Ταυτόχρονη πρόσβαση στα δεδομένα από πολλές διεργασίες (προστασία από ταυτόχρονη εγγραφή). Συνηθέστερα μέσα: HDs, FlashDrives, CDs, DVDs

Συστήματα αρχείων (2) Θεωρούμε τη δευτερεύουσα μνήμη ως μια γραμμική ακολουθία από blocks σταθερού μεγέθους, στα οποία το λ.σ. μπορεί να γράψει και να διαβάσει. Βασικές ερωτήσεις: Πως βρίσκουμε / οργανώνουμε τα δεδομένα; Πώς γνωρίζουμε ποιά blocks είναι ελεύθερα και ποια κατηλειμμένα; Πώς προστατεύουμε τα δεδομένα μιας διεργασίας (ενός χρήστη) από τις άλλες (άλλους χρήστες);

Συστήματα αρχείων (3) Σύστημα αρχείων: το τμήμα του λ.σ. που Διαχειρίζεται τη λογική οργάνωση της δευτερεύουσας μνήμης Συνδέει τη λογική οργάνωση με τη φυσική οργάνωση της δευτερεύουσας μνήμης (τμήμα Eισόδου/Εξόδου) Αρχείο: λογική αφαίρεση που επιτρέπει την ομαδοποίηση των δεδομένων στη δευτερεύουσα μνήμη σε λογικές ενότητες και απεικονίζει τις λογικές ενότητες σε φυσικά blocls δεδομένων.

Οργάνωση συστήματος αρχείων (1) Υπηρεσία Καταλόγου (Directory Service) Λογικά ονόματα Περιγραφείς Αρχείων Δικαιώματα Χρήσης (προστασία) Υπηρεσία Αρχείων (File Service) Περιγραφείς Αρχείων Ενταμιευτές Αρχείων Ιδιότητες (Τύποι) Αρχείων και αντίστοιχες Εφαρμογές Υπηρεσία Αποθήκευσης (Block Service) Ενταμιευτές Αρχείων Φυσικά Βlocks δίσκου Λειτουργίες Δίσκων και Ε/Ε

Οργάνωση συστήματος αρχείων (2) Kλήσεις Συστήματος από Εφαρμογές Υπηρεσία Καταλόγου Λογική οργάνωση αρχείων Υπηρεσία Αρχείων Ενταμιευτές δίσκου/μνήμης Υπηρεσία Αποθήκευσης Διαχείριση αρχείων στο δίσκο Είσοδος / Έξοδος Οδηγοί Συσκευών / Διακοπές

Δομή αρχείων Tρείς τύποι αρχείων: (a) Ακολουθία bytes (μέγιστη ευελιξία). (b) Ακολουθία εγγραφών (physical records). (c) Δένδρο εγγραφών.

Τύποι αρχείων (1) Κανονικά (regular) αρχεία: αρχεία χαρακτήρων (character files) δυαδικά αρχεία (binary files) Ειδικά (special) αρχεία: συσκευές Ε/Ε αρχεία χαρακτήρων (streams) πχ stdin, stdout αρχεία block (μοντελοποίηση δίσκων, ομάδων δεδομένων) Εκτελέσιμα (executable) αρχεία - Αρχεία δεδομένων (data) Συμπιεσμένα αρχεία (zip, rar) - Αρχειοθήκες (tar) Κρυφά (Hidden) αρχεία (ή κατάλογοι) πχ.bashrc Βιβλιοθήκες (so,sa) - Πακέτα (deb, rpm)

Τύποι αρχείων (2) (a) Εκτελέσιμο αρχείο. (b) Βιβλιοθήκη

Ονομασία αρχείων Στα Windows η επέκταση έχει σημασία. Στο Unix είναι βοηθητική μόνο.

Προσπέλαση αρχείων Ακολουθιακή (Sequential) Ανάγνωση όλων των δεδομένων από την αρχή Δεν επιτρέπεται η υπερπήδηση δεδομένων, αλλά επιτρέπεται οπισθοδρόμηση -συνήθως στην αρχή (rewind) Βολικό για μαγνητοταινίες (backup) Τυχαία (Random) Ανάγνωση δεδομένων σε οποιαδήποτε σειρά Απαραίτητο σε βάσεις δεδομένων (δίσκοι) Η ανάγνωση μπορεί να σημαίνει Μετακίνηση (fseek, ftell), και μετά ανάγνωση ή Ανάγνωση και μετά μετακίνηση

Ιδιότητες (attributes) αρχείων

Κατάλογοι Τυπικό σύστημα αρχείων με δενδρική δομή και πολυ-επίπεδους καταλόγους (υπο-καταλόγους).

Όνομα διαδρομής (Path name) You Are Here Απόλυτο (Absolute) όνομα διαδρομής: /usr/lib/dict Σχετικό (Relative) όνομα διαδρομής:../lib/dict

Σύνδεση (link) (a) Δύο κατάλογοι πριν τη σύνδεση του αρχείου /usr/jim/memo με το αρχείο /usr/ast/memo. (b) Οι ίδιοι κατάλογοι μετά τη σύνδεση. Το αρχείο /usr/ast/note δείχνει (συνδέεται με) το αρχείο /usr/jim/memo. ln s /usr/bin/python /usr/bin/python2.7

Προσάρτηση (mount) (1) (a) Πριν από τη προσάρτηση (mount) τα αρχεία στο CD-ROM δεν είναι προσπελάσιμα. (b) Μετά τη προσάρτηση, τα αρχεία του CD-ROM εισάγονται στη δενδρική δομή του συστήματος αρχείων. Ισχύει και για απομακρυσμένους καταλόγους (προσπέλαση μέσω δικτύου)

Προσάρτηση (mount) (2) (a) Σύστημα αρχείων Linux πριν τη προσάρτηση. (b) Σύστημα αρχείων Linux μετά τη προσάρτηση: στο ριζικό κατάλογο υπάρχουν οι κατάλογοι mnt, media $ mount /dev/sda1 on / type ext3 /dev/sdc1 on /media/user/udisk type vfat /dev/sr0 on /media/user/mathworks_type iso9660

Κλήσεις συστήματος - αρχεία Οι συνηθέστερες λειτουργίες σε αρχεία είναι οι εξής: Create Delete Open Close Read Write Append Seek Get Attributes Set Attributes Rename / Move Αντίστοιχες λειτουργίες Γραφικής Διεπιφάνειας Χρήστη; Αντίστοιχες εντολές φλοιού (γραμμής εντολών);

Κλήσεις συστήματος POSIX Διαχείριση αρχείων: προσοχή, δεν υπάρχει delete... s είναι κωδικός σφάλματος fd είναι περιγραφέας αρχείου position είναι file offset (δηλαδή αριθμός bytes για το δείκτη ανάγνωσης / εγγραφής)

Κλήσεις συστήματος -stat, fstat (1) Χαρακτηριστικά (attributes) που επιστρέφονται. Ορισμένες έννοιες (πχ i-nodes) εξηγούνται παρακάτω.

Κλήσεις συστήματος -stat, fstat (2) $ stat mpd.hosts File: «mpd.hosts» Size: 26 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 3524068 Links: 1 Access: (0644/ rw r r ) Uid:(1000/kmarg) Gid:(1000/kmarg) Access: 2013 01 13 17:10:46.000000000 +0200 Modify: 2010 10 07 18:08:54.000000000 +0300 Change: 2010 10 07 18:08:54.000000000 +0300 Ενδεικτική εκτέλεση εντολής stat.

Παράδειγμα (1.1)...

Παράδειγμα (1.2)

Ροές και ανακατεύθυνση (1) Πρότυπες ροές (Standard streams): Εικονικά αρχεία χαρακτήρων (read ή write only) συνδεδέμενα με συσκευές Ε/Ε. stdin (file descriptor 0), stdout (file descriptor 1), stderr (file descriptor2). Ανακατεύθυνση (Redirection): Σύνδεση των προτύπων ροών με πραγματικά αρχεία τύπ χαρακτήρων. Παραδείγματα με τελεστές φλοιού: $ls l > dir_list $ls l >> dir_list $wc < text_file > text_fle_stats $./my_program <in_file >out_file

Ροές και ανακατεύθυνση (1) Xρήση σε εφαρμογή: (a) Χρήση εναλλακτικών συναρτήσεων scanf( %c ) == fscanf(stdin, %c) printf( %c ) == fprintf(stdout, %c ) ή fprintf(stderr, %c) (b) Χρήση συνάρτησης dup2 FILE *ifp, *ofp; ifp = fopen("in.list", r ) dup2 (ifp, stdin); /* ifp is duplicated with stdin*/ ofp = fopen( out.list, "w") dup2 (ofp, stdout); /* ofp is duplicated with stdout */

Κλήσεις συστήματος κατάλογοι Οι συνηθέστερες λειτουργίες για διαχείριση καταλόγων: Create Delete Opendir Closedir Readdir Rename Link Unlink Αντίστοιχες λειτουργίες Γραφικής Διεπιφάνειας Χρήστη; Αντίστοιχες εντολές φλοιού (γραμμής εντολών);

Κλήσεις συστήματος POSIX Διαχείριση καταλόγων s είναι κωδικός σφάλματος dir είναι όνομα/δείκτης καταλόγου dirent είναι καταχώρηση καταλόγου

Κλήσεις συστήματος παράδειγμα /* Print names of files in current directory */ #include <stdio.h> #include <sys/types.h> #include <dirent.h> int main (void) { DIR *dp; struct dirent *ep; dp = opendir ("./"); if (dp!= NULL) { while (ep = readdir (dp)) puts (ep >d_name); (void) closedir (dp); } else perror ("Couldn't open the directory"); return 0; }

Προστασία: άδειες και δικαιώματα (1) Κάθε αρχείο και κάθε διεργασία έχουν ένα ιδιοκτήτη (τα του συστήματος έχουν ως ιδιοκτήτη τον root ή administrator). Κάθε πρόγραμμα που ξεκινά ένας.χρήστης 'κληρονομεί' τα δικαιώματα του χρήστη (συνήθως) και όχι του διαχειριστή. Κάθε χρήστης ανήκει σε μια ομάδα χρηστών (έστω και μονομελή) Κάθε χρήστης ή διεργασία έχει την άδεια να προσπελάσει μόνο αρχεία ή διεργασίες με βάση ένα σχήμα δικαιωμάτων που καθορίζεται κατά τη δημιουργία του αρχείου ή της διεργασίας και μπορεί να τροποποιηθεί μόνο από τον ιδιοκτήτη ή το διαχειριστή. Σχήμα δικαιωμάτων αρχείων Type User Group d r w x r w x Other r w x

Προστασία: άδειες και δικαιώματα (2) $ ls l... rw 1 kmarg kmarg 691 Δεκ 14 2009 gschem.log rw r 1 kmarg kmarg 14510 Ιούν 17 2010 hp check.log lrwxrwxrwx 1 kmarg kmarg 57 Μάρ 30 2012 libnpjp2.so > /usr/lib/jvm/java 6 sun 1.6.0.26/jre/lib/i386/libnpjp2.so drwxrwxr x 2 kmarg kmarg 4096 Νοέ 14 20:44 logisim drwx 7 kmarg kmarg 4096 Απρ 4 2009 Mic1MMV rw r r 1 kmarg kmarg 567 Σεπ 15 2009 missfont.log rwxr xr x 1 kmarg kmarg 17475 Δεκ 3 2009 mpdboot.test rw r r 1 kmarg kmarg 26 Οκτ 7 2010 mpd.hosts... $ chmod og x mpdboot.test $ ls l mpdboot.test rwxr r 1 kmarg kmarg 17475 Δεκ 3 2009 mpdboot.test $ chmod 700 mpdboot.test $ ls l mpdboot.test rwx 0 1 kmarg kmarg 17475 Δεκ 3 2009 mpdboot.test

Προστασία: άδειες και δικαιώματα (3) Εξήγηση του $chmod 700 rwx a) User 7 111 rwx b) Group 0 000 rwx c) Other 0 000 'Αλλες σχετικές εντολές $chgrp : αλλαγή ομάδας (group) $chown : αλλαγή ιδιοκτήτη (user) Οι άδειες και τα δικαιώματα ισχύουν και για καταλόγους και τα περιεχόμενά τους (μπορεί να γίνει αναδρομική εφαρμογή με χρήση του διακόπτη -r στην εκτέλεση σχετικής εντολής).

Προστασία: άδειες και δικαιώματα (4) Παραδείγματα χρήσης του σχήματος αδειών και δικαιωμάτων.

Δομή συστήματος αρχείων Unix/Linux

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ E/E, Δίσκοι, Συστήματα αρχείων Ε/Ε Δίσκοι Συστήματα αρχείων Υλοποίηση Ζητήματα απόδοσης

Εγκατάσταση λ.σ. (1) Το λ.σ. πρέπει να είναι 'γραμμένο' για τη συγκεκριμένη αρχιτεκτονική επιπέδου εντολών (system dependent part). Πχ Linux ports για x86, ΑRM, MIPS, PowePC, SPARC, Μ68000... Το αρχικό πρόγραμμα εγκατάστασης SYSGEN συλλέγει πληροφορίες για τη διαμόρφωση του συγκεκριμένου συστήματος. Αναγνωρίζει πχ την ύπαρξη άλλου λ.σ. Στη συνέχεια διαμορφώνει (format) και διαμερίζει (partition) το δίσκο (ή τμήμα του) και εγκαθιστά το λ.σ. Κατά την εκκίνηση το κάθε διαμέρισμα προσαρτάται (is mounted) σε ένα κατάλογο του συστήματος αρχείων (mount point). Booting εκκίνηση του εγκατεστημένου λ.σ. Πρόσφατα: Live-CD, USB-flash boot. Bootstrap program πρόγραμμα που βρίσκεται στη ROM και βρίσκει το Master Boot Record (MBR) ή το Boot Loader (πχ Grub, Lilo), ειδικό πρόγραμμα που κρατά λογαριασμό για τη θέση του πυρήνα (ή των πυρήνων, kernels) στο δίσκο.

Εγκατάσταση λ.σ. (2) Aρχική διαμόρφωση δίσκου: πχ επιτρέπονται πολλαπλά λ.σ.; μεταβλητά διαμερίσματα; διαφορετικά συστήματα αρχείων; Μέγεθος δομής δεδομένων: πχ πόσες καταχωρήσεις επιτρέπει ο πίνακας διαμερισμάτων = πόσα διαμερίσματα επιτρέπονται; Μέγεθος καταχώρησης (σε bytes): πχ πόσα bytes αντιστοιχούν σε μια καταχώρηση καταλόγου καθορίζει έμμεσα πόσοι χαρακτήρες επιτρέπονται στο όνομα του αρχείου. Τύπος δομής δεδομένων: πίνακας, συνδεδεμένη λίστα, πίνακας κατακερματισμού, δένδρο..= καθορίζει ταχύτητα προσπέλασης, ευκολία διαχείρισης, επέκτασης. Άλλα: μέγεθος block, συνεχής/ασυνεχής κατανομή χώρου, μέγιστος αριθμός καταλόγων/αρχείων, μέγιστο μέγεθος καταλόγων/αρχείων, θέματα προστασίας (αδειοδότηση) κλπ. Γνωστά συστήματα αρχείων: FAT, NTFS (Windows), ext2/3/4 (Unix,Linux)

Αρχική διαμόρφωση (1) boot O δίσκος με τη διαμόρφωση χωρίζεται σε λογικά διαμερίσματα. Το κάθε διαμέρισμα μπορεί να έχει διαφορετικό σύστημα αρχείων (εδώ ntfs και ext3).

Αρχική διαμόρφωση (2) Αναγνώριση δίσκου (/dev/sda) Αποπροσάρτηση (umnount /dev/sda) Διαμόρφωση και διαμέριση (fdisk /dev/sda) Ορισμός αριθμού, μεγέθους και τύπου διαμερισμάτων [P]rimary [B]oot Partition number... First cylinder... Using default value.. Last cylinder or +size or +sizem or +sizek... Ορισμός συστήματος αρχείων ανά διαμέρισμα (makefs.ext3 /dev/sda3) Προσάρτηση διαμερισμάτων στο σύστημα αρχείων mkdir /somwhere/in/filesystem mount /dev/sda1 /somwhere/in/filesystem Επαναδιαμέριση (partition editor): pared /dev/sda Στα Windows: Partition Magic

Αρχική διαμόρφωση (3) Εκκίνηση υπολογιστή Grub με Dual Boot. Στο δίσκο έχουν εγκατασταθεί δύο λ.σ. Ubuntu και Windows. Ο χρήστης επιλέγει λ.σ.

Οργάνωση συστήματος αρχείων (1) Τυπική οργάνωση συστήματος αρχείων (Unix/Linux ext2/3/4). Ο δίσκος χωρίζεται σε διαμερίσματα (primary, boot, extended,swap) που καταγράφοινται στο Partition Table (πίνακας διαμερισμάτων δίσκου), όπου επίσης δίνεται η αρχή, το μέγεθος και το σύστημα αρχείων κάθε διαμερίσματος. MBR = Master Boot Record --> Boot Loader (πχ Grub)

Πίνακας διαμερισμάτων

Οργάνωση συστήματος αρχείων (2) Boot block: φόρτωση πυρήνα λ.σ. Μπορεί να υπάρχουν πολλά λ.σ. άρα και πολλά system partitions, boot blocks (Volume Boot Sector). Superblock: βασικά μεταδεδομένα (metadata) διαμερίσματος, memory resident μετά το προσάρτηση (mount) του διαμερίσματος. Πχ αριθμός, μέγεθος τομέων και blocks, δείκτες στα άλλα blocks, backup.. Διαχείριση ελευθέρων τμημάτων, i-nodes: Αναλύονται παρακάτω..

Συνεχής κατανομή (a) Συνεχής κατανομή χώρου δίσκου σε 7 αρχεία. (b) Η κατάσταση του δίσκου μετά την αφαίρεση των αρχείων D και F. Τα πλαίσια αντιστοιχούν στα φυσικά blocks του δίσκου.

Κατακερματισμός (Fragmentation) Κατακερματισμός αρχείου: το αρχείο δε βρίσκεται σε συνεχή blocks αλλά σε διασπαρμένα blocks. Μπορεί να προκληθούν καθυστερήσεις σε ανάγνωση/εγγραφή. Κατακερματισμός συστήματος αρχείων: τα κενά blocks μετά από διαδοχικές εγγραφές/διαγραφές είναι διασπαρμένα και οδηγούν σε κατακερματισμό αρχείων. Aπο-κατακερματισμός (De-fragmentation): κατά καιρούς, για βελτίωση της απόδοσης του δίσκου γίνεται συνολική αναδιάταξη των blocks/αρχείων. Απαιτείται αναμόρφωση των ανάλογων δομών δεδομένων. Στα σύγχρονα συστήματα αρχείων ο απο-κατακερματισμός γίνεται συνεχώς με ευθύνη του λ.σ. Πρώτα, διατίθεται μεγαλύτερος αριθμός blocks ώστε να υπάρχει δυνατότητα επέκτασης, δεύτερο το λ.σ. επανατοποθετεί μεγάλα αρχεία και συλλέγει κενά blocks κατά καιρούς.

Κατανομή σε συνδεδεμένη λίστα Αποθήκευση δύο αρχείων Α, Β με τη μορφή συνδεδεμένης λίστας. Κάθε λογικό block (δεδομένων) καταλαμβάνει ένα φυσικό block του δίσκου. Τα ελεύθερα blocks συνδέονται σε αντίστοιχη συνδεδεμένη λίστα. Κάθε τροποποίηση απαιτεί ενημέρωση δύο λιστών,

File Allocation Table (FAT) (1) Logical Block File A3 Goto block 10 A1 Goto block 7 Head of Free Block List To 1 To 5 To 8 A2 Goto block 2 To 9 To 13 A4 Goto block 12 A5 End Of File To 15 End of Free Block List Κατανομή με συνδεδεμένη λίστα η οποία υλοποιείται ως FAT. Σε κάθε φυσικό block του δίσκου αντιστοιχεί μια γραμμή του FAT. Ο FAT φορτώνεται στη κύρια μνήμη κατά τη προσάρτηση του συστήματος αρχείων.

File Allocation Table (FAT) (2) Ενδεικτική διάρθρωση διαμερίσματος δίσκου στο σύτημα αρχείων FAT. Superblock: μεταδεδομένα του διαμερίσματος.

File Allocation Table (FAT) (3) Υπολογισμός μεγέθους FAT: Έστω δίσκος 200 Gb και μέγεθος block 1 Κb. Μέγεθος FAT 200*10^9 / 1*10^3 = 200*10^6 ή 200 Μ γραμμές. Κάθε γραμμή απαιτεί 4 bytes (2^24 < 200 M < 2^32) Επομένως απαιτούνται 800 Μb στη μνήμη για το FAT. Θα μπορούσε να κατανεμηθεί σε blocks αλλά παραμένει μεγάλος! Χρήσιμη λύση για τα μικρά συστήματα (MS-DOS). Για να 'δεί' μεγάλους δίσκους απαιτεί υπερβολικά μεγάλο μέγεθος block. Έχει τροποποιηθεί για μεγαλύτερα συστήματα (FAT -16, -32)

Δεικτοδοτημένη κατανομή: i-nodes (1) Ο i-κόμβος διατηρεί πίνακα tων blocks του αρχείου. Στο δίσκο πάρχει περιοχή διαθεσίμων i-nodes από όπου εκχωρείται ένα i-node σε κάθε αρχείο όταν αυτό δημιουργείται. Διαχείριση των διαθέσιμων με i-node blocks με bitmap πίνακα, όπως και των ελεύθερων blocks. Στη μνήμη φορτώνονται μόνο τα i-nodes των αρχείων που είναι ανοικτά ανά πάσα στιγμή.

i-nodes (2) Directory entry fields. Βασικά περιεχόμενα δομής i-node

i-nodes (3)

i-nodes (4) Υπολογισμός μεγέθους i-node: A b για τις ιδιότητες αρχείου + 4*Β b για τις διευθύνσεις των φυσικών blocks του αρχείου, όπου Β ο αριθμός των blocks του 1 Kb. Απαιτούνται (Α + 4*B) b. Έστω 'μέσο' μέγεθος αρχείου 1 Μb. Αυτό απαιτεί μέγεθος i-node: (A + 4*1000) b ~ 4 Kb. Αν υπάρχουν 1000 ανοικτά αρχεία απαιτούνται 4000 Κb ~ 4 Mb Στη πράξη απαιτείται ακόμη λιγότερος χώρος λόγω περιορισμένου αριθμού γραμμών ανά i-node (πχ 8) ενώ η τελευταία γραμμή οδηγεί σε νέο υπο-κόμβο-i (για μεγάλα αρχεία). Ουσιαστικά ανεξάρτητο από το μέγεθος δίσκου. Βασική επιλογή (UNIX). Συστήματα αρχείων ext2/3/4.

i-nodes (5) Root dir Data blocks Ενδεικτική διάρθρωση διαμερίσματος δίσκου στο σύτημα αρχείων ext2/3/4. Tα blocks σε κάθε διαμέρισμα οργανώνονται σε ομάδες (groups). Superblock: μεταδεδομένα του διαμερίσματος. O όρος i-node Table ισοδυναμεί με i-node blocks.

i- nodes (6) $dumpe2fs /dev/sda1... Filesystem OS type: Linux Inode count: 9371648 Block count: 37475620 Reserved block count: 1873781 Free blocks: 31295426 Free inodes: 8874795 First block: 0 Block size: 4096 Blocks per group: 32768 Inodes per group: 8192 Inode blocks per group: 512... Group 12: (Blocks 393216 425983) Block bitmap at 393216 (+0), Inode bitmap at 393217 (+1) Inode table at 393218 393729 (+2) 18721 free blocks, 6180 free inodes, 344 directories Free blocks: 393730 394070, 395762 398080, 398082 398209, 398211 399361, 399401,...

Διαχείριση blocks και i-nodes (1) Πίνακας ελεύθερων/δεσμευμένων blocks Πίνακας ελεύθερων/δεσμευμένων i-nodes Mέγεθος πινάκων: Kάθε δείκτης είναι 1 bit, άρα στα 32 bits = 32 δείκτες. Για δίσκο 200Gbytes με block size 4Kbytes έχουμε 200*2^30/4*2^10 = 50*2^20 = 50 Μ δείκτες Σε bytes, απαιτούνται 50*2^20 / 2^5 = 50*2^15 = 160*2^10 = 160 Kbytes. Άρα 40 blocks (μόνο). Οργάνωση πίνακα bitmap.

Διαχείριση blocks και i-nodes (2) Πίνακας ελεύθερων/δεσμευμένων blocks Πίνακας ελεύθερων/δεσμευμένων i-nodes Υπολογισμός αριθμού block που αντιστοιχεί στο Bit i της γραμμής j του πίνακα(block) k: (αριθμός του block +1, k=0,1,...) * (αριθμός γραμμών ανά blcok, πχ 4Κ/32 γραμμές )+ (αριθμός γραμμής, j=0,1, 4K/32-1)* (αριθμός bits ανά γραμμή, πχ 32) + (αριθμός bits που προηγούνται στη γραμμή, i=0,1,..31) Οργάνωση πίνακα bitmap.

Υλοποίηση καταλόγων (1) Οι κατάλογοι αντιμετωπίζονται ως ειδικού τύπου αρχεία, δηλαδή αρχεία που περιέχουν πληροφορίες για άλλα αρχεία ή καταλόγους και έχουν συγκεκριμένη δομή. Η βασικότερη από τις πληροφορίες των καταλόγων είναι το block από όπου ξεκινά τι κάθε αρχείο (ή κατάλογος) που περιέχουν. Η πληροφορία αυτή μπορεί να δίνεται άμεσα (πχ στο σχήμα FAT) ή έμμεσα (πχ στo σχήμα i-nodes). Το σύστημα αρχείων παρέχει ειδικές λειτουργίες χειρισμού των καταλόγων. Συνήθως ο ριζικός κατάλογος (root direcory) κάθε διαμερίσματος βρίσκεται σε ειδική θέση, πχ στο πρώτο block δεδομένων. Οι υπόλοιποι υπο-κατάλογοι βρίσκονται μαζί με τα αρχεία.

Υλοποίηση καταλόγων (2) (a) Απλός κατάλογος με διευθύνσεις δίσκου και ιδιότητες σε κάθε καταχώρηση (πχ ΜS-DOS, Windows 98). (b) Κατάλογος που κάθε καταχώρηση δείχνει σε μια ειδική δομή δεδομένων (πχ ext3).

Υλοποίηση καταλόγων (3) Δύο τρόποι διαχείρισης ονομάτων αρχείων. (a) Μέσα στη δομή (συγκεκριμένο μήκος ονόματος, πχ 255 bytes). (b) Σε δυναμική μνήμη (heap), απαιτείται διαχείριση μνήμης.

Υλοποίηση καταλόγων (4) Inode Value Entry Length Name Length File Type ASCII Name Καταχώρηση καταλόγου MS-DOS, Windows 98 και ext3.

Υλοποίηση καταλόγων (5) Υλοποίηση καταλόγου στο σύστημα αρχείων ext3. Κατάσταση πριν και μετα τη διαγραφή του αρχείου voluminus.

Διαμοιραζόμενα αρχεία -links (1) Δενδρική δομή με διαμοιραζόμενο αρχείο: Κατευθυνόμενος άκυκλος γράφος.

Διαμοιραζόμενα αρχεία -links (2) (a) Κανονική καταχώρηση αρχείου σε κατάλογο. Στις ιδιότητες του αρχείου υπάρχει και μετρητής συνδέσμων. (b) Δημιουργία συνδέσμου (link) στο αρχείο από άλλο κατάλογο. Είναι ειδικού τύπου αρχείο που απλά δείχνει στο i-node του αρχείου. (c) Ο χρήστης C διαγράφει το αρχείο, αλλά o Β το χρησιμοποιεί. Το αρχείο θα διαγραφεί αν διαγραφούν όλοι οι σύνδεσμοι στο αρχείο.

Επικοινωνία δίσκου - μνήμης (1) 2 1 fp =fopen 3 space descriptor 2 read(fd) 4 3 1 space (a) Aνοιγμα αρχείου και (b) Ανάγνωση από αρχείο

Επικοινωνία δίσκου - μνήμης (2) Per-proces s Open files System-wide Open files Copy of i-node in memory

Επικοινωνία δίσκου - μνήμης (3) Σχέση μνήμης, i-nodes και blocks κατά τα βήματα προσπέλασης του αρχείου με όνομα διαδρομής (pathname) /usr/ast/mbox.

Εικονικά συστήματα αρχείων (1) Λογική θέση εικονικού συστήματος αρχείων. Τα σύγχρονα συστήματα αρχείων χωρίζονται σε γενικευμένο (εικονικό) τμήμα και εξειδικεμένο (φυσικό) τμήμα.

Εικονικά συστήματα αρχείων (2) Descriptor (Περιγραφέας) : λογικό όνομα, δν/ση buffer, δείκτης τρέχουσας θέσης, κλπ Απλοποιημένο διάγραμμα των δομών δεδομένων και των κλήσεων συστήματος σε εικονικό σύστημα αρχείων.

Network File System NFS (1) Παράδειγμα προσάρτησης απομακρυσμένου συστήματος αρχείων. Κατάλογοι: τετράγωνα, Αρχεία: κύκλοι.

Network File System NFS (2) $ mount /dev/sda1 on / type ext4 (rw,errors=remount ro)... eleni:/mirror on /mirror type nfs (rw,rsize=8192,wsize=8192,intr,addr=195.251.209.11) cuda master:/nfs on /nfs type nfs (rw,rsize=8192,wsize=8192,intr,addr=195.251.209.14)... Σύστημα Linux με ένα τοπικό σύστημα αρχείων /dev/sda1 προσαρτημένο στο mount-point / και δύο απομακρυσμένους καταλόγους συστημάτων αρχείων από δύο υπολογιστές (eleni και cuda-master) φορτωμένα στα mount-points /mirror και /nfs αντίστοιχα. Τα ονόματα των καταλόγων στα δύο συστήματα (απομακρυσμένο και τοπικό) δεν είναι απαραίτητα ίδια.

Network File System NFS (3) The NFS layer structure. Δομή NFS.

Ενημερώσεις συστημάτων αρχείων Λειτουργίες που απαιτούνται για την διαγραφή αρχείων UNIX: Διαγραφή των πληροφοριών του αρχείου από τον κατάλογο. Επιστροφή του i-node στη δεξαμενή ελευθέρων i-nodes. Επιστροφή των φυσικών blocks στη δεξαμενή των ελεύθερων blocs. Προστασία: προσωρινή διαγραφή στο κάδο απορριμάτων (αντί για οριστική διαγραφή, ουσιαστικά μετακίνηση). Προς αποφυγή προβλημάτων συνέπειας: καταγραφή (log) σε ειδικά αρχεία (journals) των διαδικασιών ώστε σε περίπτωση κατάρρευσης το σύστημα να μπορεί να συνεχίσει τις διαδικασίες (journaling file systems). Πχ ext3/4. Σε ορισμένα συστήματα αρχείων έχουμε καταγραφή εκδόσεων (versioning file systems). Προοπτική: caching όλων των σελίδων που χρησιμοποιούνται, και αποθήκευση μόνο κατά το τερματισμό της διεργασίας.

Έλεγχος συστήματος αρχείων (fsck) (1) Πιθανές καταστάσεις συστήματος αρχείων (a) Συνεπές (b) Λείπει ένα ελεύθερο block. (c) Ελεύθερο block εμφανίζεται δύο φορές στη λίστα. (d) Block δεδομένων εμφανίζεται δύο φορές στη λίστα.

Έλεγχος συστήματος αρχείων (fsck) (2) Ενέργειες λ.σ. σε περιπτώσεις ασυνέπειας: Λείπει ένα ελεύθερο block. Το λ.σ. απλά προσθέτει το block στη λίστα των ελεύθερων blocks. Ελεύθερο block εμφανίζεται δύο φορές στη λίστα. To λ.σ. αφαιρεί το διπλότυπο από τη λίστα. Block δεδομένων εμφανίζεται δύο φορές στη λίστα. Το λ.σ. δεσμεύει ένα ελεύθερο bock και αντιγράφει τα δεδομένα του διπλού block (απλή αριθμητική ακεραιότητα).

Έλεγχος συστήματος αρχείων (fsck) (3) Έλεγχος καταλόγων: Το λ.σ. ελέγχει ιεραρχικά τη συνέπεια των καταλόγων (αντιστοίχιση καταχωρήσεων καταλόγου με συνδέσμους σε αρχεία). Το λ.σ. ελέγχει τη συνέπεια των μετρητών συνδέσμων (links). (a) Αν ο μετρητής είναι μεγαλύτερος από τους υπάρχοντες συνδέσμους, στο τέλος το αρχείο θα μείνει 'ορφανό' (κατάληψη block). (b) Αν ο μετρητής είναι μικρότερος από τους υπάρχοντες συνδέσμους, τότε υπάρχει κίνδυνος απώλειας του αρχείου.

Εφεδρικά αντίγραφα (backups) (1) Τα εφεδρικά αντίγραφα διατηρούνται για δύο λόγους: Προστασία από καταστροφές. Προστασία από κακόβουλες ενέργειες. Προστασία από ηλιθιότητες. Η ορθή πολιτική εφεδρικών αντιγράφων είναι κρίσιμη σε μεγάλα συστήματα.

Εφεδρικά αντίγραφα (backups) (2) Αντιγράφονται ορισμένα τμήματα του συστήματος αρχείων, πχ όχι οι συσκευές ή οι εφαρμογές. Συχνά αυξητικά (incremental) αντίγραφα με πλήρη (full) αντίγραφα σε μεγαλύτερα χρονικά διαστήματα. Αρχειοθέτηση (tar) και συμπίεση (zip) κατά την αντιγραφή. Σταδιακά οι διαδικασίες αυτές ενοποήθηκαν. Αντιγραφή όταν το σύστημα είναι σχετικά αδρανές (πχ βράδυ). Αλγόριθμοι για ενημέρωση κατά την αντιγραφή. Φυσική ασφάλεια: Ποιοί είναι υπεύθυνοι για τα αντίγραφα; Που κρατάμε τα εφεδρικά αντίγραφα; Ποιός έχει πρόσβαση;

Εφεδρικά αντίγραφα (backups) (3) Φυσική αντιγραφή (Physical dump) Η αντιγραφή γίνεται σε επίπεδο φυσικού block. Eξαιρούνται τα bad blocks και πιθανώς blocks που δεν έχουν τροποποιηθεί από την τελευταία αντιγραφή (απαιτούνται σχετικές πληροφορίες από το σύστημα αρχείων). Δημιουργείται mirror image (κατοπτρική εικόνα του δίσκου). Πχ ghost. Λογική αντιγραφή (Logical dump) Η αντιγραφή γίνεται σε επίπεδο λογικής δομής (κατάλογοι, αρχεία). Αντιγράφονται μόνο οι κατάλογοι και τα αρχεία που έχουν τροποποιηθεί. Πχ rsync.

Εφεδρικά αντίγραφα (backups) (4) Παράδειγμα λογικής αντιγραφής. Τα τετράγωνα είναι κατάλογοι, οι κύκλοι αρχεία. Τα σκιασμένα σχήματα συμβολίζουν τροποποίηση. Κάθε κατάλογος και αρχείο σημειώνεται από τον αριθμό i-node του.

Εφεδρικά αντίγραφα (backups) (5) Αρχικά όλα τα i-nodes είναι λευκά. (a) Σημειώνονται (γκρί) τα αρχεία έχουν τροποποιηθεί και όλοι οι κατάλογοι. (b) Ακυρώνονται (λευκό) αναδρομικά προς τη ρίζα οι κατάλογοι που ΔΕΝ έχουν τροποποιηθεί. (c) Ενημερώνονται οι κατάλογοι που έχουν τροποποιηθεί. (d) Ενημερώνονται τα αρχεία που έχουν τροποποιηθεί.

Ποσοστώσεις (Quotas) Τα λ.σ. κεντρικών υπολογιστών μπορούν να κρατούν λογαριασμό χρήσης δίσκου ανά χρήστη (πχ mail server-- 'Disk quota exceeded, can't create output'..).

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ E/E, Δίσκοι, Συστήματα αρχείων Ε/Ε Δίσκοι Συστήματα αρχείων Υλοποίηση Ζητήματα απόδοσης

Διαχείριση χώρου δίσκου: Μέγεθος block (1) Αθροιστικά ποσοστά αρχείων μικρότερων από συγκεκριμένο μέγεθος (σε bytes).

Διαχείριση χώρου δίσκου: Μέγεθος block (2) Συντελεστές χρόνου ανάγνωσης / εγγραφής: Χρόνος αναζήτησης (Seek time): κίνηση βραχίονα στο κατάλληλο κύλινδρο. Χρόνος περιστροφής (Rotational delay): περιστροφή δίσκου στο κατάλληλο τομέα. Χρόνος μεταφοράς δεδομένων (Data transfer time).

Διαχείριση χώρου δίσκου: Μέγεθος block (3) Χρόνος προσπέλασης για ανάγνωση ή εγγραφή Κ bytes= Χρόνος αναζήτησης + (Χρόνος περιστροφής/2) + Χρόνος μεταφοράς. Χρόνος μεταφοράς = (Αριθμός bytes Κ / Πυκνότητα εγγραφής) * Χρόνος περιστροφής. Ρυθμός μεταφοράς = Μέσος όρος μεταφερομένων bytes ανά sec (bytes / sec)

Διαχείριση χώρου δίσκου: Μέγεθος block (4) Πχ Χρόνος αναζήτησης = 10 msec Χρόνος περιστροφής = 8.33 msec Πυκνότητα εγγραφής = 131.072 bytes / τροχιά Αριθμός bytes K = 1 Kbyte 10 + 8.33 / 2 + (10^3 / 131.072) * 8.33 = 14.165 + 0.06355 Αριθμός bytes K = 14.23 msec = 10 Kbytes 10 + 8.33 / 2 + (10^4 / 131.072) * 8.33 = 14.165 + 0.6355 Αριθμός bytes K = 14.80 msec = 100 Kbytes 10 + 8.33 / 2 + (10^5 / 131.072) * 8.33 = 14.165 + 6.355 Αριθμός bytes K = 20.52 msec = 1 Mbyte 10 + 8.33 / 2 + (10^6 / 131.072) * 8.33 = 14.165 + 63.55 = 77.72 msec

Διαχείριση χώρου δίσκου: Μέγεθος block (5) Διακεκομμένη γραμμή (αριστερή κλίμακα): ρυθμός μεταφοράς δεδομένων. Συμπαγής γραμμή (δεξιά κλίμακα): χρησιμοποίηση χώρου δίσκου. Κάτω: μέγεθος φυσικού block δίσκου. Όλα τα αρχεία υπολογίζονται στα 4 KB.

Μείωση κίνησης βραχίονα δίσκου (a) Οι i-nodes τοποθετημένοι στην αρχή του δίσκου. (b) Ο δίσκος διαιρείται σε ομάδες κυλίνδρων (groups), και κάθε όμάδα έχει τα δικά της blocks και i-nodes.

Χρονο-προγραμματισμός βραχίονα (1) Ακολουθία απαιτούμενες κινήσεων βραχίονα: 11(αρχική θέση), 1, 36, 16, 34, 9, 12 First Come First Served (FCFS). Σύνολο = 1-11 + 36-1 + 16-36 + 34-16 + 9-34 + 12-9 = 111 Μειονέκτημα οι πολλές κινήσεις (κατά μέσο όρο).

Χρονο-προγραμματισμός βραχίονα (2) Shortest Seek First (SSF). Σύνολο = 12-11 + 9-12 + 16-9 + 1-16 + 34-1 + 36-34 = 61 Μειονέκτημα η προτίμηση στους μεσαίους κυλίνδρους.

Χρονο-προγραμματισμός βραχίονα (3) Elevator algorithm (αλγόριθμος ανελκυστήρα). Σύνολο = 12-11 + 16-12 + 34-16 + 36-34 + 36-9 + 1-9 = 60 Κίνηση προς τα Πάνω ή Κάτω.

Χρονο-προγραμματισμός βραχίονα (4) Elevator algorithm (αλγόριθμος ανελκυστήρα). Σύνολο = 12-11 + 16-12 + 34-16 + 36-34 + 36-40 + 1-0 + 1-9 = 38 Κυκλική κίνηση (πάντα προς μία κατεύθυνση).

Κρυφή μνήμη δίσκου (1) Disk cache: ειδική περιοχή της κύριας μνήμης που αποθηκεύει blocks του δίσκου που χρησιμοποιούνται συχνά για βελτίωση της απόδοσης ( virtual disk, RAM disk).

Κρυφή μνήμη δίσκου (2) virtual memory I/O H κρυφή μνήμη του δίσκου χρησιμοποιείται τόσο για τα κανονικά αρχεία όσο και για τις ανάγκες της ιδεατής μνήμης.

Κρυφή μνήμη δίσκου (3) Ο πίνακας κατακερματισμού δείχνει ποιά blocks είναι στη κρυφή μνήμη. Τα blocks είναι οργανωμένα σε διπλά συνδεδεμένη λίστα έτσι ώστε η κρυφή μνήμη εφαρμόζει μια παραλλαγή του αλγορίθμου LRU: Κεφαλή = Least Recently Used, Ουρά = Most Recently Used. Τα blocks συνδέονται φυσικά και λογικά (πχ i-node που δείχνει σε κατάλογο και αυτός σε i-node που δείχνει σε αρχείο).

Κρυφή μνήμη δίσκου (4) Τροποποίηση LRU Πρόβλημα συχνότητας χρήσης: Tα blocks αναφοράς (i-nodes, κατάλογοι) και τα γεμάτα ή σχεδόν γεμάτα με δεδομένα blocks χρησιμοποιούνται πιο συχνά, άρα πρέπει να τοποθετούνται προς στην ουρά της λίστας LRU. Πρόβλημα κατάρρευσης: Mερικά blocks είναι πιο απαραίτητα για την συνέπεια του συστήματος από άλλα: superblocks, i-nodes, κατάλογοι. Τα δεδομένα λιγότερο σημαντικά. Τα απαραίτητα blocks πρέπει να γράφονται συχνά στο δίσκο. Παλιότερα Windows: write-trhough disk cache (πιο καλό για usb) UNIX: buffered disk cache με αυτόματο συχνό sync (πιο αποδοτικό για σκληρούς δίσκους)..