Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Λειτουργικά συστήµατα, διεργασίες και δροµολόγηση
Σύνδεση µε τα προηγούµενα Χαρακτηριστικά των πληροφοριακών συστηµάτων: Είσοδος δεδοµένων επεξεργασία έξοδος αποτελεσµάτων Επακόλουθη δοµή ενός Ηλεκτρονικού Υπολογιστή: Υλικό - Μονάδες εισόδου (παραδείγµατα) - Μονάδες εξόδου (παραδείγµατα) - Κεντρική Μονάδα Επεξεργασίας - Μονάδες προσωρινής µνήµης (παραδείγµατα) - Μονάδες µόνιµης αποθήκευσης (παραδείγµατα) Λογισµικό - Λογισµικό συστήµατος (τι είναι;) - Λογισµικό εφαρµογών (παραδείγµατα)
Γενικά για λειτουργικά συστήµατα (µάθηµα 3) Το Λειτουργικό σύστηµα είναι λογισµικό που ελέγχει πλήρως τον Η/Υ : ιαχείριση πόρων (CPU, προσωρινή & µόνιµη µνήµη, µονάδες Ι/Ο κλπ) Χρονοπρογραµµατισµός εκτέλεσης προγραµµάτων & διεργασιών Προστασία µνήµης, έλεγχος πρόσβασης, απόδοση πόρων & προτεραιοτήτων Επικοινωνία µε τον «έξω κόσµο»: «Παράθυρα», ποντίκι, πληκτρολόγιο, τερµατικό κειµένου ιαχείριση άλλων περιφερειακών συσκευών και επικοινωνιών Το Λειτουργικό σύστηµα φροντίζει για : Την ταυτόχρονη εκτέλεση πολλών προγραµµάτων χωρίς προβλήµατα Την «λογιστική» των χρηστών, τα δικαιώµατα, την καταγραφή συµβάντων κλπ Την καλύτερη δυνατή αξιοποίηση των πόρων του υπολογιστή Βασίλειος Βεσκούκης -
Συνοπτικά ιστορικά στοιχεία Μέχρι το 1955: εν υπήρχε ανάγκη για λειτουργικό σύστηµα (προγραµµατισµός µε καλωδιώσεις κλπ) Μέχρι το 1965: Προγραµµατισµός µε κάρτες και σειριακή εκτέλεση των εντολών και των διεργασιών 1966 : Το πρώτο πραγµατικό ΛΣ: το OS/360 για τον IBM 360. Είχε αρκετά προβλήµατα αλλά εισήγαγε τον πολυπρογραµµατισµό (multitasking ή multiprogramming) και την ταυτόχρονη χρήση των µονάδων Ι/Ο (spooling) 1976 : Ο πρόγονος του UNIX: το MULTICS, που προσέφερε επιπλέον δροµολόγηση διεργασιών µε καταµερισµό χρόνου (time sharing) 1978 : Ο πρόγονος των ΛΣ για µικροϋπολογιστές: το CP/M 1982 2002 : MS-DOS, MacOS, MS-Windows, Linux κλπ.
Οι κύριες ευθύνες του λειτουργικού συστήµατος ιαχείριση διεργασιών (process management) ιαχείριση κύριας µνήµης (main memory management) ιαχείριση δευτερεύουσας µνήµης (secondary memory management) ιαχείριση συστήµατος εισόδου / εξόδου (I/O system management) ιαχείριση συστήµατος αρχείων (file system management) ιαχείριση πρόσβασης πόρων (resource access management) ιαχείριση επικοινωνιών και δικτύου (networking) Υπηρεσία πρόσβασης χρηστών (user access facility) Οι παραπάνω εργασίες υλοποιούνται µε την εκτέλεση των υπηρεσιών συστήµατος (system services system calls), που φροντίζουν, επιπλέον, την σταθερότητα του συστήµατος (επαναφορά από συνθήκες σφάλµατος), την ασφαλή και αποµονωµένη εκτέλεση των διεργασιών και την «λογιστική» των διαφόρων διεργασιών και χρηστών.
ιαχείριση διεργασιών Η ιαχείριση διεργασιών αναφέρεται στον έλεγχο της εκτέλεσης των διαφόρων προγραµµάτων, που είτε είναι τµήµατα του λειτουργικού συστήµατος είτε είναι εξωτερικά προγράµµατα, ενεργοποιούµενα από τον χρήστη. Ο όρος διεργασία (process) αναφέρεται σε ένα αυτόνοµο πρόγραµµα που βρίσκεται στην κύρια µνήµη και εκτελείται, δηλαδή χρησιµοποιεί την CPU. Το ΛΣ δηµιουργεί µια διεργασία αποδίδοντας ένα χώρο στην κύρια µνήµη (για την τοποθέτηση του προγράµµατος) και προσθέτοντάς την στην λίστα των διεργασιών προς εκτέλεση. Αντίστροφες ενέργειες συµβαίνουν κατά την διαγραφή µιας διεργασίας που ολοκληρώθηκε. Προϋπόθεση για την συνύπαρξη ενός (µεγάλου) αριθµού διεργασιών είναι η δυνατότητα καταµερισµού της λειτουργίας της CPU. Συνήθως αυτό επιτυγχάνεται µε καταµερισµό χρόνου (time sharing). Έτσι, κάθε διεργασία µπορεί να βρίσκεται σε µια από τις καταστάσεις: τρέχουσα, έτοιµη, δεσµευµένη (σε αναµονή για εκχώρηση πόρου ή διαδικασίας εισόδου / εξόδου) Μια τρέχουσα διεργασία χρησιµοποιεί την CPU για ένα χρονοτεµάχιο (time slice), οπότε µεταβαίνει στην κατάσταση έτοιµη και περιµένει να επιλεγεί ξανά προς εκτέλεση για ένα ακόµα χρονοτεµάχιο.
ιαχείριση µνήµης Τι βρίσκεται στην (προσωρινή) µνήµη του υπολογιστή; Η διαχείριση της µνήµης έχει τρεις βασικές συνιστώσες: Εκχώρηση (allocation) και απελευθέρωση (deallocation) µιας περιοχής µνήµης για κάθε διεργασία Βέλτιστη χρησιµοποίηση της διαθέσιµης µνήµης, πραγµατικής ή εικονικής. Για το σκοπό αυτό υπάρχουν τεχνικές όπως: ιάκριση διευθύνσεων µνήµης από διευθύνσεις προγράµµατος (σε λίγο) υναµική (dynamic) εκχώρηση της µνήµης Ανταλλαγή (swapping) περιεχοµένων κύριας δευτερεύουσας µνήµης Σελιδοποίηση (paging) και χρήση εικονικής µνήµης (virtual memory) Τελικός στόχος όλων των ανωτέρω είναι να εξασφαλισθεί ότι υπάρχουν πάντοτε αρκετές διεργασίες έτοιµες προς εκτέλεση από την CPU. προστασία (protection) της περιοχής µνήµης κάθε διεργασίας, ώστε να µην µπορεί να προσπελαστεί από άλλες διεργασίες
ιαχείριση συστήµατος εισόδου / εξόδου Λόγοι που επιβάλλουν την διαχείριση αυτή από το ΛΣ: ποικιλία των λειτουργικών χαρακτηριστικών των συσκευών Ι/Ο (ταχύτητα µεταφοράς, κωδικοποίηση κλπ) ενοποιηµένη εµφάνιση προς τον χρήστη των συσκευών Ι/Ο η βέλτιστη χρήση του συστήµατος απαιτεί την προσωρινή τοποθέτηση δεδοµένων εισόδου / εξόδου σε τµήµατα της κύριας µνήµης (buffers), σε λανθάνουσα µνήµη (cache memory) ή σε µαγνητικό µέσο αποθήκευσης (spooling) Για να γίνουν αυτά, το ΛΣ χρησιµοποιεί ειδικά προγράµµατα οδήγησης συσκευών (device drivers) και πρέπει να συγχρονίζει τις σχετικές διεργασίες µε ασφάλεια και ταχύτητα. Η έναρξη και η λήξη της µεταφοράς των δεδοµένων σηµατοδοτείται από το ειδικό σήµα διακοπής (interrupt), το οποίο ερµηνεύει και χειρίζεται ο χειριστής διακοπής (interrupt handler).
ιαχείριση συστήµατος αρχείων Τι είναι το αρχείο (file) ; Το σύστηµα αρχείων (file system) περιέχει τις απαραίτητες πληροφορίες για τον τρόπο που έχει οργανωθεί η αποθήκευση των αρχείων στο µόνιµο µέσο αποθήκευσης. Συνεπώς, υπάρχουν κατάλογοι (directories) που περιέχουν πληροφορίες για µια οµάδα αρχείων, όπως το όνοµα, η θέση στο µέσο αποθήκευσης και το µέγεθος, η ηµεροµηνία δηµιουργίας, ο ιδιοκτήτης του αρχείου κλπ. Η πληροφορίες κάθε καταλόγου απαρτίζουν, πρακτικά, ένα αρχείο. Εποµένως, ένας κατάλογος µπορεί να περιέχει υποκαταλόγους (sub-directories) σε πολλά επίπεδα (ιεραρχική δοµή ή δοµή δένδρου tree structure) Βασικές εργασίες της διαχείρισης αρχείων είναι: δηµιουργία και διαγραφή των αρχείων (και καταλόγων) προσπέλαση στο περιεχόµενο των αρχείων προστασία των αρχείων από µη εξουσιοδοτηµένη προσπέλαση προστασία των αρχείων από φθορά λόγω βλάβης του υλικού ή του λογισµικού.
ιαχείριση πρόσβασης πόρων Για την εκτέλεση οποιασδήποτε εργασίας απαιτείται η χρήση πολλών πόρων του υπολογιστή (CPU, µνήµη, σύστηµα Ι/Ο, σύστηµα αρχείων κλπ.). Επιπλέον, η εκτέλεση της εργασίας «µεταφράζεται» σε δηµιουργία και συντονισµένη εκτέλεση πολλών διεργασιών. Ευθύνη για την σωστή εκτέλεση των διεργασιών έχει ο χρονοπρογραµµατιστής (scheduler), που συνεκτιµά: τους πόρους που απαιτεί η διεργασία τους πόρους που είναι διαθέσιµοι την προτεραιότητα και τον χρόνο αναµονής της εργασίας Ευθύνη του ΛΣ είναι να εξασφαλίσει ότι οι απαραίτητοι πόροι εκχωρούνται, κάθε φορά, στις κατάλληλες διεργασίες και να αντιµετωπίσει ενδεχόµενο αδιέξοδο (deadlock) στην αίτηση πόρου από πολλές διεργασίες. Η εκχώρηση πόρων µπορεί να είναι στατική (static) ή δυναµική (dynamic).
Υπηρεσία πρόσβασης χρηστών Κάθε χρήστης του υπολογιστή πρέπει να έχει τη δυνατότητα εκτέλεσης προγραµµάτων. Το ΛΣ ελέγχει τα δικαιώµατα προσπέλασης κάθε χρήστη στους διάφορους πόρους του συστήµατος µε βάση την ταυτότητά του (user name / user identification) και το συνθηµατικό του (password). Οι απαραίτητες οδηγίες δίνονται από τον χρήστη είτε σε µια γλώσσα προσταγών (command language) είτε, σχεδόν αποκλειστικά στην εποχή µας, µε χρήση ενός γραφικού περιβάλλοντος (Graphical User Interface - GUI) Οι ενέργειες του χρήστη στο γραφικό περιβάλλον ερµηνεύονται από το ΛΣ και οδηγούν στην εκτέλεση αντίστοιχων προσταγών ελέγχου (control commands). Με τη σειρά τους, αυτές οι προσταγές ενεργοποιούν την κατάλληλη ακολουθία διεργασιών για την ολοκλήρωση της επιθυµίας του χρήστη Τα γραφικά περιβάλλοντα εµπεριέχουν παραθυρικά συστήµατα (windowing systems), που επιτρέπουν την ταυτόχρονη εκτέλεση πολλών προγραµµάτων (π.χ. MS-Windows). Επιπλέον, δίνουν την δυνατότητα χρήσης του υπολογιστή από απόσταση, µε σύνδεση µέσω δικτύου επικοινωνιών (π.χ. X-windows) Φυσικά, η διαχείριση όλων των απαραίτητων πόρων για την εκτέλεση των πολλαπλών προγραµµάτων γίνεται µε την αποκλειστική ευθύνη και έλεγχο του ΛΣ.