Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1
ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων εντολών» που μας παρέχει το Λ/Σ. Αυτές οι εκτεταμένες εντολές είναι οι γνωστές κλήσεις του συστήματος Οι κλήσεις του συστήματος δημιουργούν, καταστρέφουν και χρησιμοποιούν διάφορες οντότητες λογισμικού, τις οποίες διαχειρίζεται το Λ/Σ Οι πιο σημαντικές από αυτές είναι οι διεργασίες (process) και τα αρχεία (files). 2
Τι είναι Διεργασία? Μία διεργασία (process) είναι ένα πρόγραμμα κατά την διάρκεια εκτέλεσης. πρόγραμμα= στατικός φάκελος (εικόνα) Διεργασία = εκτελέσιμο πρόγραμμα + κατάσταση εκτέλεσης. Μια Διεργασία είναι η βασική μονάδα εκτέλεσης σε ένα Λ/Σ Κάθε διεργασία έχει ένα νούμερο ( process identifier (pid)). Διαφορετικές Διεργασίες μπορούν να τρέχουν σε διαφορετικές στιγμές του ιδίου προγράμματος π.χ. η δικήμουjavac και η δική σου javac διεργασία μπορούν και οι δύο να τρέχουν τον compiler Στο ελάχιστο, η εκτέλεση διεργασιών απαιτούν τους ακόλουθους πόρους: Μνήμη για το κώδικα του προγράμματος και τα δεδομένα Ένα σύνολο καταχωρητών CPU για να υποστηρίξουν την εκτέλεση 3
Διεργασίες (process) 1 Διεργασία: Μία από τις δύο κεντρικές έννοιες ενός Λ/Σ. Αποτελεί ένα μοντέλο για ένα πρόγραμμα που εκτελείται Οι διεργασίες εκτελούνται "παράλληλα": δηλ. όχι σειριακά. Υπάρχουν δύο τρόποι: Όσο μια περιφερειακή συσκευή (π.χ. δίσκος) εκτελεί μια εντολή, το Λ/Σ. "δίνει" (dispatches) τη CPU σ' ένα άλλο "έτοιμο" (ready) πρόγραμμα. Όταν η CPU "δίνεται" σ' μία διεργασία (process), το process συνήθως δεν κρατάει τη CPU μέχρι να τελειώσει, ακόμα και όταν το process δεν κάνει I/O. Κάθε λίγο (π.χ. 100ms) το CPU δίνεται σ' άλλο process. σε κάθε «στιγμή» σ' έναν υπολογιστή εκτελούνται πολλές παράλληλες ενέργειες. Για ν' αντιμετωπίσουν τις δυσκολίες που προκύπτουν, τα Λ.Σ. χρησιμοποιούν την έννοια του process. Προσέξτε: και οι 2 τρόποι δεν είναι δεδομένοι απαιτείται υποστήριξη από υλικό (Direct mem access, 1 ος τρόπος) και από τον αλγόριθμο χρονοπρογραμματισμού! 4
Διεργασίες (process) - 2 ιεργασία είναι ένα πρόγραμμα σεεκτέλεση, το οποίο περιλαμβάνει: εκτελέσιμο πρόγραμμα δεδομένα του προγράμματος σωρό απαριθμητή προγράμματος δείκτη σωρού και άλλους καταχωρητές λοιπές απαραίτητες πληροφορίες. 5
Διεργασίες (processes) - 3 Η δημιουργία και ο τερματισμός των διεργασιών υποστηρίζονται από τη λειτουργία των θεμελιακών κλήσεων του Λ.Σ. Στη δενδροειδή δομή διεργασιών (tree structure), κάθε διεργασία (parent process) μπορεί να δημιουργήσει νέα θυγατρική διεργασία (child process). 6
Διεργασίες (processes) 4 Όταν το σύστημα δημιουργεί μία διεργασία: της δίνει ένα όνομα την παρεμβάλει στη λίστα των διεργασιών της δίνει μία προτεραιότητα της δημιουργεί είσοδο στον Πίνακα ιεργασιών της παραχωρεί τμήμα των αγαθών που χρειάζεται για τη λειτουργία της 7
Διεργασίες (process) - 5 Παράδειγμα 1. Στα συστήματα καταμερισμού χρόνου, όταν μία διεργασία αναστέλλεται προσωρινά, πρέπει να ληφθεί πρόνοια ώστε να μπορεί να συνεχίσει αργότερα από το σημείο στο οποίο βρισκόταν. Τα απαραίτητα στοιχεία βρίσκονται στην αντίστοιχη είσοδο του Πίνακα ιεργασιών. 8
Διεργασίες (process) - 6 Παράδειγμα 2. Η διεργασία κέλυφος ή φλοιός (shell) στο UNIX διαβάζει εντολές από ένα τερματικό για μεταγλώττιση προγραμμάτων. Ο φλοιός δημιουργεί νέα διεργασία-παιδί, ηοποίαθα εκτελέσει το πρόγραμμα μεταγλώττισης. Όταν η διεργασία-παιδί ολοκληρώσει τη μεταγλώττιση, εκτελεί μία κλήση συστήματος για τερματισμό του εαυτού της. 9
Η Διεργασία στο Πρόγραμμα Γράφουμε ένα πρόγραμμα (Java). Ένας compiler μετατρέπει το πρόγραμμα σε μία λίστα οδηγιών. Η CPU ερμηνεύει τις οδηγίες της λίστας void X (int b) { if(b == 1) { int main() { int a = 2; X(a); } 10
Διεργασίες Πολυπρογραμματισμός: αφορά στο γεγονός ότι πολλές διεργασίες τρέχουν ανά πάσα στιγμή. Ποια η διαφορά μεταξύ «διεργασίας» & "προγράμματος"; Μια διεργασία αντιπροσωπεύει μια διαδικασία η οποία εκτελείται με βάση ένα πρόγραμμα, εισόδου/εξόδου και έχει και μια κατάσταση (state - δηλ. οι τιμές των μεταβλητών του προγράμματος, CPU registers,...) Οι διεργασίες σχηματίζουν μια ιεραρχία πατέρα-παιδιού (ή πρόγονου-απόγονου) (π.χ. Στο UNIX μέσω του fork system call). 11
Διεργασίες Κατάσταση μιας διεργασίας (ως προς την εκτελεσή της) τρέχει (running): έχει τη CPU έτοιμο (ready): μπορεί να τρέξει, αλλά η CPU δόθηκε αλλού. μπλοκαρισμένη (blocked): περιμένει «εξωτερικό» γεγονός. 1. περιμένει I/O 2. CPU δίνεται σ' άλλο process 3. CPU δίνεται σ' αυτό το process 4. I/O έγινε Για την μετάβαση (1) υπάρχει συνήθως ένα block system call. Οι μεταβάσεις (2) και (3) προκύπτουν από παρεμβάσεις του scheduler (δρομολογητή/χρονοπρογραμματιστή) του Λ.Σ. 1 3 2 4 12
Αρχεία 1 Σύστημα αρχείων (file system) είναι το τμήμα του Λ/Σ που ασχολείται με τη διαχείριση των αρχείων. Το Λ/Σ προσφέρει ένα αφηρημένο μοντέλο από αρχεία ανεξάρτητα συσκευής. 13
Αρχεία 2 Τι είναι Αρχείο (file)? Μία ονομαστική λίστα ονομάτων από ανάλογες πληροφορίες αποθηκευμένο σε ένα σημείο (δίσκο) Ιδιότητες αρχείου Όνομα, τύπος, μέγεθος, προστασία, δημιουργός, ώρα δημιουργίας Λειτουργία Αρχείου Δημιουργία, Άνοιγμα (Open), ανάγνωση (Read), εγγραφή (Write), εύρεση, διαγραφή 14
Αρχεία 3 Χρήσιμες έννοιες για την υλοποίηση ενός συστήματος αρχείων είναι: κατάλογος (directory) κατάλογος εργασίας (working directory) δενδροειδής δομή (tree structure) όνομα διαδρομής (pathname) περιγραφέας αρχείου (file descriptor) ειδικά αρχεία μπλοκ (block special files) (δίσκοι) ειδικά αρχεία χαρακτήρα (character special files) (terminals, line printers, network ports) προστασία (protection) (RWXD) σωληνώσεις (pipes). 15
Αρχεία -4 16
Αρχεία - Διεργασίες Ομοιότητες διεργασιών - αρχείων Οι ιεραρχίες διεργασιών και οι ιεραρχίες αρχείων οργανώνονται σε δενδροειδή μορφή 17
Αρχεία - Διεργασίες ιαφορές διεργασιών - αρχείων το βάθος των δένδρων διεργασιών είναι μικρό, ενώ των αρχείων συνήθως μεγαλύτερο ο χρόνος ζωής των δένδρων διεργασιών είναι πολύ μικρότερος από αυτόν των αρχείων στις διεργασίες υπάρχει πατρότητα, δηλαδή μόνο η διεργασίαγονέας μπορεί να ελέγξει τη διεργασία-παιδί, ενώ στα αρχεία δεν υπάρχει αντίστοιχη έννοια ελέγχου στις διεργασίες υπάρχει προστασία (protection), δηλαδή μόνο η διεργασία-γονέας μπορεί να έχει προσπέλαση στη διεργασίαπαιδί, ενώ στα αρχεία υπάρχουν μηχανισμοί που επιτρέπουν σε ευρύτερο πλήθος χρηστών να διαβάζουν καταλόγους και αρχεία πέραν του ιδιοκτήτη. 18
Κλήσεις Συστήματος (system calls) - 1 Κλήσεις συστήματος είναι το σύνολο των εκτεταμένων εντολών (extended instructions) που παρέχει το Λ/Σ, οι οποίες βοηθούν την επικοινωνία μεταξύ Λ/Σ και προγραμμάτων του χρήστη. Οι κλήσεις συστήματος δημιουργούν, καταστρέφουν και χρησιμοποιούν οντότητες λογισμικού (π.χ. διεργασίες, αρχεία) τις οποίες διαχειρίζεται το Λ.Σ. 19
Κλήσεις Συστήματος (system calls) -2 Οι κλήσεις συστήματος μπορεί να κληθούν για: να ζητηθεί περισσότερη μνήμη να απελευθερωθεί αχρησιμοποίητη μνήμη τη δημιουργία διεργασιών τη δημιουργία αρχείων το άνοιγμα/κλείσιμο αρχείων τη μεταφορά αρχείου την εκτύπωση αρχείου τη διαγραφή αρχείου τη δημιουργία/διαγραφή καταλόγου τη μετακίνηση καταλόγου. 20
Κλήσεις Συστήματος (system calls) - 3 Σε κάθε κλήση συστήματος αντιστοιχεί μία διαδικασία βιβλιοθήκης -.Β. (library procedure), την οποία καλούν τα προγράμματα του χρήστη. Άρα: Η διαδικασία βιβλιοθήκης καλείται από το πρόγραμμα του χρήστη. Η κλήση συστήματος προκαλείται από την κλήση της διαδικασίας βιβλιοθήκης. 21
Κλήσεις Συστήματος (system calls) - 4 Ηδιαδικασία, συνολικά περιλαμβάνει τα εξής βήματα (1/2): το πρόγραμμα του χρήστη καλεί τη διαδικασία βιβλιοθήκης η διαδικασία βιβλιοθήκης τοποθετεί παραμέτρους κλήσης σε προκαθορισμένο χώρο - καταχωρητές μνήμης η διαδικασία βιβλιοθήκης εκπέμπει εντολή TRAP για να ξεκινήσει το Λ/Σ (σκοπός της διαδικασίας βιβλιοθήκης είναι να αποκρύψει τις λεπτομέρειες μιας εντολής TRAP και να κάνει τις κλήσεις συστήματος να μοιάζουν με κλήσεις κανονικών διαδικασιών) το Λ/Σ εξετάζει τις παραμέτρους κλήσης αν είναι αποδεκτές 22
Κλήσεις Συστήματος (system calls) - 5 Η διαδικασία, συνολικά περιλαμβάνει τα εξής βήματα (2/2): το Λ/Σ εκτελεί λειτουργίες της αίτησης το Λ/Σ τοποθετεί κωδικό κατάστασης (status code) σε καταχωρητή (επιτυχία ή αποτυχία εκτέλεσης) το Λ/Σ εκτελείreturn FROM TRAP (επιστροφή ελέγχου στη.β.) η.β. επιστρέφει τον έλεγχο στο πρόγραμμα, επιστρέφοντας τον κωδικό κατάστασης ως τιμή μιας συνάρτησης. 23
ΦΛΟΙΟΣ Φλοιός (shell) ή διερμηνευτής εντολών (command interpreter) είναι η κύρια διασύνδεση ανάμεσα στο χρήστη ή προγραμματιστή και στο Λ/Σ. Ο φλοιός δεν αποτελεί τμήμα του Λ/Σ. Όταν ένας χρήστης συνδεθεί στο σύστημα, ο φλοιός είναι η συνήθης αρχική εντολή εκτέλεσης (initial command). 24
ΦΛΟΙΟΣ Εκτέλεση εντολής στο προσκήνιο (foreground) Στην εκτέλεση μιας εντολής (π.χ. date) κατά κανόνα ο φλοιός δημιουργεί διεργασία-παιδί, η οποία και εκτελεί την εντολή. Μετά την ολοκλήρωσή της, ο φλοιός ενεργοποιείται εκ νέου και τυπώνει το προκαθορισμένο prompt. Εκτέλεση εντολής στο παρασκήνιο (background) Η εντολή αρχίζει να εκτελείται, αλλά το τερματικό είναι διαθέσιμο για αξιοποίηση πριν τη συμπλήρωση εκτέλεσης της εντολής, π.χ.: $ cat file1 file2 file3 sort > /dev/lp & 25