Λειτουργικά Συστήματα

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

Τι είναι ο προγραμματισμός
Λογισμικο συστηματοσ Κεφάλαιο 4ο
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ – ΕΞΟΔΟΥ (INPUT/OUTPUT)
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Λειτουργικό Σύστημα ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ENOTHTA B.1.3 (1)
Λειτουργικά Συστήματα
Λειτουργικά Συστήματα
Λειτουργικά συστήματα
ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ.
ΛΟΓΙΣΜΙΚΟ ΣΥΣΤΗΜΑΤΟΣ Κεφάλαιο 4 ο Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Το υλικο του Υπολογιστη
Λειτουργικό Σύστημα 2ο μέρος.
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Λογισμικο συστηματοσ Κεφάλαιο 4ο
Ηλεκτρονικού Υπολογιστή
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
ΕΡΓΑΣΙΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Β’ ΛΥΚΕΙΟΥ
1 Εισαγωγή στις Βάσεις Δεδομένων  Ανάγκη Αποθήκευσης και Διαχείρισης Δεδομένων  Συστήματα Αρχείων  Συστήματα Βάσεων Δεδομένων  Παραδοσιακές και Σύγχρονες.
Στο λειτουργικό σύστημα Windows, υπάρχουν εικονίδια (icons) τα οποία αναπαριστούν τις διάφορες οντότητες (φυλαγμένες πληροφορίες, προγράμματα που κάνουν.
Υπηρεσίες δικτύων επικοινωνίας
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ
Κεφάλαιο 2 Το Εσωτερικό του υπολογιστή
1 Εισαγωγή στις Βάσεις Δεδομένων  Ανάγκη Αποθήκευσης και Διαχείρισης Δεδομένων  Συστήματα Αρχείων  Συστήματα Βάσεων Δεδομένων  Παραδοσιακές και Σύγχρονες.
Κεφάλαιο 6 -Περιβάλλοντα Ανάπτυξης Εφαρμογών
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1.5 Γλώσσες Προγραμματισμού
Ο προσωπικός υπολογιστής εσωτερικά
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Κεφάλαιο 10 – Υποπρογράμματα
Λειτουργικά Συστήματα Πολλών Χρηστών
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Διεργασίες.
Νήματα με την χρήση των Posix Threads (pthreads)‏.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Το Λογισμικό του Ηλεκτρονικού Υπολογιστή Υπολογιστικό Σύστημα Λογισμικό (Software) Λογισμικό Εφαρμογών Λογισμικό Συστήματος Λειτουργικό Σύστημα Ειδικά.
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Κύρια Μνήμη Διάφοροι τύποι μνήμης RAM Από πάνω προς τα κάτω, DIP, SIPP, SIMM (30-pin), SIMM (72-pin), DIMM (168-pin), DDR DIMM (184-pin). Μνήμη RΟM.
A’ ΕΠΑ.Λ. Εφαρμογές Πληροφορικής Γεωργιλά Χιονία 1.
Διαχείριση Πόρων (1/10) Εισαγωγή στην Πληροφορκή 1 Στα πρώτα χρόνια των υπολογιστών, όπου μόνο ένα πρόγραμμα είχε τη δυνατότητα να βρίσκεται στην κύρια.
στην Επιστήμη των Υπολογιστών Κωδικός Διαφανειών: MKT110
Λειτουργικά Συστήματα
Κατανεμημένα Συστήματα
Γνωριμία με το Λογισμικό του Υπολογιστή
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
Λογισμικό Συστήματος και Λογισμικό Εφαρμογών
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Κεφάλαιο 7: Διαδικτύωση-Internet
Το μοντέλο πελάτη - εξυπηρετητή
Εφαρμογές Νέφους ΚΕΦΑΛΑΙΟ 13.
ΕΝΟΤΗΤΑ 1 – Υλικό, Λογισμικό και Εφαρμογές
Εφαρμογές Νέφους ΚΕΦΑΛΑΙΟ 13.
H/Y Υλικό Λογισμικό Συστήματος Εφαρμογών. H/Y Υλικό Λογισμικό Συστήματος Εφαρμογών.
TO BIOS βρίσκεται στην μητρική πλακέτα και τα αρχικά του σημαίνουν: Βασικό Σύστημα Εισόδου-Εξόδου.
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ
Μεταγράφημα παρουσίασης:

Λειτουργικά Συστήματα Υπηρεσίες ΛΣ

Υπηρεσίες ΛΣ Διεπαφή χρήστη (CLI, batch, GUI) Εκτέλεση προγράμματος (φόρτωση, εκτέλεση, τερματισμός) Λειτουργίες Ε/Ε (μέσα για χειρισμό συσκευών από τους χρήστες) Χειρισμός συστήματος αρχείων (διαχείριση δικαιωμάτων, έλεγχος πρόσβασης) Επικοινωνίες (τοπικά ή απομακρυσμένα, με κοινή μνήμη ή πέρασμα μηνυμάτων)

Υπηρεσίες ΛΣ Ανίχνευση σφαλμάτων (ΚΜΕ, μνήμη (σφάλμα μνήμης, διακοπή ρεύματος), συσκευές Ι/Ο (σφάλμα ισοτιμίας, αποτυχία σύνδεσης, έλλειψη χαρτιού στον εκτυπωτή), προγράμματα χρήστη (division by zero, προσπάθεια πρόσβασης σε μη νόμιμη θέση μνήμης) Κατανομή πόρων Πληροφορίες απολογισμού (ποιοι χρήστες χρησιμοποιούν πόσο, ποιους πόρους) Προστασία και ασφάλεια (προστασία εξωτερικών συσκευών I/O πχ., κάρτα δικτύου από προσπάθειες μη έγκυρης πρόσβασης, καταγραφή των συνδέσεων και ανίχνευση εισβολών)

Διεπαφή χρήστη Διερμηνευτής εντολών Κάποια ΛΣ περιλαμβάνουν τον command interpreter στον πυρήνα. Άλλα όπως τα Windows και το Unix σαν ένα ειδικό πρόγραμμα που τρέχει όταν αρχίζει μια συγκεκριμένη εργασία (Windows) ή όταν συνδεθεί ο χρήστης. Κάποια ΛΣ (πχ. UNIX/Linux) παρέχουν πολλαπλούς διερμηνευτές οι οποίοι καλούνται φλοιοί (shells) πχ., Bourne, C, Bourne-Again κλπ.

Διεπαφή χρήστη Σε κάποια ΛΣ ο διερμηνευτής παρέχει τον κώδικα για την εκτέλεση της εντολής. Στο UNIX οι περισσότερες εντολές υλοποιούνται μέσω προγραμμάτων συστήματος. Πχ. Η εντολή rm file.txt ψάχνει για ένα αρχείο rm για να το φορτώσει στη μνήμη και να το εκτελέσει με παράμετρο file.txt Πλεονέκτημα: Ευκολία υλοποίησης νέων εντολών.

Διεπαφή χρήστη Γραφικά Περιβάλλοντα Χρήστη (GUI) Διεπαφή παραθυρικού περιβάλλοντος Ανάλογα με τη θέση του ποντικιού και το πάτημα κουμπιού καθορίζεται πιο πρόγραμμα θα εκτελεστεί ή επιλέγονται δεδομένα. Πρώτο GUI εμφανίστηκε το 1973 από τη Xerox. Διαδόθηκαν με την έλευση των Apple Macintsh στη δεκαετία του 80. Για την ακρίβεια τo MacOS δεν παρείχε ποτέ διεπαφή γραμμής εντολών. H πρώτη έκδοση των Windows ήταν στην ουσία το ένα GUI πάνω από το MSDOS. Στα UNIX έχουν κυριαρχήσει οι CLI, χωρίς αυτό να σημαίνει πως δεν υπάρχουν GUIs πχ. Χ-Windows ή το KDE στο linux.

Κλήσεις Συστήματος Οι κλήσεις συστήματος παρέχουν μια διεπαφή προς τις υπηρεσίες που διατίθενται από ένα ΛΣ. Γραμμένες συνήθως σε C, C++, Assembly Παράδειγμα Έστω ότι θέλουμε να διαβάσουμε ένα αρχείο και να το αντιγράψουμε σε ένα άλλο

Παράδειγμα κλήσεων συστήματος Απόκτηση ονόματος αρχείου εισόδου Απόκτηση ονόματος αρχείου εξόδου Άνοιγμα αρχείου εισόδου Δημιουργία αρχείου εξόδου Επανέλαβε Διάβασε δεδομένα από αρχείο εισόδου Γράψε δεδομένα σε αρχείο εξόδου Μέχρι το διάβασμα να αποτύχει Κλείσε το αρχείο εξόδου Τερμάτισε ομαλά

API Οι προγραμματιστές εφαρμογών συνήθως δε χρησιμοποιούν άμεσα κλήσεις συστήματος αλλά χρησιμοποιούν μια διεπαφή προγραμματισμού εφαρμογών (application programming interface API). To API καθορίζει ένα σύνολο συναρτήσεων που είναι διαθέσιμες στον προγραμματιστή εφαρμογών. Πιο γνωστά: Win32 API, POSIX API, Java API

Παράδειγμα πρότυπης συνάρτησης BOOL ReadFile(HANDLE file, LPVOID buffer, DWORD bytesToRead, LPDWORD bytesRead, LPOVERLAPPED ovl_ )

API Στο παρασκήνιο οι συναρτήσεις του API καλούν κλήσεις συστήματος. Για παράδειγμα η CreateProcess() του WIN32 καλεί την κλήση ΝΤCreateProcess() του Kernel. Πλεονέκτημα API vs. system calls: λιγότερη πολυπλοκότητα, μεταφερσιμότητα

Runtime support system Παρέχει μια διεπαφή κλήσεων συστήματος. Κάθεται ανάμεσα από το API και τις ρουτίνες του λειτουργικού. Απαραίτητο μέρος κάθε μεταγλωττιστή. Τυπικά με κάθε κλήση συστήματος αντιστοιχίζεται ένας αριθμός. Η διεπαφή κλήσεων συστήματος κρατά πίνακα με τους αριθμούς αυτούς καλεί την επιθυμητή κλήση μέσα στο kernel και επιστρέφει την κατάστασή της.

API-Runtime-Λειτουργικό

Παράδειγμα βιβλιοθήκης C

Τύποι κλήσεων συστήματος Έλεγχος διεργασιών Διαχείριση αρχείων Διαχείριση συσκευών Συντήρηση πληροφορίας Επικοινωνίες

Πέρασμα παραμέτρων Καταχωρητές Αποθήκευση παραμέτρων σε πίνακα και πέρασμα της διεύθυνσής του σε καταχωρητή. Στοίβα (push/pop)

Πέρασμα σε πίνακα

Λειτουργία στοίβας Η στοίβα χρησιμοποιείται για την προσωρινή αποθήκευση τοπικών μεταβλητών κατά την κλήση υποπρογραμμάτων, για την μετάδοση παραμέτρων και αποτελεσμάτων ανάμεσα στα υποπρογράμματα και για την αποθήκευση της διεύθυνσης επιστροφής Κάθε νέα κλήση δεσμεύει χώρο στην στοίβα για την αποθήκευση των αντίστοιχων τοπικών μεταβλητών του υποπρογράμματος. Αυτός ο χώρος αποδεσμεύεται όταν επιστρέψει το υποπρόγραμμα

Λειτουργία στοίβας Αλυσιδωτές κλήσεις υποπρογραμμάτων, η μια μέσα από την άλλη, έχουν σαν αποτέλεσμα την επέκταση της στοίβας Αν γίνουν πάρα πολλές αλυσιδωτές κλήσεις, η στοίβα μπορεί να γεμίσει (stack overflow) με αποτέλεσμα να τερματιστεί η διεργασία (κλασικό παράδειγμα είναι η ατέρμονη αναδρομή)

Λειτουργία στοίβας foo1 stack foo2 foo3 execution

Στοίβα χρήστη και συστήματος Συνήθως, κάθε διεργασία διαθέτει δύο στοίβες: τη στοίβα του χρήστη (user stack) και τη στοίβα του συστήματος (system stack) Η στοίβα χρήστη χρησιμοποιείται για την κλήση συναρτήσεων που αντιστοιχούν σε κώδικα του προγράμματος (των χρηστών) Η στοίβα του συστήματος χρησιμοποιείται για την κλήση συναρτήσεων του λειτουργικού συστήματος

Στοίβα χρήστη και συστήματος Αλλαγή από την στοίβα χρήστη στην στοίβα συστήματος γίνεται κάθε φορά που ενεργοποιείται μια κλήση συστήματος (μπορεί να υπάρξουν αλυσιδωτές κλήσεις συστήματος) Αλλαγή από την στοίβα συστήματος στην στοίβα χρήστη γίνεται όταν επιστρέψει και η τελευταία κλήση συστήματος

Στοίβα χρήστη και συστήματος foo1 u stack sys1 sys2 execution s stack

Έλεγχος διεργασιών Μια διεργασία που εκτελείται μπορεί να θέλει να φορτώσει (load) και να εκτελέσει (execute) ένα άλλο πρόγραμμα. Για παράδειγμα ο διερμηνευτής εντολών χρειάζεται να εκτελέσει κάποιο πρόγραμμα (σύμφωνα με την εντολή που δέχεται από το χρήστη) Η αρχική διεργασία μπορεί να χάνεται, να αποθηκεύεται (για να επιστρέψει ο έλεγχος σε αυτό) ή να εκτελείται παράλληλα με την καινούργια διαδικασία που δημιουργήθηκε.

Έλεγχος διεργασιών Η δημιουργία γίνεται με ειδική κλήση συστήματος (fork στο UNIX ή γενικότερα create process) Για να φορτωθεί το νέο πρόγραμμα και να εκτελεστεί χρησιμοποιείται η κλήση exec Ανάλογα με τον τρόπο που δόθηκε η εντολή ο φλοιός είτε περιμένει τη διεργασία να τελειώσει ή την τρέχει στο παρασκήνιο (background). Ο χρήστης μέσω άλλων κλήσεων συστήματος έχει τη δυνατότητα ελέγχου της εκτέλεσής της πχ., επανακαθορισμό προτεραιότητας, τερματισμός (kill), αναμονή για κάποιον χρόνο ή γεγονός (wait/signal event) Η διεργασία τελειώνει με την κλήση exit που επιστρέφει το επίπεδο σφάλματος (0 για σωστή εκτέλεση).

Διαχείριση αρχείων Τα περισσότερα ΛΣ παρέχουν κλήσεις συστήματος για: create / delete open / close read / write reposition get / set file attributes Επιπλέον κάποια έχουν πιο πολύπλοκες κλήσεις: - move - copy

Διαχείριση συσκευών Τα περισσότερα ΛΣ παρέχουν κλήσεις συστήματος για: request / release read / write reposition Κάποια ΛΣ (πχ. Unix) αντιμετωπίζουν με ενιαίο τρόπο τα αρχεία και τις συσκευές. Για την ακρίβεια οι συσκευές είναι αρχεία (στο λογικό επίπεδο). Για να ξεχωρίσουμε ποια αρχεία είναι αρχεία συσκευών, χρησιμοποιούνται ειδικά extensions ή σώζονται σε ειδικούς καταλόγους.

Διατήρηση πληροφορίας date time αριθμός συνδεδεμένων χρηστών ποσό ελεύθερης μνήμης κλπ.

Επικοινωνία Διεργασιών Μοντέλο μηνυμάτων Άνοιγμα σύνδεσης (όνομα σταθμού (hostname)/IP address, όνομα διεργασίας (process name)/pid) Οι κλήσεις get hostid/processid μεταφράζουν τα ονόματα σε αναγνωριστές. open connection/close connection Η διεργασία παραλήπτης πρέπει να δώσει άδεια για τη σύνδεση accept connection. Οι περισσότερες διεργασίες που δέχονται συνδέσεις τρέχουν συνεχώς στο σύστημα (διεργασίες δαίμονες process daemons) εκτελώντας μια κλήση wait for connection. read/write message

Επικοινωνία Διεργασιών Μοντέλο κοινής μνήμης shared memory create/attach Κανονικά το λειτουργικό προσπαθεί να εμποδίσει την προσπέλαση της μνήμης μιας διεργασίας από άλλη. Για αυτό το λόγο πρέπει και οι δύο διεργασίες να συμφωνήσουν στην άρση του περιορισμού. Η μορφή των δεδομένων και η θέση καθορίζονται από τις διεργασίες και όχι από το λειτουργικό. Οι διεργασίες είναι υπεύθυνες να διασφαλίσουν ότι δε θα γράφουν στην ίδια θέση ταυτόχρονα.

Επικοινωνία Διεργασιών Μηνύματα Κοινή μνήμη

Προγράμματα Συστήματος Μερικά είναι απλές διεπαφές προς τις αντίστοιχες κλήσεις συστήματος, άλλα είναι πιο σύνθετα Διαχείριση αρχείων Πληροφορίες κατάστασης (μητρώο (registry), config, logging, κλπ.) Τροποποίηση αρχείων (text editors ή εντολές) Υποστήριξη γλωσσών προγραμματισμού (compilers, interpreters, debuggers συχνά έρχονται μαζί με το ΛΣ) Φόρτωση και εκτέλεση προγραμμάτων (loaders) Επικοινωνίες (μηχανισμοί για δημιουργία εικονικών συνδέσεων, mail, browsing)

Εργαλεία Συστήματος Εκτός από τα προγράμματα συστήματος τα ΛΣ έχουν επιπλέον προγράμματα για την επίλυση κοινών προβλημάτων. Συχνά ο διαχωρισμός μεταξύ προγραμμάτων και εργαλείων συστήματος (system utilities) είναι δυσδιάκριτος. antivirus spreadsheets word processors DBs κλπ

Σχεδιασμός και Υλοποίηση ΛΣ Σχεδιαστικοί στόχοι (υλικό, τύπος συστήματος κλπ) Στόχοι χρήστη Στόχοι συστήματος Μηχανισμοί και πολιτικές Οι μηχανισμοί καθορίζουν το πώς θα γίνει κάτι. Οι πολιτικές το τι θα γίνει. Παράδειγμα: O χρονομετρητής είναι ένας μηχανισμός για τη διασφάλιση της προστασίας της ΚΜΕ. Ποια τιμή θα τεθεί είναι απόφαση της πολιτικής.

Σχεδιασμός και Υλοποίηση ΛΣ Οι μηχανισμοί θα πρέπει να είναι όσο γίνεται πιο γενικοί ώστε να υποστηρίζουν διαφορετικές πολιτικές. Παράδειγμα: Ένας μηχανισμός που δίνει προτεραιότητα σε κάποια προγράμματα έναντι άλλων μπορεί να υποστηρίξει μια πολιτική που δίνει προτεραιότητα σε διεργασίες με αυξημένη Ι/Ο, αλλά και την αντίθετή της.

Σχεδιασμός και Υλοποίηση ΛΣ Οι μηχανισμοί θα πρέπει να είναι όσο γίνεται πιο γενικοί ώστε να υποστηρίζουν διαφορετικές πολιτικές. Παράδειγμα: Ένας μηχανισμός που δίνει προτεραιότητα σε κάποια προγράμματα έναντι άλλων μπορεί να υποστηρίξει μια πολιτική που δίνει προτεραιότητα σε διεργασίες με αυξημένη Ι/Ο, αλλά και την αντίθετή της. - Case study: UNIX. Στην αρχή είχε έναν χρονοπρογραμματιστή (scheduler) καταμερισμού χρόνου. Στο Solaris o χρονοπρογραμματισμός ελέγχεται από πίνακες που φορτώνονται δυναμικά. Αναλόγως του πίνακα το σύστημα μπορεί να είναι καταμερισμού χρόνου, πραγματικού χρόνου, μαζικής επεξεργασίας κλπ

Σχεδιασμός και Υλοποίηση ΛΣ Παλιότερα σε Assembly, πχ. MSDOS. Σήμερα σε C/C++ πχ. Unix, Windows. Αυξημένη ταχύτητα vs. Μεταφερσιμότητα, ευκολία στην ανάπτυξη, αποσφαλμάτωση (debugging) και συντήρηση. Καθώς οι επεξεργαστές και οι μεταφραστές εξελίσσονται πχ. με την υποστήριξη pipelining πολλαπλών σταδίων η συγγραφή βελτιστοποιημένου κώδικα assembly από άνθρωπο γίνεται ολοένα δυσκολότερη. Πιο πιθανή είναι η βελτιστοποίηση της απόδοσης του ΛΣ μέσω ταχύτερων αλγορίθμων και δομών δεδομένων. Code profiling

Δομή ΛΣ Απλή δομή Συστήματα που δεν έχουν καθορισμένες δομές. Συνήθως γράφτηκαν σαν μικρά ΛΣ και στη συνέχεια επεκτάθηκαν σε σημείο μεγαλύτερο αυτού που επέτρεπε η αρχική σχεδίασή τους. Παράδειγμα: MSDOS. Στόχος ήταν η εξοικονόμηση χώρου. Οι διεπαφές και τα επίπεδα λειτουργικότητας δεν είναι καλά καθορισμένα. Για παράδειγμα τα προγράμματα εφαρμογών μπορούν να προσπελάσουν απευθείας ρουτίνες I/O για να γράψουν στην οθόνη ή το δίσκο. Σχεδίαση ευάλωτη σε επιθέσεις.

MSDOS

Δομή ΛΣ Οι αρχικές εκδόσεις του UNIX ήταν επίσης μονολιθικές. Δύο ξεχωριστά τμήματα: πυρήνας, προγράμματα συστήματος. Ο πυρήνας παρέχει το σύστημα αρχείων, το χρονοπρογραμματισμό της ΚΜΕ, διαχείριση μνήμης κλπ. Συνολικά τεράστιο ποσό λειτουργικότητας για ένα μόνο επίπεδο.

Unix

Δομή ΛΣ Πολυεπίπεδη προσέγγιση (layered approach) To ΛΣ χωρίζεται σε έναν αριθμό από επίπεδα-στρώματα (layers ή levels), κάθε ένα από τα οποία χτίζεται πάνω από υπάρχοντα επίπεδα. Το κάτω επίπεδο (επίπεδο 0), είναι το υλικό, ενώ το υψηλότερο (επίπεδο N) είναι η διεπαφή επικοινωνίας χρήστη-υπολογιστή (user interface) Με την τμηματοποίηση (modularity), τα επίπεδα επιλέγονται έτσι ώστε το καθένα να χρησιμοποιεί λειτουργίες και υπηρεσίες μόνο από τα χαμηλότερα επίπεδα

Παράδειγμα Στρωματοποίησης

OS/2

Δομή ΛΣ Πλεονεκτήματα layered approach: - Απλότητα κατασκευής Ευκολία στον έλεγχο λαθών Μειονεκτήματα Ο διαχωρισμός σε επίπεδα μπορεί να είναι δύσκολος. Παράδειγμα: O οδηγός του χώρου εικονικής μνήμης κανονικά θα βρισκόταν πάνω από το scheduler, επειδή μπορεί ενόσω περιμένει για I/O η ΚΜΕ να επαναχρονοπρογραμματιστεί στο διάστημα αυτό. Σε πολλά συστήματα όμως o scheduler είναι πολύπλοκος και κρατά πολλές πληροφορίες για τις διεργασίες που θα πιθανώς να πρέπει να τοποθετηθούν στη μνήμη. Λιγότερο αποδοτικές (καθυστερήσεις μεταξύ επιπέδων)

Microkernels Πρώτο τέτοιο ΛΣ το Mach

Microkernels Τα ΛΣ που βασίζονται σε μικροπυρήνες (microkernel) διαχωρίζουν στο έπακρο τους μηχανισμούς από την πολιτική. Υλοποιούν ένα σύνολο βασικών δομικών τμημάτων (blocks) τα οποία δεν έχουν σχεδόν καμία πολιτική. Πολιτικές και πιο προχωρημένοι μηχανισμοί μέσω αρθρωτών τμημάτων πυρήνα (modules) ή προγραμμάτων χρήστη.

Microkernels Πλεονεκτήματα Ευκολότερες αλλαγές στο ΛΣ και ευκολότερη μεταφορά του σε άλλα συστήματα. Αν μια υπηρεσία αστοχήσει το υπόλοιπο ΛΣ παραμένει ανεπηρέαστο. Μειονεκτήματα - Απόδοση πχ. Windows NT vs. 95 και XP

Αρθρωτά τμήματα (modules) - Τα περισσότερα σύγχρονα λειτουργικά συστήματα υλοποιούν δομικά τμήματα πυρήνα (kernel modules) Χρησιμοποιείται η αντικειμενοστραφής προσέγγιση Το κάθε τμήμα είναι ξεχωριστό Το κάθε ένα μιλάει στο άλλο μέσα από γνωστές διεπαφές (interfaces) Το κάθε τμήμα μπορεί να φορτωθεί στον πυρήνα με βάση τις ανάγκες ή κατά την εκκίνηση ή κατά την εκτέλεση

Solaris

Αρθρωτά τμήματα (modules) Συνολικά, παρόμοιο με τα επίπεδα (από την άποψη ότι κάθε τμήμα του πυρήνα έχει καθορισμένη και προστατευμένη διεπαφή) αλλά περισσότερο ευέλικτο (από την άποψη ότι ένα τμήμα μπορεί να καλέσει οποιοδήποτε άλλο) Παρόμοιο και με τους μικροπυρήνες (από την άποψη ότι το βασικό τμήμα έχει περιορισμένες λειτουργίες και τη γνώση για το πώς να φορτώνει και να επικοινωνεί τα υπόλοιπα τμήματα) πιο αποδοτικό όμως γιατί η επικοινωνία δε γίνεται μέσω μηνυμάτων.

Virtual machines Μια λογική αφαίρεση του υλικού του υπολογιστή σε διαφορετικά περιβάλλοντα εκτέλεσης Το ΛΣ παρέχει την ψευδαίσθηση των πολλαπλών διεργασιών, όπου η κάθε μια εκτελείται στο δικό της επεξεργαστή με τη δικιά της (ιδεατή) μνήμη Παράδειγμα: VMware της ΙΒΜ

Virtual machines - Οι πόροι του ΥΣ διαμοιράζονται προκειμένου να δημιουργήσουν τις ιδεατές μηχανές Ο χρονοπρογραμματισμός της ΚΜΕ, μπορεί να δώσει την εντύπωση ότι οι χρήστες έχουν δικό τους επεξεργαστή Η παροχέτευση και ένα σύστημα αρχείων μπορούν να παρέχουν ιδεατούς αναγνώστες καρτών και ιδεατούς εκτυπωτές Ένα κανονικό τερματικό χρήστη σε ένα σύστημα καταμερισμού χρόνου λειτουργεί ως η κονσόλα του χειριστή της ιδεατής μηχανής

Virtual machines

Virtual machines Εικονικός τρόπος λειτουργίας χρήστη & πυρήνα. Κλήση συστήματος πάνω από VM Προκαλεί στην πραγματική μηχανή μεταφορά στον ελεγκτή (monitor) του VM. To monitor αλλάζει την κατάσταση της εικονικής μηχανής Επανεκκινεί τη VM σε εικονικό τρόπο λειτουργίας πυρήνα.

Virtual machines Η έννοια της ιδεατής μηχανής παρέχει πλήρη προστασία των πόρων του συστήματος αφού η κάθε ιδεατή μηχανή είναι πλήρως απομονωμένη από τις άλλες ιδεατές μηχανές. Αυτή η απομόνωση πάντως, δεν επιτρέπει άμεσο διαμοιρασμό πόρων. Ένα σύστημα ιδεατής μηχανής είναι το τέλειο όχημα για έρευνα και ανάπτυξη στην περιοχή των ΛΣ. Η ανάπτυξη του συστήματος γίνεται στην ιδεατή μηχανή, αντί για την πραγματική και έτσι δεν διασπάται η κανονική λειτουργία του συστήματος

Virtual machines Η έννοια των ιδεατών μηχανών είναι δύσκολη στην υλοποίηση λόγω του φόρτου που απαιτείται για την παροχή ενός πιστού αντιγράφουν της υφιστάμενης μηχανής.

Java Virtual Machine (JVM) Τα μεταγλωττισμένα προγράμματα Java είναι bytecodes ανεξάρτητα πλατφόρμας που εκτελούνται από την ιδεατή μηχανή Java (Java Virtual Machine – JVM) H JVM αποτελείται από: φορτωτή κλάσεων επαληθευτή (class verifier) διερμηνέας σε χρόνο εκτέλεσης (run-time interpreter) - Αύξηση της απόδοσης με μεταγλωττιστές Just-In-Time (JIT) που παράγουν κώδικα μηχανής όταν μια κλάση φορτώνεται για πρώτη φορά στο σύστημα

Java Virtual Machine (JVM)

.ΝΕΤ Τα προγράμματα που αναπτύσσονται σε .ΝΕΤ περιβάλλον (C#, VB κλπ.) μεταγλωττίζονται σε μια ενδιάμεση γλώσσα ανεξάρτητη υλικού (Microsoft intermediate laguage MS-IL). Επέκταση .ΕΧΕ ή . DLL Η εικονική μηχανή .ΝΕΤ υλοποιείται από το CLR (Common Language Runtime) Κατά την εκτέλεση το CLR μετατρέπει τις MS-IL εντολές σε εντολές κατάλληλες για το σύστημα μέσω just-in-time μεταγλωττιστή

Γέννηση ΛΣ Τα ΛΣ είναι ρυθμισμένα να λειτουργούν σε οποιοδήποτε από μια κλάση μηχανημάτων. Το σύστημα πρέπει να διαμορφωθεί (configured) για κάθε συγκεκριμένο ΥΣ Το πρόγραμμα SYSGEN συλλέγει πληροφορίες που αφορούν τη συγκεκριμένη συγκρότηση του υλικού Εκκίνηση (Booting) – εκκίνηση ενός ΥΣ με τη φόρτωση του πυρήνα Πρόγραμμα Bootstrap – κώδικας που φυλάσσεται στη ROM που είναι σε θέση να εντοπίσει τον κώδικα του ΛΣ, να τον φορτώσει στη μνήμη και να αρχίσει την εκτέλεσή του