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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Το εσωτερικό ενός Σ Β

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

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

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

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΥΠΕΥΘΥΝΟΣ ΈΡΓΟΥ AΝ.KΑΘ.Χ. ΚΟΥΚΟΥΡΛΗΣ ΤΗΛ: , FAX :

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

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

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

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

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

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

Outlook Express-User Instructions.doc 1

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

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

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

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

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

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

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

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 Ουρές αναµονής Ι/Ο αιτηµάτων...17 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_FILE τοποθετεί το όνοµα του νέου αρχείου στον κατάλογο. (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. Το ΒΣΑ ελέγχει αν υπάρχει άλλος που να χρησιµοποιεί το ίδιο αρχείο. Αν υπάρχει, τότε επαφίεται στο ΒΣΑ να εγγυηθεί ότι ο ένας χρήστης δε θα καταστρέψει τα δεδοµένα του άλλου. 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 Table next DCT... I/O Request Queue Τύπος συσκευής HW διεύθ. συσκευής Χαρακτηριστικά συσκευής... 3 I/O Request Queue IORQ ΒΣΑ 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. Αυτές οι πληροφορίες διατηρούνται για κάθε συσκευή του συστήµατος. 3.2 Ουρές αναµονής Ι/Ο αιτηµάτων 17

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

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

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