Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Τι εξυπηρετεί ένα λειτουργικό σύστημα (ΛΣ) σε ένα υπολογιστικό σύστημα? Τι κάνει ένα ΛΣ? Ποιός χρειάζεται ένα ΛΣ?
Operating system interface Η θέση ενός ΛΣ? Το στρώμα μεταξύ του hardware και των user programs (application programs) Το ΛΣ είναι ένα software system που αλληλεπιδρά απευθείας με το hardware User programs Operating system interface OS Hardware interface hardware
User program: εντολές και δεδομένα. Hardware: CPU, Καταχωρητές, Δίσκοι, τερματικά Hardware interface: το σύνολο εντολών μηχανής (instruction set), καθώς και πράγματα όπως interrupts οτιδήποτε χρειάζεται να γνωρίζει ένας προγραμματιστής ώστε να αναπτύσει προγράμματα ΛΣ: υλοποιεί το OS interface + διαχείριση πόρων (resource management) ΛΣ interface: το επαυξημένο (enhanced) instruction set (η πλειοψηφία των εντολών του hardware) καθώς και συμπληρωματικές λειτουργίες που υποστηρίζονται από το OS χρησιμοποιώντας ειδικές “system calls”. User program: εντολές και δεδομένα.
Τι κάνει ένα ΛΣ? Επαυξάνει τις δυνατότητες (εντολές) που προσφέρει το hardware. Πως εκτελούνται τα προγράμματα στο hardware του υπολογιστή? Ενα πρόγραμμα στην μνήμη ξεκινάει το σημείο που υποδεικνύει ο program counter (pc), και ολοκληρώνεται με την εντολή halt.
Τι κάνει ένα ΛΣ? Για να εκτελέσει ένα απλό πρόγραμμα το ΛΣ θα πρέπει Να δεχθεί/ερμηνεύσει την εντολή του χρήστη. Να εντοπίσει το κατάλληλο αρχείο και να το φορτώσει στην μνήμη. Να θέσει τιμές σε καταχωρητές ώστε το πρόγραμμα να εκτελεστεί σωστά. Επιτρέπει στους χρήστες την αλληλεπίδραση με το ΛΣ μέσω κελύφους εντολών (Shell) Εντοπίζει το κατάλληλο αρχείο (File system) Εντοπίζει διαθέσιμο χώρο μνήμης για το πρόγραμμα (Memory management) Χειρίζεται αιτήματα I/Ο
Τι κάνει ένα λειτουργικό σύστημα? Ας θεωρήσουμε την εκτέλεση πολλαπλών προγραμμάτων? Διαμοιράζει πόρους (CPU, μνήμη, κλπ.) Για κάθε εκτελούμενο πρόγραμμα (διεργασία), το ΛΣ διαμορφώνει μία ιδεατή μηχανή, δηλαδή διαμορφώνεται η εντύπωση ότι διαθέτει εξολοκλήρου την CPU, την μνήμη, κλπ. Συντονίζει την εκτέλεση των διεργασιών (δημιουργία, εκτέλεση, μεταγωγή) Διαχειρίζεται τους υλικούς πόρους (χρονοδρομολόγηση). Οργανώνει μία ιδεατή μηχανή για κάθε διεργασία.
Σαν διαχειριστής πόρων, το ΛΣ τυπικά χειρίζεται υλικούς πόρους: Επεξεργαστής (process management) Μνήμη (memory management) Ελεγκτές I/O (I/O system) Συσκευές δίσκων (File System, I/O system) Αλλες συσκευές I/O
Η διαχείριση πόρων από το ΛΣ αναφέρεται σε : Μετασχηματισμό ενός φυσικού πόρου σε ένα στιγμιότυπο εικονικού πόρου (π.χ. printer) Πολύπλεξη μεταξύ διαφορετικών στιγμιοτύπων του εικονικού πόρου οταν υπάρχει μόνο ένας φυσικός πόρος. TDM (time division multiplexing) vs SDM (space division multiplexing); για ορισμένους πόρους χρησιμοποιείται TDM (εκτυπωτής); για άλλους SDM (δίσκος) Χρονοδρομολόγηση των πόρων μεταξύ προγραμμάτων
Το κάθε ιδεατό συστατικό έχει συγκεκριμένους κανόνες: Το ΛΣ δημιουργεί ένα ιδεατό υπολογιστή για κάθε πρόγραμμα, με το δικό του: Επεξεργαστή Χώρο Διευθύνσεων Αντικείμενα Δίσκου/File system Το κάθε ιδεατό συστατικό έχει συγκεκριμένους κανόνες: Ιδεατός Επεξεργαστής Ορισμένες εντολές του πραγματικού επεξεργαστή (native), τις οποίες επιτρέπεται να χρησιμοποιήσει μόνο το ΛΣ απροκρύπτονται; νέες “εντολές” είναι διαθέσιμες (system calls) Pvirtual = Pphysical - {OS only Instr} + {OS support Instr} system calls = “software interrupts”
Ιδεατός επεξεργαστής Ιδεατή Κύρια Μνήμη Ιδεατό I/O OS- (Protected) εντολές είναι αυτές που επιτρέπει αδιακρίτως την πρόσβαση στο υλικό (πρόσβαση σε ολόκληρη την μνήμη, σε κάθε I/O συσκευή, κλπ.) Διάκριση των δικαιωμάτων (privileges) των εντολών βάσει καταστάσεων υλικού: system and user. (1 bit στον ειδικό καταχωρητή processor status word). Ιδεατή Κύρια Μνήμη Δημιουργείται η ψευδαίσθηση ότι το κάθε πρόγραμμα έχει την προσωπική του μνήμη που ξεκινάει στην διεύθυνση 0. Ιδεατό I/O Δημιουργεί την ψευδαίσθηση ότι το κάθε πρόγραμμα έχει το δικό του set συσκευών υλικού.
Ιδεατή Δευτερεύουσα Μνήμη Δημιουργεί την ψευδαίσθηση ότι κάθε πρόγραμμα έχει τον προσωπικό χώρο του στο δίσκο καθώς και file system.
Ιδεατός υπολογιστής
Ιδεατός επεξεργαστής Virtual Processor • υλοποιεί περίπου το ίδιο interface με την φυσική CPU • δεν επιτρέπει την πρόσβαση σε “privileged operations” • system calls: – Δημιουργία νέων virtual computers (διεργασιών) – Επικοινωνία μεταξύ διεργασιών – Εκχώρηση μνήμης – Λειτουργίες I/O – Πρόσβαση file system
Πολύπλεξη χώρου στη κύρια μνήμη
Πρόσβαση στις υπηρεσίες του ΛΣ • Μία κλήση συστήματος εκτελείται ως εξής: – Οι παράμετροι της κλήσης τοποθετούνται σε συγκεκριμένες θέσεις (καταχωρητές, μνήμη) – Κλήση ενός “software interrupt” ή “trap” • Μεταγωγή σε κατάσταση πυρήνα (kernel mode) – Ενεργοποιείται το ΛΣ και αναλαμβάνει τον έλεγχο για την διεκπεραίωση της αίτησης. • To software interrupt παραπέμπει στο κατάλληλο χειριστή διακοπών (interrupt handler); Η ρουτίνα χειρισμού διακοπών εξετάζει τις τιμές καταχωρητών/μνήμης και προσδιορίζει την ενέργεια που έχει ζητηθεί. • Οταν ολοκληρωθεί η ενέργεια, η εκτέλεση συνεχίζεται από το σημείο διακοπής. Ο χειριστής επιστρέφει τα αποτελέσματα μέσω μνήμης/καταχωρητών
Συνήθη system calls • UNIX (POSIX) • Windows – pid = fork() – waitpid(pid, &statloc, options) – execve(name, argv, envp) – exit(status) – fd = open(file, how, ...) – read(fd, buffer, bytes) – write(fd, buffer, bytes) – close(fd) – mkdir(name, mode) – rmdir(name) – chdir(dir) – chmod(name, mode) – kill(pid, signal) • Windows – CreateProcess – ExitProcess – CreateFile – ReadFile – WriteFile – CloseHandle – CreateDirectory – RemoveDirectory – SetCurrentDirectory
Ποιός χρειάζεται ένα ΛΣ? Το ΛΣ καθιστά ευκολότερη την χρήση του υπολογιστή. Ολοι οι υπολογιστές γενικής χρήσης χρειάζονται ένα ΛΣ. Ποιός δεν χρειάζεται ΛΣ? Ορισμένες πολύ εξειδικευμένες συσκευές δεν απαιτούν ΛΣ.
Οψεις Λειτουργικού Συστήματος Top-down: σαν υλοποίηση ιδεατών/εκτεταμένων μηχανών που καθιστούν ευκολότερο το προγραμματισμό του υλικού και … Παρέχει διεπαφές στα προγράμματα χρήστη Bottom-up: Σαν διαχειριστής πόρων που συντονίζει και ελέγχει την ανάθεση πόρων