Ο ρόλος του λειτουργικού συστήματος
Το λειτουργικό σύστημα διαδραματίζει κυρίαρχο ρόλο στη διαχείριση του I/O, δρώντας ως διασύνδεση (interface) ανάμεσα στο υλικό (hardware) και το πρόγραμμα που ζητά να επιτελέσει μια λειτουργία I/O.
Οι ευθύνες του λειτουργικού συστήματος προκύπτουν από τρία βασικά χαρακτηριστικά των συστημάτων I/O:
- Το σύστημα I/O χρησιμοποιείται από κοινού από πολλά προγράμματα που χρησιμοποιούν τον επεξεργαστή.
- Τα συστήματα I/O συχνά χρησιμοποιούν διακοπές (interrupts) - εξωτερικά παραγόμενες εξαιρέσεις - (πλήρης αναφορά στην ενότητα 8) για να μεταδώσουν πληροφορίες σχετικά με τις λειτουργίες εισόδου/εξόδου. Επειδή οι διακοπές προκαλούν μία μετάβαση από το κατάσταση πυρήνα (kernel mode) στο κατάσταση επόπτη (supervisor mode), η διαχείρισή τους πρέπει να γίνεται από το λειτουργικό σύστημα.
- Ο έλεγχος χαμηλού επιπέδου μίας συσκευής I/O είναι πολύπλοκος, επειδή απαιτεί τη διαχείριση ενός συνόλου ταυτόχρονων γεγονότων και επειδή οι απαιτήσεις για το σωστό έλεγχο της συσκευής είναι συχνά πολυσύνθετες.
Λειτουργίες του λειτουργικού συστήματος
Τα τρία παραπάνω χαρακτηριστικά των συστημάτων I/O οδηγούν σε αρκετές διαφορετικές λειτουργίες που θα πρέπει να παρέχει το λειτουργικό σύστημα.
- Το λειτουργικό σύστημα εγγυάται πως ένα πρόγραμμα χρήστη προσπελαύνει μόνο τα μέρη εκείνα μίας συσκευής I/O στα οποία ο χρήστης έχει δικαίωμα να προσπελάσει. Για παράδειγμα, το λειτουργικό σύστημα δεν πρέπει να επιτρέπει σε ένα πρόγραμμα να διαβάσει ή να γράψει ένα αρχείο στο δίσκο αν ο ιδιοκτήτης του αρχείου δεν έχει εκχωρήσει πρόσβαση σε αυτό το πρόγραμμα. Σε ένα σύστημα με κοινόχρηστες συσκευές I/O, δε θα είναι δυνατό να παρέχουμε προστασία αν τα προγράμματα των χρηστών μπορούν να επιτελούν απευθείας I/O.
- Το λειτουργικό σύστημα παρέχει αφαιρετικά σχήματα (abstractions) για την πρόσβαση των συσκευών παρέχοντας ρουτίνες που χειρίζονται τις χαμηλού επιπέδου λειτουργίες των συσκευών. Eτσι η πρόσβαση γίνεται ευκολότερη. Για παράδειγμα, ο χρήστης που φτιάχνει ένα πρόγραμμα το οποίο κάνει πρόσβαση σε ένα συγκεκριμένο αρχείο στο δίσκο δε θα ασχοληθεί με την περιστροφή της πλακέτας ή την τοποθέτηση της κεφαλής στο κατάλληλο σημείο: αυτά είναι δουλειά του λειτουργικού συστήματος.
- Το λειτουργικό σύστημα χειρίζεται τις διακοπές (interrupts) που παράγονται από τις συσκευές I/O, όπως ακριβώς χειρίζεται τις εξαιρέσεις (exceptions) που παράγονται από ένα πρόγραμμα.
- Το λειτουργικό σύστημα προσπαθεί να παρέχει αμερόληπτη πρόσβαση στους κοινόχρηστους πόρους I/O, όπως επίσης και να προγραμματίζει τις προσβάσεις έτσι, ώστε να βελτιώσει το ρυθμό διαμεταγωγής του συστήματος.
Τύποι επικοινωνίας του λειτουργικού συστήματος
Για να επιτελέσει αυτές τις λειτουργίες για λογαριασμό των προγραμμάτων χρήστη, το λειτουργικό σύστημα πρέπει να μπορεί να επικοινωνεί με τις συσκευές I/O και να εμποδίζει το πρόγραμμα χρήστη να επικοινωνεί απευθείας με αυτές. Τρεις τύποι επικοινωνίας απαιτούνται:
- Το λειτουργικό σύστημα πρέπει να μπορεί να δίνει εντολές στις συσκευές I/O. Αυτές οι εντολές δεν περιλαμβάνουν μόνο λειτουργίες όπως ανάγνωση και εγγραφή, άλλα και άλλες λειτουργίες που πρέπει να γίνουν σε μία συσκευή, όπως μία αναζήτηση (seek) στο δίσκο.
- Η συσκευή Ι/Ο πρέπει να μπορεί να ειδοποιήσει το λειτουργικό σύστημα όταν αυτή έχει ολοκληρώσει μία λειτουργία ή έχει συναντήσει κάποιο λάθος. Για παράδειγμα, όταν ένας δίσκος έχει ολοκληρώσει μία αναζήτηση, θα ειδοποιήσει το λειτουργικό σύστημα.
- Τα δεδομένα πρέπει να μεταφέρονται ανάμεσα στη μνήμη και μία συσκευή I/O. Για παράδειγμα, το μπλοκ που διαβάζεται από ένα δίσκο πρέπει να μετακινηθεί από το δίσκο στη μνήμη.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 1
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 2
![]() |
![]() |
![]() |
![]() |