ΟΡΓΑΝΩΣΗ ΚΑΙ ΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ

Σχετικά έγγραφα
ΟΡΓΑΝΩΣΗ ΚΑΙ ΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ

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

Σύστηµα Αρχείων και Καταλόγων

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

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

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

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

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Πανεπιστήµιο Θεσσαλίας

Επιµέλεια Θοδωρής Πιερράτος

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

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


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

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

Διαδικασιακός Προγραμματισμός

Επεξεργασία Ερωτήσεων

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

ENOTHTA 8 IAXEIPIΣH KAI ΣYΣTHMATA APXEIΩN


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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

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

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

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

S, (5, -3, 34, -23, 7) ( *, _

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

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

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

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

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

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων

Κεφάλαιο 10 ο Υποπρογράµµατα

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ. Επίπεδα Αφαίρεσης Σ Β. Αποθήκευση Εγγραφών - Ευρετήρια. ρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, Επίπεδο Όψεων.

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 10

Διαφορές single-processor αρχιτεκτονικών και SoCs

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Κατανεμημένα Συστήματα

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Συνεργείο Αυτοκινήτων

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

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

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

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

Κατανεµηµένασυστήµατα αρχείων

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Transcript:

ΟΡΓΑΝΩΣΗ ΚΑΙ ΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ ρ Ζαφείριος Καραισκος ΤΕΙ Λάρισας 2010

2 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή... 1 1.1 Εννοιες και ορισµοί οργάνωσης αρχείων...3 1.2 Συσκευές Ι/Ο...4 1.3 ίσκοι...5 2. Βασικό σύστηµα αρχείων... 7 2.1 Η διεπαφή...7 2.2 Πράξεις επί των αρχείων...8 2.3 Πράξεις µεταφοράς block δεδοµένων...11 2.4 Ροή δεδοµένων...12 2.5 Απαιτήσεις υλοποίησης...13 3. Βασικός Ι/Ο επόπτης... 16 3.1 Οδηγοί συσκευών...17 3.2 Ουρές αναµονής Ι/Ο αιτηµάτων...18 3.3 Έναρξη Ι/Ο...18 3.4 Τερµατισµός Ι/Ο...19 3.5 Υλοποίηση...19 4. Λογικές Ι/Ο έννοιες... 22 4.1 Ιδιότητες αρχείων...22 4.2 Ροή δεδοµένων από και προς το χρήστη...23 4.3 Τεχνικές προσωρινής Ι/Ο αποθήκευσης...24 5. Μέθοδοι προσπέλασης... 26 5.1 Πράξεις επί των αρχείων...26 5.2 Πράξεις επί των εγγραφών...29 5.3 Απαιτήσεις υλοποίησης των πράξεων...34 6. Σειριακά αρχεία... 37 6.1 Πράξεις επί των αρχείων...37 6.2 Πράξεις επί των εγγραφών...38 7. Άµεσα αρχεία... 39 7.1 Εργασίες επί των αρχείων...42 7.2 Πράξεις επί των εγγραφών...42 8. Ευρετήρια... 45 8.1 Πράξεις επί των αρχείων...46 8.2 Πράξεις επί των εγγραφών...47 8.3 Υλοποίηση...49

1. Εισαγωγή Τα δεδοµένα που επεξεργάζεται µια εφαρµογή φιλοξενούνται στη RAM του συστήµατος. Εποµένως, δεν θα µας είναι στο εξής διαθέσιµα αν πριν διακόψουµε την τροφοδοσία του συστήµατός µας (πριν δηλαδή εξαφανίσουµε όλα τα περιεχόµενα της κεντρικής µνήµης) δεν µεριµνήσουµε να τα αποθηκεύσουµε σε µία µόνιµη µνήµη, π.χ. σ ένα σκληρό δίσκο. Ένα αρχείο µπορούµε οποιαδήποτε στιγµή να το ανοίξουµε, να µεταφέρουµε δηλαδή ένα αντίγραφό του από το δίσκο στη RAM και να το διαχειρισθούµε (να προσθέσουµε, να αφαιρέσουµε ή να ταξινοµήσουµε τις εγγραφές του, να τροποποιήσουµε κάποιες απ αυτές, να το εκτυπώσουµε κ.λ.π.),µε την κατάλληλη εφαρµογή. Για παράδειγµα µπορούµε να δηµιουργήσουµε και να διαχειρισθούµε έγγραφα χρησιµοποιώντας έναν επεξεργαστή κειµένου. Επίσης µέσα από το περιβάλλον µιας γλώσσας προγραµµατισµού µπορούµε να δηµιουργήσουµε και να διαχειρισθούµε τα επιθυµητά κάθε φορά αρχεία δεδοµένων συγκεκριµένης δοµής. Ένα πρόγραµµα για να είναι κάθε στιγµή διαθέσιµο θα πρέπει να είναι, επίσης, αποθηκευµένο σε δίσκο υπό τη µορφή αρχείου προγράµµατος. 1.1 Εννοιες και ορισµοί οργάνωσης αρχείων Πεδίο (field) είναι η µικρότερη λογική υποδιαίρεση µιας εγγραφής που περιέχει µία συγκεκριµένη πληροφορία. Μπορεί να θεωρηθεί και σαν ένα (µεταξύ άλλων) χαρακτηριστικό γνώρισµα της εγγραφής. Η τιµή ενός πεδίου µιας εγγραφής µπορεί να είναι αριθµός (ακέραιος ή πραγµατικός), χαρακτήρας, οµάδα χαρακτήρων ή λογική σταθερά. (Λογική) εγγραφή (record) είναι µία συλλογή πεδίων, οι τιµές των οποίων είναι χαρακτηριστικά που περιγράφουν µια συγκεκριµένη οντότητα. Για παράδειγµα µία εγγραφή µπορεί να θεωρηθεί το σύνολο των πεδίων: ΟΝΟΜΑ, ΕΠΙΘΕΤΟ, ΙΕΥΘΥΝΣΗ, ΕΠΑΓΓΕΛΜΑ και ΤΗΛΕΦΩΝΟ, ενός συνδροµητή του τηλεφωνικού καταλόγου. Φυσική εγγραφή (physical record ή block) είναι µία φυσική ενότητα που σχηµατίζεται από οµαδοποιηµένες (λογικές) εγγραφές. Η χρήση των φυσικών εγγραφών συµβάλλει στην αύξηση της ταχύτητας κατά την εκτέλεση των προγραµµάτων. Ο αριθµός των εγγραφών που περιέχονται στην ίδια φυσική εγγραφή ονοµάζεται συντελεστής οµαδοποίησης. Αν ισχύει ΒF=1, τότε οι εγγραφές δεν είναι οµαδοποιηµένες και εποµένως ισχύει η ισότητα block = λογική εγγραφή. Επειδή για τη διακίνηση των πληροφοριών στις περιφερειακές µονάδες αποθήκευσης ενός Η/Υ χρησιµοποιείται το block, η οµαδοποίηση των εγγραφών επιφέρει σηµαντική οικονοµία χρόνου. Αρχείο (file) είναι ένα σύνολο εγγραφών που παρέχουν πληροφορίες σχετικές µε (έµψυχες ή άψυχες) οντότητες οι οποίες περιγράφονται από κοινά χαρακτηριστικά γνωρίσµατα και έχουν ορισµένη διάταξη για να εξυπηρετήσουν συγκεκριµένο στόχο. Για παράδειγµα οι εγγραφές των συνδροµητών που το επίθετό τους αρχίζει από «Α» αποτελούν ένα αρχείο. Όµοια το σύνολο των συνδροµητών που η διεύθυνσή τους αρχίζει από «Κ» αποτελούν ένα άλλο αρχείο κ.λ.π. 3

Κλειδί (key) µιας εγγραφής είναι ένα πεδίο το οποίο προσδιορίζει µονοσήµαντα τις εγγραφές ενός αρχείου, αυτό σηµαίνει ότι δεν µπορούν να υπάρξουν δύο εγγραφές µε το ίδιο κλειδί. Το κλειδί βρίσκεται πάντα σε µία σταθερή θέση µέσα στην εγγραφή, για παράδειγµα, είναι το 1 ο, το 2 ο ή οποιοδήποτε άλλο πεδίο. Οι λογικές εγγραφές, ανάλογα µε το µήκος τους, διακρίνονται σε εγγραφές σταθερού µήκους (fixed length records) και σε εγγραφές µεταβλητού µήκους (variable length records). Στην πρώτη κατηγορία πρόκειται για εγγραφές που έχουν το ίδιο µήκος σ όλη την έκταση του αρχείου και περιέχονται ακέραιες µέσα σε block. Τα πεδία τους έχουν το ίδιο µήκος σε κάθε εγγραφή. Στο µήκος αυτό θέτουµε συνήθως µία µέγιστη δυνατή τιµή ώστε το πεδίο να είναι σε θέση να φιλοξενήσει ανάλογου µήκους τιµές στις διάφορες εγγραφές του αρχείου. Με τις εγγραφές σταθερού µήκους, αν και διευκολύνεται τόσο ο σχεδιασµός όσο και ο προγραµµατισµός µιας εγγραφής, υπάρχει εντούτοις σπατάλη χώρου αποθήκευσης, εφόσον κάθε πεδίο καταλαµβάνει το µεγαλύτερο «χώρο» που µπορεί να απαιτηθεί και αντικαθιστά τον µη χρησιµοποιηθέντα µε διαδοχικά µηδενικά ή κενά. Στη δεύτερη κατηγορία πρόκειται για εγγραφές µε κύριο γνώρισµα την ύπαρξη πεδίων µεταβλητού µήκους. Εµείς θα ασχοληθούµε µόνο µε σταθερού µήκους εγγραφές. 1.2 Συσκευές Ι/Ο Η φιλοσοφία είναι να γίνει το υλικό του Η/Υ τελείως διαφανές, δηλαδή να αποκρυφτούν όλες οι τεχνικές λεπτοµέρειες που αφορούν το υλικό. Η χρήση γλωσσών προγραµµατισµού υψηλού επιπέδου όπως C, Java, οι µέθοδοι προσπέλασης και λειτουργικά συστήµατα εξυπηρετούν στην αποµόνωση του χρήστη από τις τεχνικές λεπτοµέρειες. Αυτό είναι αρκετό για τους συνήθεις χρήστες των Η/Υ αλλά δεν είναι αρκετό για τους σπουδαστές πληροφορικής. Η περιγραφή που ακολουθεί είναι γενική διότι οι διάφοροι κατασκευαστές χρησιµοποιούν διαφορετικές συσκευές και όχι πάντα την ίδια ορολογία. Τα προγράµµατα εκτελούνται στην κύρια µνήµη (RAM) του Η/Υ. Ένα πρόγραµµα µπορεί να προσπελάσει δεδοµένα εκτός RAM στέλνοντας εντολές στο δίαυλο. 4

Ο δίαυλος είναι η σύνδεση µεταξύ των προγραµµάτων στην κύρια µνήµη (RAM) και των συσκευών. Η µετάδοση δεδοµένων από τη CPU προς τις άλλες συσκευές και το αντίστροφο γίνεται µέσω του διαύλου. Μεταξύ του διαύλου και µιας συσκευής βρίσκεται ο ελεγκτής (controller) της συσκευής. Ιδίου τύπου συσκευές µπορούν να συνδεθούν µε τον ίδιο ελεγκτή. Ελεγκτές Οι ελεγκτές προγραµµατίζονται κατά τέτοιο τρόπο ώστε να στέλνουν τις κατάλληλες εντολές στην συσκευή. Ο ελεγκτής έχει καταχωρητές στους οποίους καταχωρούνται δεδοµένα τα οποία χρειάζονται για την αποστολή των κατάλληλων εντολών στη συσκευή. Συσκευές Μια συσκευή µπορεί να εκτελέσει κάποιες συγκεκριµένες εργασίες. Το πληκτρολόγιο να στείλει δεδοµένα στο πρόγραµµα, ο δίσκος να υποθηκεύσει δεδοµένα και να στείλει αποθηκεµένα δεδοµένα στο πρόγραµµα, κ.α. Σύστηµα αρχείων Η διεπαφή µεταξύ των εντολών READ/WRITE του προγράµµατος και των συσκευών είναι οι συναρτήσεις του λειτουργικού συστήµατος, οι οποίες δηµιουργούν τις κατάλληλες δοµές δεδοµένων που χρειάζεται για την Ι/Ο δεδοµένων και καταχωρούν τις κατάλληλες τιµές στους καταχωρητές των ελεγκτών έτσι ώστε να υλοποιηθεί η µεταφορά δεδοµένων. 1.3 ίσκοι 5

Ο σκληρός δίσκος αποτελείται από µια στοίβα δίσκων που περιστρέφονται γύρω από ένα κοινό άξονα. Σε κάθε επιφάνεια ενός δίσκου το µαγνητικό υλικό σχηµατίζει οµόκεντρους κύκλους που ονοµάζονται ίχνη και αριθµούνται από τον εξωτερικό προς τον πιο εσωτερικό ξεκινώντας µε το 0. Τα ίχνη, µε το ίδιο νούµερο, όλων των δίσκων σχηµατίζουν νοητά έναν κύλινδρο. Σε έναν µετακινούµενο βραχίονας στηρίζονται οι read/write κεφαλές µια για κάθε επιφάνεια, εκτός από την πρώτη και την τελευταία. Όλα τα ίχνη χωρίζονται στον ίδιο αριθµό τοµέων. Ένας τοµέας χωράει ακριβώς 512 byte (στα windows). Ο βραχίονας µετακινείται από τον πιο εξωτερικό κύλινδρο προς τον πιο εσωτερικό και αντίθετα. Η κίνηση από κύλινδρο σε κύλινδρο είναι γνωστή ως SEEKing. Αφού σταµατήσει στο σωστό, περιµένει να περάσει ο σωστός τοµέας που θα διαβάσει ή θα γράψει. Αυτό το χρονικό διάστηµα λέγεται περιστροφική καθυστέρηση (rotational delay). Πως βρίσκεται ο σωστός τοµέας σ' ένα σκληρό δίσκο; Η διεύθυνση ενός block δεδοµένων αποτελείται από τα εξής στοιχεία: (Αριθµός-κυλίνδρου, Αριθµός-κεφαλής ή επιφάνειας, Αριθµός-τοµέα) Οι εντολές που χρησιµοποιούνται για τον εντοπισµό του τοµέα λέγονται εντολές τοποθέτησης. Οι εντολές για τη µεταφορά δεδοµένων ονοµάζονται εντολές µεταφοράς δεδοµένων. Οι εντολές τοποθέτησης έχουν ως σκοπό την τοποθέτηση των κεφαλών στο σωστό κύλινδρο και την επιλογή της σωστής κεφαλής ή επιφάνειας, έτσι ώστε να διαβαστεί ή γραφτεί ο σωστός τοµέας. Η εντολή SEEK µετακινεί τον βραχίονα, χρησιµοποιώντας τον αριθµό του αντίστοιχου καταχωρητή. Συγκρίνει αυτόν τον αριθµό µε τον τρέχοντα και αν είναι µικρότερος µετακινείται προς τα πίσω αλλιώς προς τα µπροστά. Επίσης επιλέγεται και η επιφάνεια µε το περιεχόµενο του αντίστοιχου καταχωρητή. Η εντολή SEARCH διαβάζει τους αριθµούς των τοµέων καθώς αυτοί περνάνε κάτω από την κεφαλή λόγω της περιστροφής. Οι εντολές µεταφοράς δεδοµένων: η εντολή READ_BLOCK µεταφέρει είναι µπλοκ δεδοµένων από το δίσκο σε ένα buffer της RAM. Για να γίνει αυτό η εντολή χρειάζεται τη διεύθυνση του buffer στη RAM και το µέγεθος buffer (σε byte). Η εντολή WRITE_BLOCK µεταφέρει ένα µπλοκ δεδοµένων από ένα buffer της RAM στο δίσκο. Χρειάζεται και αυτή τη διεύθυνση του buffer στη RAM και το µέγεθος buffer (σε byte). 6

2. Βασικό σύστηµα αρχείων Είναι ένα στρώµα πάνω από τους συσκευές. Το λογισµικό ενός λειτουργικού συστήµατος που χειρίζεται τις συσκευές Ι/Ο και µεταφέρει µπλοκ δεδοµένων λέγεται βασικό σύστηµα αρχείων (ΒΣΑ). Το ΒΣΑ χρειάζεται για τους εξής λόγους: - Παρέχει κοινή διεπαφή για την υλοποίηση µπλοκ Ε/Ε. Αυτό απελευθερώνει το χρήστη από το να γνωρίζει τα χαρακτηριστικά των διαφόρων συσκευών του Η/Υ. - Παρέχει κεντρικό έλεγχο στη χρήση των συσκευών του Η/Υ. 2.1 Η διεπαφή Ένα ΒΣΑ παρέχει ως διεπαφή ένα τυποποιηµένο σύνολο κλήσεων συναρτήσεων για την υλοποίηση Ε/Ε αιτηµάτων. Κάθε πρόγραµµα του Η/Υ που χρειάζεται να εκτελέσει Ε/Ε πρέπει να χρησιµοποιήσει αυτή τη διεπαφή. Το ΒΣΑ για να κάνει τη δουλειά του πρέπει να: Ελέγχει τη δέσµευση χώρου στις συσκευές Να δεχθεί όλα τα αιτήµατα για Ε/Ε και να τα εξυπηρετήσει ένα-ένα. Να ελέγχει τις συσκευές, οι οποίες όπως είπαµε απαιτούν λεπτοµερή γνώση των (ιδιαίτερων) χαρακτηριστικών τους. Επεξεργαστεί όλους τους τερµατισµούς Ε/Ε (π.χ. διακοπές) ώστε να σιγουρέψει τη σωστή εκτέλεσή τους. Ειδοποιήσει το χρήστη ως προς το αν το Ε/Ε αίτηµα τερµάτισε µε επιτυχία ή όχι. π.χ. η read ή write κλήση συστήµατος. Ο ορισµός της διεπαφής του ΒΣΑ εξαρτάται από τα χαρακτηριστικά των γλωσσών προγραµµατισµού που χρησιµοποιούνται. Για παράδειγµα, τα περισσότερα προγράµµατα θα εκτελέσουν τη ακόλουθες λειτουργίες: CREATE (δηµιούργησε) ένα νέο αρχείο OPEN (άνοιξε) ένα υπάρχουν αρχείο πριν χρησιµοποιηθεί EXTEND (επέκτεινε) το µέγεθος ενός αρχείου CLOSE (κλείσε) ένα ανοιχτό αρχείο µετά τη χρήση του DELETE (διάγραψε) ένα υπάρχον αρχείο READ (διάβασε) δεδοµένα από ανοιχτό αρχείο WRITE (γράψε) δεδοµένα σε ανοιχτό αρχείο 7

Οι παραπάνω λειτουργίες µπορούν να χωριστούν σε 2 κατηγορίες: Πράξεις επί των αρχείων: CREATE, OPEN, EXTEND, CLOSE, DELETE Πράξεις µεταφοράς µπλοκ δεδοµένων: READ, WRITE To ΒΣΑ πρέπει να υλοποιήσει τις παραπάνω πράξεις µε εντολές των συσκευών. π.χ. µιας συσκευής δίσκου restore (κύλινδρος 0) seek (βρες κύλινδρο nr k) step step in step out read sector write sector read address read track write track force interrupt 2.2 Πράξεις επί των αρχείων CREATE_FILE: Σκοπός της CREATE_FILE είναι να δηµιουργήσει νέα αρχεία όταν χρειάζεται. εν πρέπει να δηµιουργούνται αρχεία χωρίς την CREATE_FILE, διότι έτσι διασφαλίζεται η µη δηµιουργία δεύτερου αρχείου µε το ίδιο όνοµα. Η CREATE_FILE δίνει στο αρχείο ένα µοναδικό όνοµα αρχείου. Οι εργασίες που πρέπει να γίνουν ώστε να δηµιουργηθεί το αρχείο είναι: (ι) Να ελεγχθεί αν υπάρχει αρχείο µε το ίδιο όνοµα. Στην περίπτωση που υπάρχει, πρέπει να ειδοποιηθεί ο καλών (caller της CREATE_FILE) µε κατάλληλο τρόπο. Πως γνωρίζει το ΒΣΑ ότι υπάρχει ή δεν υπάρχει άλλο αρχείο µε το ίδιο όνοµα; Υπάρχει µια λίστα µε το ονόµατα των αρχείων, που ονοµάζεται directory (κατάλογος). (Ως χρήστες πολλές φορές ζητούµε να δούµε µια λίστα µε τα ονόµατα των αρχείων που περιέχονται σ' ένα φάκελο. Αυτή η λίστα προέρχεται από τον κατάλογο). Το όνοµα του αρχείου αναζητείται στον κατάλογο και αν βρεθεί τότε δεν µπορεί να δηµιουργηθεί άλλο από το ΒΣΑ και το γνωστοποιεί στο καλόν πρόγραµµα. Αν δεν βρεθεί τότε η CREATE-ALF τοποθετεί το όνοµα του νέου αρχείου στον κατάλογο. (ii) Ελέγχει αν υπάρχουν χώρος έστω για µια εγγραφή. Αν δεν υπάρχει πρέπει να ειδοποιηθεί το καλόν πρόγραµµα. (iii) Καταχωρεί ένα pointer στον κατάλογο που δείχνει στον πρώτο τοµές (sector) που καταλαµβάνει το αρχείο. Με αυτό τον τρόπο εντοπίζεται ένα αρχείο όταν δοθεί το όνοµά του. (ιv) εσµεύει χώρο στη µνήµη RAM για τη µεταφορά των δεδοµένων από το δίσκο. Αυτοί οι χώροι ονοµάζονται Ι/Ο buffers. Το ΒΣΑ µπορεί να δεσµεύει περισσότερα από ένα Ι/Ο buffers ώστε να επεξεργαστεί µε επιτυχία τα αιτήµατα. 8

ηµιουργεί έναν πίνακα, γνωστό µε το όνοµα File Control Block (Μπλοκ Ελέγχου του Αρχείου) στον οποίο αποθηκεύονται διάφορες πληροφορίες που είναι κρίσιµες για το αρχείο. (εκτός από το όνοµα, το τρέχον µέγεθος του αρχείου, το µέγεθος του µπλοκ, κτλ.). (v) Επιστρέφει επιτυχία ή αποτυχία στο καλόν πρόγραµµα. Αφού τελειώσει η CREATE_FILE πρέπει να επιστρέψει τον έλεγχο της εκτέλεσης στο καλόν πρόγραµµα. Το αρχείο που µόλις δηµιουργήθηκε παραµένει ανοιχτό. Άρα δεδοµένα σφάλµατα µπορούν να γράφουν αµέσως. Σφάλµατα: Υπάρχει αρχείο µε το ίδιο όνοµα. Η συσκευή δεν έχει χώρο. Η συσκευή δε λειτουργεί ή έχει πρόβληµα. Κάποιε παράµετροι δεν είναι σωστές. OPEN_FILE: Σκοπός του OPEN_FILE είναι να επιτρέψει στον χρήστη να εντοπίζει και να προσπελαύνει υπάρχοντα αρχεία. Η διαφορά µεταξύ του OPEN_FILE από το CREATE_FILE είναι η ύπαρξη ή µη του αρχείου. Οι πληροφορίες που χρειάζεται η OPEN_FILE διαφέρουν από αυτές που χρειάζεται η CREATE_FILE διότι όλες οι κρίσιµες πληροφορίες είναι καταχωρηµένες στο File Control Block. Συνεπώς, η OPEN_FILE χρειάζεται µόνο να εντοπίσει και να διαβάσει αυτές τις πληροφορίες, γνωστές ως ιδιότητες του αρχείου. Αυτό γίνεται µε το όνοµα του αρχείου, το οποίο είναι µοναδικό στον κατάλογο. Οι εργασίες που πρέπει να γίνουν ώστε να ανοίξει το αρχείο είναι οι ακόλουθες: i. έσµευση χώρου για το FCB. ιότι το FCB απαιτείται για την αποθήκευση (φύλαξη) κρίσιµων πληροφοριών απαραίτητων για τη σωστή επεξεργασία του αρχείου. ii. iii. Εντοπισµός του αρχείου. Βάση του ονόµατος του αρχείου γίνεται ο εντοπισµός του στον τρέχοντα κατάλογο. (Αν το όνοµα είναι το πλήρες µονοπάτι τότε ο εντοπισµός θα γίνει µέσω των καταλόγων που περιέχονται στο µονοπάτι). ε θα το εντοπίσει, αν ο χρήστης δεν πληκτρολόγησε το όνοµα σωστά ή το αρχείο να δεν υπάρχει, επειδή διαγράφηκε ή δε δηµιουργήθηκε ποτέ. Αν το εντοπίσει, τότε η θέση του στο δίσκο είναι καταχωρηµένη στον κατάλογο. έσµευση χώρου στη RAM για το Ι/Ο buffer. Το ΒΣΑ πλέον γνωρίζει τη θέση του αρχείου στο δίσκο. Η επόµενη εργασία είναι να δεσµεύσει χώρο στο δίσκο για κάθε Ι/Ο buffer. iv. Το ΒΣΑ ελέγχει αν υπάρχει άλλος που θα χρησιµοποιεί το ίδιο αρχείο. Αν υπάρχει, τότε (it is up to) ωφελείται στο ΒΣΑ να εγγυηθεί ότι ο ένας χρήστης δε θα καταστρέψει τα δεδοµένα του άλλου. v. Ειδοποίηση στον χρήστη ότι το αρχείο άνοιξε επιτυχώς ή ανεπιτυχώς. Σφάλµατα: Το αρχείο δε βρέθηκε. Το αρχείο χρησιµοποιείται. Το υλικό έχει πρόβληµα. 9

EXTEND_FILE: Σκοπός του EXTEND_FILE είναι να επιτρέψει στους χρήστες να αυξήσουν το µέγεθος ενός αρχείου. Αν ο χρήστης δεν κάνει ρητή χρήση του EXTEND_FILE µπορεί το ΒΣΑ, αν έχει τη δυνατότητα, να µεγαλώσει το αρχείο για χάρη του χρήστη. Αυτό γίνεται ώστε να µη χαθούν δεδοµένα, άλλα και για να τερµατίσει µε επιτυχία η κλήση. Οι πληροφορίες που χρειάζονται για να πραγµατοποιηθεί η επέκταση είναι: Ο κατάλογος στον οποίο καταχωρήθηκε το όνοµα του αρχείου Το όνοµα του αρχείου Το µέγεθος της αύξησης. Οι εργασίες που πρέπει να γίνουν είναι: 1. Έλεγχος ορθότητας των παραµέτρων. 2. Έλεγχος ύπαρξης του επιπλέον χώρου στη συσκευή. 3. Πρόσθεση του χώρου στο αρχείο και καταχώρηση των ανάλογων πληροφορικών. 4. Επιστροφή επιτυχίας ή αποτυχίας στο χρήστη. Σφάλµατα. Η συσκευή δεν έχει αρκετό χώρο για την επέκταση. Το αρχείο δεν είναι ανοιχτό. Αν εξετάσουµε τις γλώσσες προγραµµατισµού θα δούµε ότι δεν υπάρχει εντολή ή συνάρτηση αντίστοιχα της EXTEND_FILE. Άρα η επέκταση γίνεται εσωτερικά ή αιτείται µέσω άλλης διεπαφής. CLOSE_FILE: Σκοπός του CLOSE_FILE είναι να επιτρέψει στο χρήστη να κλείσει το αρχείο, δηλαδή να το κάνει µη προσβάσιµο για το ίδιο. Άλλοι χρήστες µπορούν να συνεχίσουν να χρησιµοποιούν το αρχείο. Για να κλείσει ένα ανοιχτό αρχείο το ΒΣΑ χρειάζεται µόνο το όνοµα του. Στη συνέχεια γίνονται οι εξής εργασίες: (ι) Καταχώρηση του περιεχοµένου των Ι/Ο buffers στη συσκευή. Όταν ένα πρόγραµµα τερµατίσει ή διακοπεί (abort) τότε το ΒΣΑ θα κλείσει όλα τα αρχεία που το πρόγραµµα άνοιξε. Αυτό γίνεται για την προστασία των δεδοµένων. (ii) Καταχώρηση των πληροφοριών που αφορούν το αρχείο, διότι µπορεί να άλλαξαν. (iii) Απελευθέρωση τη µνήµης RAM που χρησιµοποιήθηκε για τα buffer και άλλες δοµές δεδοµένων, που σχετίζονται µε το αρχείο. (iv) Επιστροφή στο χρήση της επιτυχίας ή αποτυχίας του κλεισίµατος. Σφάλµατα Το αρχείο δεν είναι ανοιχτό. Λάθη του WRITE_BLOCK Πρόβληµα υλικού DELETE_FILE: Σκοπός του DELETE_FILE είναι να διαγράψει το αρχείο από το σύστηµα. Αυτό γίνεται όταν ο χρήστης δε χρειάζεται άλλο ένα αρχείο και επιθυµεί την απελευθέρωση του χώρο που καταλαµβάνει. Ο χώρος που απελευθερώνεται µπορεί να ξαναχρησιµοποιηθεί από άλλα αρχεία. Οι πληροφορίες που χρειάζονται για τη διαγραφή ενός αρχείου είναι το όνοµα του αρχείου, εφόσον έχει την άδεια να το διαγράψει. 10

εδοµένου του ονόµατος του αρχείου, το DELETE_FILE µπορεί να διαγράψει το αρχείο εφόσον αυτό είναι κλειστό. Και αυτό, διότι δε θα θέλαµε να διαγράψει ένα αρχείο όταν το χρησιµοποιεί κάποιος άλλος. Για να διαγράψει ένα αρχείο χρειάζεται να εκτελεστούν οι ακόλουθες εργασίες. Οι εργασίες αυτές επαναφέρουν οτιδήποτε έκανε το CREATE-FILE για να καταχωρήσει το αρχείο στο σύστηµα. (i) Έλεγχος ορθότητας των παραµέτρων. (ii) Απελευθέρωση του χώρου της συσκευής που καταλάµβανε το αρχείο για τις εγγραφές και άλλες κρίσιµες πληροφορίες. Ο χώρος αυτός µπορεί να ξαναχρησιµοποιηθεί από άλλο αρχείο. (iii) ιαγραφή του ονόµατος του αρχείου από τον κατάλογο στον οποίο περιέχεται. Αυτή είναι η φυσική διαγραφή του αρχείου. Μπορεί να γίνει λογική διαγραφή του αρχείου χρησιµοποιώντας µια flag ενός bit ή ενός byte η τιµή της οποίας θα δηλώνει αν το όνοµα του αρχείου είναι διαγραµµένο ή όχι. Το πλεονέκτηµα της λογικής διαγραφής είναι ότι µπορεί να γίνει εύκολα επαναφορά του αρχείου, αν διαγραφεί από λάθος, αλλάζοντας την τιµή της flag. Βέβαια για να πετύχει η επαναφορά, πρέπει να γίνει αµέσως µετά τη διαγραφή, διότι διαφορετικά η καταχώρηση αυτή µπορεί να χρησιµοποιηθεί για άλλο αρχείο. Το µειονέκτηµα είναι ότι πρέπει να γίνεται πάντα έλεγχος της flag, όταν προσπελαύνεται το αρχείο. (iv) Επιστροφή επιτυχίας ή αποτυχίας. Σφάλµατα - Το αρχείο δεν υπάρχει - Το αρχείο χρησιµοποιείται από άλλους χρήστες. - Πρόβληµα υλικού. 2.3 Πράξεις µεταφοράς block δεδοµένων Για να υλοποιηθούν αυτές οι πράξεις, πρέπει το αρχείο να είναι ανοιχτό. Πρέπει να αναφέρουµε ότι το ΒΣΑ απλώς διαβάζει ή γράφει τα µπλοκ που ζητήθηκαν, δεν καταλαβαίνει το περιεχόµενο των µπλοκ. Ένα µπλοκ δεδοµένων είναι µια µονάδα (unit) δεδοµένων που µεταφέρεται από και προς τη συσκευή. Το µέγεθος του µπλοκ καθορίζεται από το χρήστη. Μεγάλα µπλοκ είναι προτιµότερα από µικρά µπλοκ για την απόδοση του συστήµατος. Ο χρήστης εκτός από το µέγεθος καθορίζει και τη θέση του µπλοκ µέσα στο αρχείο, µε ένα Λογικό Αριθµό Μπλοκ. Ο Λογικός Αριθµός του Μπλοκ µετατρέπεται σε ένα ή περισσότερους Φυσικούς Αριθµούς Μπλοκ. Ο υπολογισµός αυτός γίνεται από το ΒΣΑ και είναι άγνωστος στο χρήστη. 11

WRITE_BLOCK: Σκοπός του WRITE_BLOCK είναι να παρέχει στους χρήστες τη δυνατότητα του Η/Υ στη συσκευή. Η µονάδα δεδοµένων που γράφεται ονοµάζεται µπλοκ. Οι πληροφορίες που χρειάζεται για την υλοποίηση του WRITE_BLOCK είναι: - Ο αριθµός του block. - Η διεύθυνση τον Ι/Ο buffer στην κύρια µνήµη που περιέχει τα δεδοµένα που πρέπει να µεταφερθούν στη συσκευή. - Το µέγεθος του block. - Το πεδίο κατάστασης, όπου θα καταχωρηθεί το αποτέλεσµα της WRITE_BLOCK. Το WRITE_BLOCK πρέπει να εκτελέσει τις ακόλουθες εργασίες: 1. Έλεγχος ορθότητας των παραµέτρων. 2. Μετατροπή του Λογικού Αριθµού Μπλοκ σε διεύθυνση της συσκευής. 3. Έλεγχος ύπαρξης του χώρου στο αρχείο. 4. Αν δεν υπάρχει τότε γίνεται πρώτα επέκταση του αρχείου. Αν υπάρχει γίνεται η µεταφορά του µπλοκ. 5. Η flag του Ι/Ο buffer δείχνει ότι έγινε η µεταφορά άρα µπορεί να γεµίσει µε νέα δεδοµένα αν χρειάζεται. 6. Επιστροφή επιτυχίας ή αποτυχίας. Σφάλµατα - εν υπάρχει χώρος. - Πρόβληµα υλικού. READ_BLOCK: Σκοπός του READ_BLOCK είναι η µεταφορά ενός µπλοκ δεδοµένων από τη συσκευή στην κύρια µνήµη. Η µονάδα δεδοµένων που διαβάζεται λέγεται µπλοκ. Οι πληροφορίες που χρειάζεται για την υλοποίηση του READ_BLOCK είναι: Ο αριθµός του µπλοκ. Η διεύθυνση του Ι/Ο buffer στην κύρια µνήµη όπου θα µεταφερθούν τα δεδοµένα από τη συσκευή. Ο αριθµός των δεδοµένων που πρέπει να διαβαστούν. Το πεδίο κατάστασης στο οποίο θα καταχωρηθεί το αποτέλεσµα της READ_BLOCK. Το READ-BLOCKπρέπει να εκτελέσει τις εξής εργασίες: 1. Έλεγχος ορθότητας των παραµέτρων. 2. Μετατροπή του Λογικού Αριθµού Μπλοκ σε διεύθυνση της συσκευής. 3. Μεταφορά των δεδοµένων από τη συσκευή στο Ι/Ο buffer. 4. Επιστροφή επιτυχίας ή αποτυχίας. Σφάλµατα - Σφάλµα διαβάσµατος (read error) - Εσφαλµένος αριθµός µπλοκ. - Πρόβληµα υλικού. 2.4 Ροή δεδοµένων 12

{ { 2.5 Απαιτήσεις υλοποίησης Το σχήµα που ακολουθεί απεικονίζει τον τρόπο µε τον οποίο το ΒΣΑ δένει µεταξύ τους διάφορους πίνακες ελέγχου και τα Ι/Ο buffer. Κατ' αρχή (βήµα 1) υπάρχει ένα FCB (File Control Block) για κάθε ανοιχτό αρχείο. 13

1 FCB next FCB... I/O buffer...... DCT 5 IOBCT I/O buffer 2 Device Control Block next DCB... I/O Request Queue Τύπος συσκευής HW διεύθ. συσκευής Χαρακτηριστικά συσκευής... 3 I/O Request Queue ΒΣΑ 4 Συσκευές Επιπροσθέτως, υπάρχει ένα Device Control Table (DCT) (βήµα 2) για κάθε συσκευή του συστήµατος. ΤΟ DCT δείχνει και σε µια ουρά- αιτηµάτων που περιµένουν να εξυπηρετηθούν. Αυτή η ουρά ονοµάζεται Ι/Ο Request Queue (IORQ) (βήµα 3). Συνδεδεµένη µε κάθε συσκευή είναι η δοµή του αρχείου της συσκευής. (βήµα 4). Η δοµή δίσκων αποτελείται από τον πίνακα καταµερισµού (allocation table) και τον κατάλογο αρχείων (directory) του συστήµατος. Αυτό επιτρέπει στο ΒΣΑ να δεσµεύσει χώρο στο δίσκο καθώς και να εντοπίζει υπάρχοντα αρχεία. Υπάρχουν τα Ι/Ο buffer (βήµα 5) στα οποία ή από τα οποία µεταφέρονται τα δεδοµένα. Αυτά τα buffer ελέγχονται από το IOBCT (I/O Buffer Control Table). 14

{ Το IOBCT περιέχει πληροφορίες που περιγράφουν την τρέχουσα κατάσταση και το περιεχόµενο του συγκεκριµένου buffer. Εποµένως, υπάρχει ένα IOBCT για κάθε Ι/Ο buffer του συστήµατος το οποίο περιέχει πληροφορίες όπως: Τον αριθµό του φυσικού και τον αριθµό του λογικού µπλοκ που βρίσκεται στο buffer. ιεύθυνση και µέγεθος του Ι/) buffer στη RAM. Flags που βοηθούν το σύστηµα αρχείων να διαχειριστεί το Ι/Ο buffer. 15

3. Βασικός Ι/Ο επόπτης Ο Βασικός Ι/Ο επόπτης (supervisor) είναι εκείνη η συνιστώσα του ΒΣΑ που είναι υπεύθυνη για Ι/Ο έναρξη και τερµατισµό. Μέχρι τώρα στη µελέτη του ΒΣΑ, αφήσαµε κάποια ζητήµατα χωρίς να τα εξετάσουµε, όπως: Πως προσδιορίζεται η επόµενη εργασία που θα διεκπαιρεωθεί; Αυτό επηρεάζει τον τρόπο µε τον οποίο οι συσκευές κατανέµονται σε όλους τους χρήστες. Πως µπορεί ο χρήστης να ζητήσει συγκεκριµένη συσκευή για κάποια εργασία; Πως κατανέµεται ο χώρος του δίσκου στους χρήστες του συστήµατος, και ποιος εξασφαλίζει ότι ο ίδιος χώρος δεν θα χορηγηθεί σε δύο χρήστες; Πως γίνεται ο χειρισµός των Ι/Ο buffer; Οι απαντήσεις σ' αυτά τα ερωτήµατα βρίσκονται σε ένα κοµµάτι του λογισµικού ένα επίπεδο πάνω από το ΒΣΑ. Χρονοπρογραµµατιστής εργασιών ουλεία του χρονοπρογραµµατιστή εργασιών είναι να επιλέγει την επόµενη εργασία που θα εκτελεστεί. Η επίδρασή του στο ΒΣΑ είναι σηµαντική. { Ο χρονοπρογραµµατιστής διαλέγει την επόµενη διεργασία από την ουρά και το δίνει στον υπεξεργαστή για εκτέλεση. Μια διεργασία θα ελευθερώσει τον επεξεργαστή όταν τελειώσει ο χρόνος που της έχει διατεθεί ή χρειαστεί να εκτελέσει Ι/Ο. Ο χρονοπρογραµµατιστής πρέπει να εξασφαλίζει την εξυπηρέτηση όλων των διεργασιών. Ο χρονοπρογραµµατισµός εξασφαλίζει µε αυτόν τον τρόπο την αποδοτική χρήση ενός Η/Υ. ιαχείριση της κυρίας µνήµης Όσον αφορά το χειρισµό της κυρίας µνήµης, µας ενδιαφέρει η δέσµευση µνήµης για τα Ι/Ο buffer και οι πληροφορίες ελέγχου που χρειάζονται για να εκτελεστούν οι Ι/Ο πράξεις µε ένα τρόπο αποδοτικό και αποτελεσµατικό. 16

Το σύστηµα αρχείων χρειάζεται τη χορήγηση µνήµης για - τα Ι/Ο buffer - τους Ι/Ο πίνακες στους οποίους θα καταχωρηθούν τα µπλοκ ελέγχου (control block) για τα οποία µιλήσαµε προηγουµένως. Αυτοί οι πίνακες περιέχουν όλες τις πληροφορίες που το σύστηµα αρχείων χρειάζεται για να παρακολουθεί την πρόοδο των Ι/Ο αιτηµάτων. Είναι σηµαντικό η µνήµη που χρησιµοποιείται για τις Ι/Ο πράξεις να παραµένει δεσµευµένη κατά τη διάρκεια της Ι/Ο πράξης, ανεξάρτητα από τα πως η υπόλοιπη µνήµη διευθύνεται. Όσον αφορά τους πίνακες, ο FCB δεν χρειάζεται µόνιµα στη µνήµη, χρειάζεται µόνο όταν πρέπει να εκτελεστεί µια Ι/Ο πράξη. Οι πίνακες IORQ, IOBCT και DCT πρέπει να βρίσκονται µόνιµα στη µνήµη. ιαχείριση των συσκευών. ουλεία του διαχειριστή συσκευών είναι να χορηγεί ή εκχωρεί τις συσκευές στους διάφορους χρήστες. Αυτό σηµαίνει ότι ο χειριστής συσκευών πρέπει να παρακολουθεί τι ζητάει ο κάθε χρήστης και τι κατέχει. Οι ρουτίνες του πρέπει να εξασφαλίζουν ότι όλοι οι πόροι του συστήµατος κατανέµονται, αποδεσµεύονται και ελέγχονται σωστά. Κάποιες συσκευές µπορούν να χρησιµοποιηθούν από ένα χρήστη κάθε φορά, π.χ. ο εκτυπωτής, ο scanner (σαρωτής), κ.α. Αυτού του είδους οι συσκευές είναι µη-κοινές ή κατεχόµενες αποκλειστικά. Από την άλλη πλευρά, υπάρχουν συσκευές τις οποίες µπορούν να χρησιµοποιήσουν ταυτόχρονα πολλοί χρήστες, π.χ. ο σκληρός δίσκος. Αυτές οι συσκευές καλούνται κοινέςσυσκευές. Ο χρονοπρογραµµατιστής αναβάλλει τη χορήγηση µιας µη-κοινής συσκευής σε µια διεργασία µέχρι η συσκευή να είναι διαθέσιµη. Αυτό µπορεί να επιφέρει µακρές καθυστερήσεις στην εκτέλεση των διεργασιών. 3.1 Οδηγοί συσκευών Ο οδηγός µιας συσκευής είναι µια ρουτίνα η οποία γνωρίζει πώς να ελέγχει και να λειτουργεί τη συσκευή. Είναι ευθύνη του οδηγού συσκευής να εξασφαλίζει τη σωστή και αποδοτική εκτέλεση Ι/Ο πράξεων. Επιπρόσθετα, όταν παρουσιάζεται σφάλµα, είναι ευθύνη του να επανέλθει από το σφάλµα. Οι εργασίες που εκτελούνται από του οδηγούς συσκευών µπορούν να διαχωριστούν σε δύο κατηγορίες: στην έναρξη των Ι/Ο πράξεων και τον τερµατισµό τους. Οι εργασίες αυτές θα συζητηθούν στις επόµενες ενότητες. Οι οδηγοί συσκευών προκειµένου τις απαραίτητες πληροφορίες στον πίνακα DCT. Αυτές οι πληροφορίες διατηρούνται για κάθε συσκευή του συστήµατος. 17

3.2 Ουρές αναµονής Ι/Ο αιτηµάτων FIFO ουρές Ι/Ο αιτηµάτων Κάθε εισερχόµενο αίτηµα εισάγεται στο τέλος της ουράς Ι/Ο αιτηµάτων. Όταν τερµατίσει η τρέχουσα Ι/Ο πράξη για τη συγκεκριµένη συσκευή, επιλέγεται το πρώτο Ι/Ο αίτηµα από την αντίστοιχη ουρά. Στις FIFO ουρές, όλα τα Ι/Ο αιτήµατα αντιµετωπίζονται ίσα. Μειονέκτηµα αυτού του αλγορίθµου είναι ότι αν συµβεί ένα γεγονός υψηλής προτεραιότητας, θα εξυπηρετηθεί αφού πρώτα εξυπηρετηθούν τα αιτήµατα που προηγούνται στην ουρά. Ουρές Ι/Ο αιτηµάτων βασισµένες στην προτεραιότητα Η ιδέα είναι ότι υπάρχουν διεργασίες που είναι πιο σηµαντικές από άλλες. Όταν µια υψηλότερης προτεραιότητας διεργασία αιτείται Ι/Ο, τότε πρέπει να εξυπηρετηθεί πριν από τα άλλα αιτήµατα της ουράς µε χαµηλότερη προτεραιότητα. Αν υπάρχουν πολλά επίπεδα προτεραιότητας, τότε σε κάθε επίπεδο υπάρχει µια FIFO ουρά. Συνήθως, οι κρίσιµες διεργασίες είναι αυτές που προτιµώνται από άλλες πιο συνήθεις διεργασίες. Για παράδειγµα αν υπάρχει µια διεργασία µεγάλης εκτύπωσης τότε µπορεί να εξυπηρετηθεί νύχτα όταν δεν υπάρχουν διεργασίες προτεραιότητας. (π.χ. οι αναλυτικές καταστάσεις Τραπεζικών λογαριασµών). Ουρές συγκεκριµένων συσκευών. Συνήθως αφορούν δίσκους, τους οποίους προσπαθούν να χρησιµοποιήσουν µε τον αποδοτικότερο τρόπο. 3.3 Έναρξη Ι/Ο Οπότε µια συσκευή είναι αδρανής, το σύστηµα αρχείων επιλέγει από την αντίστοιχη Ι/Ο ουρά, το επόµενο αίτηµα και αρχίζει την εκτέλεσή του. Αυτή η ακολουθία γεγονότων είναι γνωστή ως έναρξη Ι/Ο. Η ακολουθία αυτή µπορεί να αποδοθεί µε τον εξής αλγόριθµο: Επανάλαβε Είσοδος του Ι/Ο αιτήµατος στην ουρά (εφόσον υπάρχει αίτηµα) Αν η συσκευή είναι αδρανής τότε Αν η ουρά δεν είναι άδεια τότε Επέλεξε το επόµενο Ι/Ο αίτηµα; Ξεκίνα το Ι/Ο Γνωστοποίηση τερµατισµού µε polling ή interrupt; 18

Αν Ι/Ο OK, τότε Ενηµέρωσε το χρήστη; Πήγαινε στο "Αν η ουρά δεν είναι άδεια" αλλιώς Αν πρέπει να ξαναπροσπαθήσει τότε ανάκαµψη; Πήγαινε στο ξεκίνηµα του Ι/Ο 3.4 Τερµατισµός Ι/Ο Υπάρχουν δύο τρόποι γνωστοποίησης του τερµατισµού Ι/Ο. ειγµατοληψία (Polling) και ιακοπή (Interrupt). Polling (δειγµατοληψία) γίνεται µε τον έλεγχο ενός status bit (ψηφίο κατάστασης). Σε παλιά χρονικά διαστήµατα γίνεται έλεγχος του ψηφίου αυτού για να διαπιστωθεί αν είναι απασχοληµένο ή αδρανές. Όταν διαπιστώνεται ότι είναι αδρανές, τότε το σύστηµα αρχείων επιλέγει το επόµενο Ι/Ο αίτηµα από την ουρά και ξεκινά το Ι/Ο. Το µειονέκτηµα της δειγµατοληψίας είναι ότι το σύστηµα σπαταλά πολύτιµο χρόνο ελέγχοντας συνεχώς το ψηφίο κατάστασης. Η διακοπή (interrupt) λαµβάνει χώρα όταν τερµατίσει η συσκευή και ενεργοποιεί µια διαδικασία η οποία διεκπεραιώνει τη λήξη του Ι/Ο και συνεχίζει µε τη ρουτίνα έναρξης. 3.5 Υλοποίηση Η IORQ υλοποιείται µε tables όπως φαίνεται στο σχήµα που ακολουθεί. 19

FCB next FCB... DCT... DCT next FCB... IORQ... IORQ next request queue Τρέχον αίτηµα Τελευταίο αίτηµα Max αριθµός αιτηµάτων Τρέχων κύλινδρος Τρέχων τοµέας Κατεύθυνση Αλγόριθµος... Ι/Ο εντολές του οδηγού συσκευής Ι/Ο προτεραιότητα Ι/Ο εντολές του οδηγού συσκευής Ι/Ο προτεραιότητα Ι/Ο εντολές του οδηγού συσκευής Ι/Ο προτεραιότητα Οι πληροφορίες που περιέχονται σε ένα πίνακα IORQ είναι οι εξής: Σύνδεσµος µε τον επόµενη IORQ. Σύνδεσµος µε τον κόµβο του αιτήµατος που εξυπηρετείται από την συσκευή. Σύνδεσµος µε τον τελευταίο κόµβο της ουράς. Μέγιστος (αν υπάρχει) αριθµός αιτηµάτων στην ουρά. Ο αλγόριθµος που χρησιµοποιείται (για διαφορετικές συσκευές, διαφορετικοί αλγόριθµοι). Κύλινδροι, sector, κατεύθυνση (αν είναι δίσκος). Σε κάθε κόµβο της ουράς καταχωρούνται οι εξής πληροφορίες: Η διεύθυνση του device driver. 20

Η προτεραιότητα του αιτήµατος. Πολλά συστήµατα διατηρούν και ένα error log αρχείο, στο οποίο καταχωρούνται τα σφάλµατα που παρουσιάστηκαν στις συσκευές. 21

4. Λογικές Ι/Ο έννοιες Λογικό Ι/Ο είναι εκείνο το τµήµα του συστήµατος αρχείων που επιτρέπει στα προγράµµατα του χρήστη να προσπελάσουν τις λογικές εγγραφές δεδοµένων. Το βασικό σύστηµα αρχείων (ΒΣΑ) δεν είναι ορατό από τον µέσο χρήστη. Το σύστηµα αρχείων και δυνατότητές τους είναι ορατές µόνο µέσω της γλώσσας προγραµµατισµού. Αν η γλώσσα προγραµµατισµού προσφέρει ένα ευρύ πεδίο Ι/Ο δυνατοτήτων, ο χρήστης µπορεί να αξιοποιήσει ένα µεγάλο τµήµα του συστήµατος αρχείων. Ένα πλεονέκτηµα του λογικού Ι/Ο είναι ότι επιτρέπει το χρήστη να σκέφτεται σε σχέση µε την υλοποίηση της εφαρµογής και όχι σε σχέση µε τη διεπαφή της µε το σύστηµα. ηλαδή, ο χρήστης µπορεί να σκέφτεται σχετικά µε τις λογικές εγγραφές και όχι µε τα µπλοκ τα οποία επεξεργάζεται το ΒΣΑ. Είναι πιο εύκολο να κατανοηθεί η εγγραφή αφού είναι εύκολο να σχηµατισουµε την εικόνα της εγγραφής ενός σπουδαστή, εργαζοµένου, καθηγητή, κ.α. Ενώ το ΒΣΑ διαβάζει και γράφει µπλοκ δεδοµένων, το λογικό Ι/Ο διαβάζει και γράφει εγγραφές δεδοµένων. Το πρώτο είναι γνωστό ως φυσικό Ι/Ο αφού ασχολείται µε τη φυσική ή πραγµατική είσοδο και έξοδο των µπλοκ στις διάφορες συσκευές. Το λογικό Ι/Ο διαβάζει κα γράφει εγγραφές ακόµη και αν πρέπει να διαβαστεί ή να γραφτεί ένα φυσικό µπλοκ την ίδια στιγµή. Συνεπώς, το λογικό Ι/Ο ασχολείται µε εγγραφές δεδοµένων. Επειδή οι εγγραφές δεδοµένων διαµένουν µέσα σε µπλοκ, τα οποία πρέπει να µεταφερθούν στην κύρια µνήµη, όλο το λογικό Ι/Ο λαµβάνει χώρα µέσα στην κύρια µνήµη. Κατά συνέπεια το λογικό Ι/Ο είναι σηµαντικά ταχύτερο από το φυσικό Ι/Ο αφού η ταχύτητα επεξεργαστή-µνήµης είναι σηµαντικά µεγαλύτερη από το δίσκο. Ο πρωταρχικός σκοπός του λογικού Ι/Ο είναι να παρέχει στο χρήστη τις ακόλουθες δυνατότητες. Πρότυπη διεπαφή για την τέλεση Ι/Ο Πρότυπο σύνολο µε οργανώσεις αρχείων Γενικευµένη διαχείριση δεδοµένων για όλους τους χρήστες. Πρότυπη διεπαφή µε τις συσκευές. Έτσι ο χρήστης δε χρειάζεται να ξαναγράψει την εφαρµογή του επειδή συνέδεσε µια νέα συσκευή. 4.1 Ιδιότητες αρχείων Οι ιδιότητες αρχείων είναι πληροφορίες πολύ χρήσιµες για της µεθόδους προσπέλασης. Ένα υποσύνολο αυτών είναι οι παρακάτω: Όνοµα αρχείου Οργάνωση αρχείου (Οργάνωση αρχείων= διευθέτηση εγγράφων) Μορφή εγγραφής ( ιάταξη περιεχοµένου εγγραφής) Μέγεθος εγγραφής Μέγεθος αρχείου Μέγεθος µπλοκ; Κάποιες από τις παραπάνω ιδιότητες αποθηκεύονται στον κατάλογο και άλλες µαζί µε το αρχείου. 22

4.2 Ροή δεδοµένων από και προς το χρήστη Ο µόνος τρόπος µεταφοράς δεδοµένων προς ή από µια συσκευή είναι µέσω των Ι/Ο πράξεων. Μέσα στην κύρια µνήµη, τα δεδοµένα µεταφέρονται µε εντολές του επεξεργαστή. Τη µόνη φορά που τα δεδοµένα στη συσκευή αλλάζουν είναι όταν εκτελείται πράξη εξόδου (WRITE, UPDATE, DELETE). Μια πράξη εισόδου δεν αλλάζει ποτέ τα δεδοµένα µιας συσκευής (READ, READ_NEXT, POSITION). Ας εξετάσουµε τη ροή δεδοµένων όπως φαίνεται στο προηγούµενο σχήµα. Πρώτα, ο χρήστης καθορίζει ότι µια εγγραφή πρόκειται να καταχωρηθεί στο δίσκο. Ο χρήστης πρέπει να αντιγράψει την εγγραφή σε κάποιο κοµµάτι µνήµης (1). Στη συνέχεια (2) ο χρήστης χρησιµοποιεί τη WRITE εντολή της γλώσσας προγραµµατισµού. Το αίτηµα WRITE περνάει τον έλεγχο στην µέθοδο προσπέλασης. Η µέθοδος προσπέλασης (3) παίρνει τις δύο παραµέτρους - µέγεθος εγγραφής και διεύθυνση εγγραφής - και εντοπίζει την εγγραφή. Βασισµένη στην οργάνωση του αρχείου, η µέθοδος προσπέλασης προσδιορίζει το µπλοκ µέσα στο οποίο καταχωρούνται τα δεδοµένα της εγγραφής. Αν το µπλοκ βρίσκεται στο Ι/Ο buffer, δε χρειάζεται να το ξαναδιαβάσει. Στη συνέχεια η µέθοδος προσπέλασης αντιγράφει την εγγραφή στην κατάλληλη θέση µέσα στο Ι/ Ο buffer, αφήνοντας τα υπόλοιπα δεδοµένα του Ι/Ο buffer άθικτα (4) ή (8) και (4). 23

Όταν η εγγραφή βρίσκεται πλέον στη θέση της µέσα στο Ι/Ο buffer, η µέθοδος προσπέλασης θα ζητήσει από το ΒΣΑ να γράψει το µπλοκ στο δίσκο (6). Το τελικό βήµα της µεταφοράς δεδοµένων στο δίσκο (10) αφορά την επιστροφή πληροφοριών της κατάστασης στο χρήστη. Με αυτή την πληροφορία µπορεί ο χρήστης να πει αν η µεταφορά ήταν επιτυχίας ή όχι. Αντίθετα, αν ο χρήστης θέλει να διαβάσει µια εγγραφή, χρησιµοποιεί τη READ εντολή της γλώσσας προγραµµατισµού. Με αυτή την κλήση ο χρήστης δίνει τη διεύθυνση της µνήµης στην µέθοδο προσπέλασης όπου θα µεταφέρει τα δεδοµένα. ίνει επίσης και το µέγεθος της εγγραφής (3). Η µέθοδος προσπέλασης καλεί το ΒΣΑ να µεταφέρει το κατάλληλο µπλοκ από το δίσκο στο Ι/Ο buffer (8). Στη συνέχεια, η µέθοδος προσπέλασης αποσπά το επιθυµητό κοµµάτι από το Ι/Ο µπλοκ και το αντιγράφει στην εγγραφή του χρήστη (9). Τέλος, επιστρέφει πληροφορίες για την κατάσταση στο χρήστη (10). Τότε και µόνο τότε, ο έλεγχος επιστρέφει στο πρόγραµµα του χρήστη. 4.3 Τεχνικές προσωρινής Ι/Ο αποθήκευσης Ι/Ο buffer είναι τµήµατα συνεχούς µνήµης αφιερωµένα στη µεταφορά µπλοκ-δεδοµένων µεταξύ του αρχείου και της µνήµης του Η/Υ. Τα Ι/Ο buffer έχουν το µέγεθος ενός τοµέα ή µιας δέσµης τοµέας (cluster). Ένας buffer ανά αρχείο. Όταν παραχωρείται ένα buffer για Ι/Ο, τότε κάθε READ_BLOCK και WRITE_BLOCK εντολή θα αξιοποιεί τον ίδιο χώρο τις κυρίας µνήµης. Η µέθοδος προσπέλασης πρέπει να εκτελέσει τους ακόλουθους ελέγχους και εργασίες (βλέπε προηγούµενο σχήµα): α) Αν η επιθυµητή εγγραφή βρίσκεται στο τρέχον µπλοκ του Ι/Ο buffer συνέχισε µε το (4). Επόµενο Ι/Ο αίτηµα. (1) Αν το τρέχον µπλοκ είναι το επιθυµητό τότε (2) Αν το τρέχον µπλοκ άλλαξε τότε Γράψε το µπλοκ στο δίσκο Όσο δεν ολοκληρώθηκε η πράξη περίµενε Τέλος-αν (3) Μετέφερε στο Ι/Ο buffer το µπλοκ από το δίσκο Όσο δεν ολοκληρώθηκε η πράξη περίµενε (4) Επεξεργάσου την εγγραφή στο Ι/Ο buffer Αν είναι WRITE αίτηµα τότε Γράψε το µπλοκ στο δίσκο Όσο δεν ολοκληρώθηκε η πράξη περίµενε Τέλος_αν Τέλος-αν β) Αν το µπλοκ δε βρίσκεται στο Ι/Ο buffer, το ΒΣΑ πρέπει να το µεταφέρει από το δίσκο. Πριν γίνει από πρέπει να ελέγξει αν το buffer περιέχει δεδοµένα που πρέπει να καταχωρηθούν στο δίσκο. Αν όχι συνεχίζει µε το βήµα (3). ιαφορετικό πρώτα µεταφέρει το µπλοκ στο δίσκο και µετά συνεχίζει µε το βήµα (3). 24

γ) Σ' αυτό το βήµα το ΒΣΑ µεταφέρει το µπλοκ από το δίσκο στο Ι/Ο buffer. Το επιθυµητό µπλοκ βρίσκεται στο Ι/Ο buffer. Αν το αίτηµα ήταν READ, η µέθοδος προσπέλασης µεταφέρει το κατάλληλο τµήµα το µπλοκ στην εγγραφή και επιστρέφει στο χρήστη. Αν ήταν WRITE, η εγγραφή αντιγράφεται στην κατάλληλη θέση στο Ι/Ο buffer. Πολλαπλα buffer ανά αρχείο. Η επιλογή ενός buffer µπορεί να βασιστεί στο αν έχει τροποποιηθεί ή αν περιέχει τα "παλαιότερα" δεδοµένα. Με αυτόν τον τρόπο είναι δυνατή η εξάλειψη µεγάλου µέρους της Ι/Ο καθυστέρησης του ενός buffer. 25

5. Μέθοδοι προσπέλασης Σ' αυτή την ενότητα θα καθορίσουµε τις πράξεις που οι χρήστες επιθυµούν να χρησιµοποιούν επί των εγγραφών. Στη συνέχεια θα εξετάσουµε τον τρόπο µε τον οποίο αυτά τα αιτήµατα αντιστοιχίζονται σε µια σειρά κλήσεων που είναι κατανοητές από το σύστηµα αρχείων. Οι µέθοδοι προσπέλασης παρέχουν στους χρήστες περισσότερες δυνατότητες από το ΒΣΑ. Αν και πολλές από τις εντολές φαίνεται να µοιάζουν µε αυτές του ΒΣΑ, ο χρήστης κερδίζει τη δυνατότητα να εργάζεται µε εγγραφές παρά µε µπλοκ. Πως όµως οι µέθοδοι προσπέλασης οργανώνουν τις εγγραφές του χρήστη εντός µιας συγκεκριµένης οργάνωσης αρχείων; Ποιοι αλγόριθµοι χρησιµοποιούνται για να εισάγουν νέες εγγραφές και να ανακτήσουν υπάρχουσες εγγραφές; Κάθε µια από τις οργανώσεις αρχείων που θα µελετήσουµε παρακάτω χρησιµοποιεί διαφορετικές τεχνικές. Σκοπός της παρούσης ενότητας είναι να περιγράψει µε λεπτοµέρεια πως σχεδιάζεται µια οργάνωση αρχείων. Ποια δοµή χτίζεται και γιατί. Γνωρίζοντας τη δοµή του αρχείου, γίνονται πιο κατανοητά τα ακόλουθα χαρακτηριστικά ενός αρχείου Η απόδοση κάθε οργάνωσης αρχείου. Απαιτήσεις χώρου για κάθε τόπο αρχείου. Τα πλεονεκτήµατα και τα µειονεκτήµατα κάθε οργάνωσης αρχείου. 5.1 Πράξεις επί των αρχείων Οι πράξεις επί των αρχείων εκτελούνται στο ίδιο το αρχείο και όχι στις εγγραφές του. Για παράδειγµα, µπορεί να θέλουµε να δηµιουργήσουµε (create) ένα αρχείο σήµερα και να το ανοίξουµε (open) µια άλλη µέρα. Όταν τελειώσουµε την επεξεργασία του αρχείου θα πρέπει να το κλείσουµε (close). Επίσης, µπορεί να θελήσουµε να επεκτείνουµε (extend) το αρχείο. Ίσως, κάποια στιγµή στο µέλλον αποφασίσουµε ότι δεν το χρειαζόµαστε πλέον και θέλουµε να το διαγράψουµε (delete). Στη συνέχεια θα περιγράψουµε τις απαιτήσεις και λειτουργικότητα αυτών των πράξεων. ηµιουργία αρχείου Σκοπός της συνάρτησης create είναι η δηµιουργία αρχείου. Οι πληροφορίες που χρειάζονται για τη δηµιουργία ενός αρχείου είναι: - Pathname (συσκευή, φάκελοι, όνοµα αρχείου) - Μέγεθος του αρχείου - Οργάνωση του αρχείου - Μέγεθος του µπλοκ - Μορφή εγγραφής - Πληροφορίες κοινού αρχείου - κ.α. 26

Εργασίες τις οποίες εκτελεί η create: α. Έλεγχος εγκυρότητας των παραµέτρων. Για παράδειγµα δεν µπορεί το µέγεθος του µπλοκ να µικρότερο της εγγραφής. β. Κλήση της CREATE_FILE του ΒΣΑ και δηµιουργία των buffer. γ. Επεξεργασία ειδικά για τη συγκεκριµένη οργάνωση αρχείου. δ. Καταχώρηση ιδιοτήτων του αρχείου. Αφορά τις πληροφορίες που πρέπει να καταχωρηθούν ώστε η µέθοδος προσπέλασης να είναι σε θέση να χειριστεί τις εγγραφές του αρχείου. Το ΒΣΑ χειρίζεται µόνο blocks ενώ η µέθοδος προσπέλασης χειρίζεται τις εγγραφές εντός των µπλοκ. Για να είναι σε θέση, η µέθοδος προσπέλασης, να χειριστεί τις εγγραφές, χρειάζεται τις εξής παραµέτρους - Όνοµα αρχείου - Οργάνωση αρχείου - Μέγεθος µπλοκ - Μορφή εγγραφής - Μέγεθος εγγραφής - Μέγεθος αρχείου - εδοµένα για τη συγκεκριµένη οργάνωση αρχείου. Οι παραπάνω παράµετροι καταχωρούνται στον κατάλογο τον συστήµατος αρχείων και στο ίδιο το αρχείο. ε. Επιστροφή της κατάστασης και του αναγνωστικού του αρχείου, στο καλόν πρόγραµµα. Το αναγνωστικό χρειάζεται για τις read και write πράξεις. Η create µπορεί να αποτύχει για διάφορους λόγους, όπως: - Μη έγκυρες παράµετροι. - εν υπάρχει ελεύθερος χώρος στο δίσκο. - Το αρχείο υπάρχει. Άνοιγµα αρχείου Σκοπός της συνάρτησης open είναι να επιτρέψει στο χρήστη την προσπέλαση υπάρχοντος αρχείου. Σ' ένα αρχείου που έχει δηµιουργηθεί, αυτά που θέλει να κάνει ο χρήστης είναι να διαβάζει και να γράφει εγγραφές. Κάποιες γλώσσες προγραµµατισµού δεν παρέχουν τη συνάρτηση create αλλά αν δεν υπάρχει το αρχείου, η open µπορεί να το δηµιουργήσει. Σε κάθε περίπτωση η open συνδέει το πρόγραµµα του χρήστη µε ένα αρχείου. Η open χρειάζεται τις εξής πληροφορίες: - Συσκευή - Pathname Επιπρόσθετα, ο χρήστης µπορεί να ανοίξει ένα αρχείο κάτω από κάποιους περιορισµούς. Συγκεκριµένα ο χρήστης µπορεί να ζητήσει τα ακόλουθα: 27

Άνοιγµα µόνο για είσοδο (δηλαδή, ο χρήστης θα εκτελέσει µόνο read πράξεις). Άνοιγµα µόνο για έξοδο (δηλαδή, ο χρήστης θα εκτελέσει µόνο write πράξεις). Άνοιγµα για είσοδο και έξοδο (δηλαδή, ο χρήστης θα εκτελέσει read και write πράξεις). Είναι δουλειά της µεθόδου προσπέλασης να εξασφαλίσει ότι υποβάλλονται σε επεξεργασία εκείνα µόνο τα αιτήµατα που είναι σύµφωνα µε τον περιορισµό µε τον οποίο ανοίχτηκε το αρχείο. Όλα τα άλλα αιτήµατα πρέπει να απορριφθούν. Τα χαρακτηριστικά του αρχείου καθορίστηκαν κατά τη δηµιουργία του. Συνεπώς, µε την πλήρη διαδροµή (pathname), το αρχείο µπορεί να ανακτηθεί µαζί µε τα χαρακτηριστικά του. Όλες οι πληροφορίες που καταχωρήθηκαν ως µέρος της δηµιουργίας του αρχείου, επανακτώνται ως µέρος του ανοίγµατος του αρχείου. Και αυτό διότι το άνοιγµα του αρχείου πρέπει να φέρει το σύστηµα αρχείων και τη µέθοδο προσπέλασης στο επίπεδο που βρισκόταν ακριβώς µετά τη δηµιουργία του αρχείου. Άρα, η επεξεργασία τις πράξης open είναι η ακόλουθη: α. Έλεγχος εγκυρότητας των παραµέτρων. Η µόνη παράµετρος που χρειάζεται να ελεγχθεί είναι η διαδροµή. (pathname). Αν είναι σωστή τότε το αρχείο µπορεί να βρεθεί µαζί µε όλα τα χαρακτηριστικά του. β. Κλήση της OPEN_FILE του ΒΣΑ. Η µέθοδος προσπέλασης πρέπει να προσδιορίσει το µέγεθος των µπλοκ του αρχείου από τα χαρακτηριστικά του αρχείου. Μετά πρέπει να πει στο σύστηµα αρχείων να δεσµεύσει χώρο µνήµης για ένα ή περισσότερα buffer που να χωρούν τα µπλοκ. Στη συνέχεια πρέπει να δεσµεύσει χώρο µνήµης για το FCB και να καταχωρήσει τα σχετικά χαρακτηριστικά. γ. Επεξεργασία ειδικά για τη συγκεκριµένη οργάνωση αρχείου. δ. Ανάκτηση των χαρακτηριστικών του αρχείου. ε. Επιστροφή της κατάστασης και του αναγνωριστικού του αρχείου, στο καλόν πρόγραµµα. Ο χρήστης πρέπει να πληροφορηθεί αν η διαδικασία ολοκληρώθηκε µε επιτυχία. Αν ναι, τότε θεωρεί ότι µπορεί να ζητήσει την καταχώρηση ή ανάκτηση εγγραφών. ιαφορετικά πρέπει να αποφασίσει για την επόµενη ενέργεια. Η open επιστρέφει και το αναγνωστικό του αρχείου, το οποίο προσδιορίζει µοναδικά το αρχείου διάµεσα σ' όλα τα αρχεία που είναι ανοιχτά. Η open µπορεί να αποτύχει για διάφορους λόγους, όπως: - Το αρχείου δεν βρέθηκε. - Ο χρήστης δεν έχει δικαίωµα προσπέλασης του αρχείου. - Πρόβληµα υλικού. Κλείσιµο αρχείου Σκοπός της συνάρτησης close είναι να επιτρέψει στο χρήστη να σταµατήσει να χρησιµοποιεί ένα αρχείο. Όταν καλείται αυτή η συνάρτηση, η µέθοδος προσπέλασης πρέπει να εξασφαλίσει τη µη απώλεια ή καταστροφή εγγραφών του αρχείου µε το κλείσιµο. Η µόνη παράµετρος που χρειάζεται είναι το αναγνωστικό. Για την πραγµατοποίηση του κλεισίµατος η close εκτελεί τις εξής εργασίες: α. Καταχωρεί στο δίσκο τα δεδοµένα που υπάρχουν µέσα στα Ι/Ο buffer. Όπως γνωρίζουµε, η καταχώρηση των δεδοµένων των Ι/Ο buffer δεν γίνεται µε κάθε εντολή WRITE εγγραφή, µειώνοντας έτσι τις Ι/Ο πράξεις µε αποτέλεσµα την αύξηση της απόδοσης του συστήµατος. 28

Συνεπώς, η ρουτίνα close είναι υπεύθυνη για την αποθήκευση των δεδοµένων τα οποία δεν έχουν ακόµα καταχωρηθεί. β. Επεξεργασία ειδικά για τη συγκεκριµένη οργάνωση αρχείων. γ. Κλήση της CLOSE_FILE του ΒΣΑ. δ. Επιστροφή της κατάστασης στο καλόν πρόγραµµα. Τα σφάλµατα που µπορούν να παρουσιαστούν είναι: - Το αρχείο δεν είναι ανοιχτό - Ι/Ο σφάλµατα κατά την καταχώρηση των δεδοµένων των Ι/Ο buffer - εν υπάρχει χώρος στο δίσκο για τα δεδοµένα των Ι/Ο buffer. Αν ένας χρήστης δεν κλείσει τα αρχεία και το πρόγραµµα του τερµατίσει, τότε η µέθοδος προσπέλασης θα πρέπει να κλείσει τα παραπάνω ανοιχτά αρχεία. Το ίδιο µπορεί να συµβεί όταν το πρόγραµµα µαταιωθεί λόγω σηµαντικού σφάλµατος. Επέκταση αρχείου Σκοπός της επέκτασης αρχείου είναι να επιτρέπει στο χρήστη να αυξάνει το µέγεθος του αρχείου. Οι πληροφορίες που χρειάζεται η συνάρτηση αυτή είναι: Το αναγνωστικό του αρχείου Το µέγεθος της επέκτασης Συνεχόµενος ή µη χώρος Οι εργασίες της επέκτασης είναι: α. Έλεγχος εγκυρότητας των παραµέτρων. β. Κλήση της EXTEND_FILE του ΒΣΑ γ. Επεξεργασία ειδικά για την οργάνωση του αρχείου. δ. Επιστροφή της κατάστασης στο καλόν πρόγραµµα. Σφάλµατα: - Μη επαρκής χώρος στο δίσκο για την επέκταση. - Μη ύπαρξη συνεχούς χώρου (όταν αυτό απαιτείται). 5.2 Πράξεις επί των εγγραφών Μετά τη δηµιουργία ή το άνοιγµα ενός αρχείου, έχουµε τη δυνατότητα να επεξεργαστούµε τις εγγραφές του. Σ' αυτήν την ενότητα θα εξετάσουµε τις διάφορες πράξεις που µπορούµε να χρησιµοποιήσουµε. Πριν συνεχίσουµε µε τις πράξεις, πρέπει να δούµε τρεις έννοιες πολύ σηµαντικές για τις µεθόδους προσπέλασης: τρόπος προσπέλασης εγγραφής (record access mode), τρέχουσα εγγραφή (record currency) και τέλος-αρχείου (end-of-file). 29

Τρόποι προσπέλασης εγγραφών Οι χρήστες προσπελαύνουν τις εγγραφές των αρχείων συνήθως µε δύο τρόπους: σειριακά ή τυχαία. Αυτοί ονοµάζονται τρόποι προσπέλασης (access modes). Ό σειριακός τρόπος εννοεί ότι η προσπέλαση των εγγραφών θα γίνει µε τη σειρά µε την οποία είναι αποθηκεµένες στο αρχείο. Η σειρά αυτή είναι χρονολογική ή ταξινοµηµένη ως προς κάποιο κλειδί. Το διάβασµα των εγγραφών γίνεται ξεκινώντας από την πρώτη, µετά συνεχίζει µε τη δεύτερη, κ.ο.κ µέχρις ότου η επεξεργασία ολοκληρωθεί ή διαβαστεί και η τελευταία εγγραφή. Ο τυχαίος τρόπος εννοεί ότι η προσπέλαση των εγγραφών δε θα γίνεται µε κάποια προκαθορισµένη σειρά, αλλά θα γίνεται προσπέλαση τυχαίων εγγραφών, δηλαδή, της πέµπτης, της διακοσιοστής, εικοστής, έκτης, κ.ο.κ. Η θέση των εγγραφών εξαρτάται από ένα κλειδί, π.χ. αριθµός µητρώου. Τρέχουσα εγγραφή Είναι πολύ σηµαντικό να θυµάται η µέθοδος προσπέλασης που ακριβώς διάβασε την τελευταία εγγραφή. Για παράδειγµα, στη σειριακή µέθοδος προσπέλασης, αν ήταν γνωστή η θέση της τελευταίας εγγραφής που διαβάστηκε, θα ήταν πολύ απλή υπόθεση να βρεθεί η θέση της επόµενης εγγραφής και να διαβαστεί. Ο ακριβής προσδιορισµός της τελευταίας εγγραφής που διαβάστηκε µε επιτυχία γίνεται µε το δείκτη της τρέχουσας εγγραφής ( ΤΕ) και η εγγραφή λέγεται τρέχουσα εγγραφή (ΤΕ). Λογικό τέλος-αρχείου Είναι πολύ σηµαντική έννοια αφού είναι µια κρίσιµη ένδειξη για τις µεθόδους προσπέλασης. Η συνθήκη του λογικού τέλους-αρχείου δείχνει κατά την σειριακή ανάγνωση των εγγραφών ότι δεν απέµειναν άλλες. Άρα, έφτασε στο λογικό τέλος-του-αρχείου. Προσέξτε τη διαφορά µεταξύ του λογικού και του φυσικού τέλους-του-αρχείου. Το λογικό τέλος-του-αρχείου δείχνει ότι δεν απέµειναν άλλες εγγραφές στο αρχείο. Το φυσικό τέλος-του-αρχείου δείχνει ότι δεν απέµειναν άλλα µπλοκ του αρχείου. Με άλλα λόγια το πρόγραµµα χρησιµοποίησε όλα τα µπλοκ που χορηγήθηκαν στο αρχείου. { { 30

Αυτή η συνθήκη δεν αληθεύει κατά την τυχαία προσπέλαση των εγγραφών. Αυτό συµβαίνει διότι η τυχαία προσπέλαση θα είναι επιτυχής, δηλαδή, θα έχει βρεθεί η εγγραφή, ή θα είναι ανεπιτυχής αν δεν βρεθεί η εγγραφή. Τοποθέτηση του ΤΕ µε την εντολή position Η πράξη position επιτρέπει το χρήστη να τοποθετήσει τον ΤΕ σε συγκεκριµένη (έγκυρη) εγγραφή ενός αρχείου και στη συνέχεια να διαβάσει την ΤΕ και τις επόµενες εγγραφές µε σειριακό τρόπο. Οι παράµετροι που χρειάζονται είναι: Το αναγνωριστικό του αρχείου. Κάποιο κριτήριο για τον προσδιορισµό της εγγραφής. - Η θέση της εγγραφής στο αρχείο. - Κάποιο πεδίο της εγγραφής. Ακριβές ταίριασµα του πεδίου. Η εγγραφή να έχει πεδίο ίσο ή µεγαλύτερο του πεδίο αναζήτησης. Πεδίο κατάστασης για την καταχώρηση της κατάστασης τερµατισµού της διαδικασίας Για την επιτυχή λειτουργία της η position ακολουθεί τα εξής βήµατα: α. Έλεγχος εγκυρότητας των παραµέτρων. β. Κλήση της READ_BLOCK του ΒΣΑ. γ. Επεξεργασία ειδικά για την µέθοδο προσπέλασης. Αναζήτηση της εγγραφής µέσα στο µπλοκ σύµφωνα µε τα κριτήρια. Αυτή η λειτουργία εξαρτάται από την οργάνωση του αρχείου. δ. Ενηµέρωση του ΤΕ. Η εντολή position αλλάζει την τιµή του ΤΕ. Αν είναι επιτυχής ο ΤΕ θα δείχνει στην εγγραφή, διαφορετικά θα έχει µια µη έγκυρη τιµή. ε. Επιστροφή της κατάστασης στο καλόν πρόγραµµα. Η εντολή position µπορεί να αποτύχει για διαφόρους λόγους, όπως: - Τα κριτήρια δεν ταίριαξαν. - Μη έγκυρα κριτήρια. - Η εγγραφή έχει κλειδωθεί από άλλο χρήστη. ιάβασµα εγγραφής Η εντολή read διαβάζει την τρέχουσα εγγραφή από ανοιχτό αρχείο, εφόσον άνοιξε µε τον περιορισµό µόνο είσοδος ή είσοδος και έξοδος. ιάβασµα, όπως γνωρίζουµε, σηµαίνει µεταφορά των δεδοµένων της εγγραφής από το Ι/Ο buffer στο δεσµευµένο για την εγγραφή χώρο της µνήµης. Οι παράµετροι που απαιτούνται από της read είναι: 31

Το αναγνωστικό του αρχείου. Κάποιο κριτήριο για τον προσδιορισµό της εγγραφής. Τη διεύθυνση του χώρου µνήµης στον οποίο θα µεταφερθεί η εγγραφή. Το µέγεθος της εγγραφής Πεδίο κατάστασης για την καταχώρηση της κατάστασης τερµατισµού της διαδικασίες. Για την επιτυχή λειτουργία της η read ακολουθεί τα εξής βήµατα: α. έλεγχος εγκυρότητας των παραµέτρων. β. Κλήση της position γ. Αντιγραφή των δεδοµένων από το Ι/Ο buffer στο χώρο της εγγραφής. δ. Επιστροφή της κατάστασης στο καλόν πρόγραµµα. ιάβασµα επόµενης εγγραφής Η read-next εντολή διαβάζει την εγγραφή η οποία ακολουθεί την τρέχουσα. Οι παράµετροι που απαιτούνται είναι: Το αναγνωστικό του αρχείου. Η διεύθυνση του χώρου µνήµης στον οποίο θα µεταφερθεί η εγγραφή. Το µέγεθος της εγγραφής. Πεδίο κατάστασης για την καταχώρηση της κατάστασης τερµατισµού της κατάστασης τερµατισµού της διαδικασίας. Προσέξετε ότι δε χρειάζεται κριτήριο για τον προσδιορισµό της εγγραφής. Η µέθοδος προσπέλασης διαβάζει την εγγραφή που λογικά ακολουθεί την τρέχουσα. Στο δίσκο µπορεί να είναι συνεχόµενη της τρέχουσας ή να βρίσκεται σε άλλο µπλοκ. Για να διαβαστούν όλες οι εγγραφές ενός αρχείου, θα πρέπει να γραφεί ένας βρόγχος µε τη read_next συνάρτηση. Ο βρογχος θα τερµατίσει όταν η συνθήκη του λογικού τέλους-του-αρχείου γίνει αληθής. Σε κάθε read_next προσαρµόζεται και ο ΤΕ. Τα βήµατα που ακολουθούνται για τη read_next είναι ίδια µε αυτά για τη read. Αυτό, όµως, που διαφέρει είναι το πώς η µέθοδος προσπέλασης προσδιορίζει την επόµενη λογικά εγγραφή. Γράψιµο εγγραφής Η write χρησιµοποιείται για να προσθέσουµε µια νέα εγγραφή σε ανοιχτό αρχείο. Το αρχείο πρέπει να έχει ανοίξει µε τον περιορισµό έξοδος ή είσοδος και έξοδος. Οι παράµετροι που απαιτούνται είναι οι εξής: Το αναγνωστικό του αρχείου. Κάποιο κριτήριο για την καταχώρηση της εγγραφής. Η διεύθυνση του χώρου µνήµης που περιέχει την εγγραφή. Το µέγεθος της εγγραφής. 32