Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
1.1 Γενικά: τί είναι το Λ.Σ. ; Συστήματα Υπολογιστών: CPUs, RAM, Δίσκοι, Τερματικά, ρολόι,... (Αρχιτεκτονική Υπολογιστών) Αυτό είναι το hardware. Χωρίς το λογισμικό, αυτοί οι πόροι είναι σχεδόν αχρησιμοποίητοι. Συστήματα Λογισμικού: SW Συστήματος (Λ.Σ., Compilers,...) και εφαρμογές. Το system s/w αποτελεί τη βάση πάνω στην οποία στηρίζονται οι εφαρμογές. - 2 -
Μία εφαρμογή χρησιμοποιεί τον επεξεργαστή κειμένου (editor) για να φτιάξει ένα αρχείο που περιέχει ένα πρόγραμμα (πηγαίο κώδικα). Μετά χρησιμοποιεί τον μεταφραστή (compiler) για να δημιουργηθεί το «object code», δηλαδή ο κώδικας που μπορεί να τρέξει στη μηχανή. Το Λ.Σ. καλείται να αποθηκεύσει τον πηγαίο κώδικα και το object code (στον δίσκο). Όταν ο κώδικας «τρέχει», το Λ.Σ. καλείται να χρησιμοποιήσει τους απαραίτητους πόρους (CPU Μνήμη, κλπ) για να προσφερθούν οι κατάλληλες υπηρεσίες. - 3 -
Περίληψη Εκτέλεσης Προγράμματος 1. Το πρόγραμμα δημιουργείται, μεταφράζεται, παράγεται ο εκτελέσιμος κώδικας (object code) ο οποίος αποθηκεύεται σε ένα αρχείο (στη δευτεροβάθμια μνήμη). 2. Oταν το πρόγραμμα ζητείται να τρέξει, (μέρος του) πρέπει να αποθηκευτεί στην κύρια μνήμη (RAM). 3. Κάθε εντολή του προγράμματος «στέλνεται» (φορτώνεται) στο κεντρικό επεξεργαστή μαζί με τα δεδομένα (που μπορεί να αποθηκευτούν στους καταχωρητές του CPU) και εκτελείται. απαιτείται διαχείριση κύριας μνήμης, δευτεροβάθμιας μνήμης, και του CPU. Τέτοιου είδους διαχειρίσεις αναλαμβάνει το Λ.Σ. Συμπέρασμα: Από τα παραπάνω προκύπτει ότι: το Λ.Σ. είναι το κεντρικό κομμάτι λογισμικού ενός συστήματος ΗΥ, το οποίο διαχειρίζεται τους υλικούς πόρους του. Αυτή η θεώρηση όμως δεν αρκεί! - 4 -
- 5 - Θεωρήστε ένα πρόγραμμα που θέλει να δημιουργήσει ένα αρχείο με δεδομένα. Τα αρχεία (files) αποθηκεύονται σε (π.χ. μαγνητικούς «σκληρούς») δίσκους, οι οποίοι, εν ολίγοις, αποτελούνται από ένα ηλεκτρονικό τμήμα (ένα controller - επεξεργαστή) και ένα μαγνητικό τμήμα (επιφάνειες δίσκων πάνω στις οποίες γράφουν κεφαλές). Ο επεξεργαστής δέχεται εντολές για να γράψει (write) ή να ανακτήσει δεδομένα (read) σε (από) συγκεκριμένες διευθύνσεις, να μετακινήσει τις κεφαλές σε καινούριες διευθύνσεις, κ.λπ.
- 6 - Η επικοινωνία με τον controller απαιτεί το γράψιμο ειδικών εντολών καθώς και το γράψιμο των παραμέτρων σε συγκεκριμένες διευθύνσεις στη RAM. Η δομή και η μορφή αυτών των εντολών διαφέρει από controller σε controller. Επιπλέον, ο controller επιστρέφει ειδικούς κώδικες σε ειδική μορφή οι οποίοι πρέπει να αναλυθούν για να επαληθευθεί ότι όλα πήγαν καλά, κ.λπ. Αυτοί οι κώδικες επικοινωνίας είναι πολύπλοκοι, και τα προγράμματα επικοινωνίας με τέτοιες συσκευές περιφέρειας είναι επίσης πολύπλοκα (και μεγάλα)! Το Λ.Σ. αναλαμβάνει να απαλλάξει τον προγραμματιστή από όλες αυτές τις δυσκολίες. Από αυτή τη δεύτερη θεώρηση, προκύπτει ότι το Λ.Σ. ενεργεί σαν μία μηχανή αφαίρεσης (abstraction machine).
- 7 - Aρα, το Λ.Σ. παρέχει δύο βασικές έννοιες αφαίρεσης: 1. Διεργασίες (Processes) 2. Αρχεία (Files) Με την έννοια της «διεργασίας» ασχολούνται εκείνες οι διαδικασίες του Λ.Σ. που καλούνται να διαχειριστούν τη CPU, RAM, Δίσκους, Τερματικά, κ.λπ. Αυτή η διαχείριση εστιάζει στην ίση κατανομή των υλικών πόρων του υπολογιστή σε όλα τα προγράμματα που τρέχουν σε μία δεδομένη στιγμή. Με την έννοια του «αρχείου» ασχολούνται οι διαδικασίες του Λ.Σ. που παρέχουν την δυνατότητα δημιουργίας μη-προσωρινών δεδομένων (που αποθηκεύονται στη δευτεροβάθμια μνήμη). Αυτές οι διαδικασίες ασχολούνται επίσης και με την επικοινωνία με τις περιφερειακές συσκευές.
- 8 - Είναι μια επεκτεταμένη μηχανή (Αφαίρεση) Κρύβει πολύπλοκες λεπτομέρειες από τα προγράμματα Παρέχει μια εικονική μηχανή εύκολη στην χρήση Είναι ένας διαχειριστής πόρων Δίνει χρόνο και χώρο στα προγράμματα για να εκτελεστούν Το Λ.Σ. είναι η καρδιά και ο εγκέφαλος ενός Η/Υ!!!
- 9 - O πυρήνας του Λ.Σ. αναφέρεται στο κύριο τμήμα του Λ.Σ. το οποίο υλοποιεί τις δύο βασικές οντότητες (processes και files) του Λ.Σ. Αυτός ο κώδικας είναι προστατευμένος, με την έννοια ότι δεν ανήκει σε κανένα χρήστη (δεν είναι «user process»). Διαφορετικά, ο κάθε χρήστης θα μπορούσε να αλλάξει αυτόν τον κώδικα και έτσι να μονοπωλήσει τους πόρους του συστήματος, CPU, RAM, δίσκοι, τερματικά, κ.λπ. Αυτή η προστασία επιτυγχάνεται χρησιμοποιώντας δύο τρόπους λειτουργίας: user mode και kernel mode. Το σύστημα βρίσκεται υπό προστασία όταν βρίσκεται σε kernel mode. Δηλαδή, ειδικές εντολές που διαχειρίζονται τους πόρους του συστήματος μπορούν να εκτελεσθούν μόνο όταν το σύστημα λειτουργεί σε kernel mode. Το Λ.Σ. είναι το μόνο system s/w το οποίο εκτελείται σε kernel mode.
- 10 - Για να μπορέσει μια διεργασία χρήστη (user process) να χρησιμοποιήσει τους πόρους πρέπει να καλέσει τις κατάλληλες ρουτίνες του kernel. Αυτό επιτυγχάνεται μέσω system calls. υπάρχουν system calls όπως fork(), exec(), malloc(), read(), printf() τα οποία αφορούν στη δημιουργία ενός process, sτην εκτέλεση από κάποιο process ενός προγράμματος, στην παροχή μνήμης, στην ανάκτηση τμήματος αρχείου, στην εκτύπωση στην οθόνη, κ.λπ. Το κάθε system call υλοποιείται μέσω μίας ρουτίνας η οποία βρίσκεται σε μία βιβλιοθήκη που συνδέεται (linked) με τον κώδικα της user process. Όλες οι ρουτίνες αυτής της βιβλιοθήκης εκτελούν μία ειδική εντολή, που ονομάζεται TRAP. Η εντολή TRAP είναι αυτή η οποία αλλάζει το σύστημα από user mode σε kernel mode, (αλλάζοντας ένα bit σε ένα CPU register το οποίο καταδεικνύει τον τρόπο λειτουργίας του συστήματος).
- 11 - Επιπλέον, η ρουτίνα που καλεί TRAP είναι υπεύθυνη να τοποθετήσει τις παραμέτρους του system call σε μία προσυμφωνημένη διεύθυνση, (συνήθως, CPU registers ή ακόμα και στη στοίβα (stack)) όπου ο πυρήνας θα τις βρει. Όταν ο πυρήνας τελειώσει, τότε τοποθετεί επιστρεφόμενες πληροφορίες σε registers και εκτελεί ένα RETURN FROM TRAP ενεργοποιώντας πάλι τη ρουτίνα της βιβλιοθήκης. Αυτή η ρουτίνα, επιστρέφει την πληροφορία από τους registers στη user process.
11 βήματα της κλήσης read(fd, buffer, nbytes) 12
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/από-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.
Επεξήγηση όρων χρήσης έργων τρίτων διαθέσιμο με άδεια CC-BY διαθέσιμο με άδεια CC-BY-SA διαθέσιμο με άδεια CC-BY-ND διαθέσιμο με άδεια CC-BY-NC διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC-ND διαθέσιμο με άδεια CC0 Public Domain διαθέσιμο ως κοινό κτήμα χωρίς σήμανση Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Συνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.