Το λειτουργικό σύστημα. Προγραμματισμός II 1

Σχετικά έγγραφα
Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Εισαγωγή στην Πληροφορική

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

Λιβανός Γιώργος Εξάμηνο 2017Β

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Εικονικοποίηση. Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο,

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2: Λογισμικό (Software) Εφαρμογές Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

Διαφορές single-processor αρχιτεκτονικών και SoCs

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Δομημένος Προγραμματισμός

Εισαγωγικά & Βασικές Έννοιες

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Προγραμματισμός Ι (HY120)

Ε-85: Ειδικά Θέµατα Λογισµικού

Κεφάλαιο 4. Λογισμικό Συστήματος

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

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

Αρχιτεκτονική Υπολογιστών

Κεφάλαιο 4: Λογισμικό Συστήματος

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

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

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

Εικονική Μνήμη (Virtual Μemory)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Αρχιτεκτονική Υπολογιστών

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

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

Σκοπός Μαθήματος. Λειτουργικά Συστήματα Η/Υ. Γενικές Πληροφορίες. Στόχοι Μαθήματος ΚΕΦΑΛΑΙΟ 1 - ΕΙΣΑΓΩΓΗ. Θεωρία: Εργαστήριο: Κεφάλαιο 1 «Εισαγωγή»

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Εισαγωγή στην Πληροφορική

Εικονικοποίηση. Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο,

Εισαγωγή στη Σχεδίαση Λογισμικού

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

(programming interfaceή/και application programming interface API).

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

Κεφάλαιο 10 ο Υποπρογράµµατα

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Ι (ΗΥ120)

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Διεργασίες και Νήματα (2/2)

Εισαγωγικά & Βασικές Έννοιες

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Επιτεύγµατα των Λ.Σ.

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

ΛΟΓΙΣΜΙΚΟ (software)

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ

Αποµακρυσµένη κλήση διαδικασιών

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Πληροφορική 2. Τεχνολογία Λογισμικού

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Προγραμματισμό για ΗΜΥ

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Εισαγωγή στον Προγραμματισμό

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

make Προγραμματισμός II 1

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Κατανεμημένα Συστήματα

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ

Transcript:

Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr

Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα υποστήριξης πολλών χρηστών Γενικής χρήστης υπάρχουν πολλές (ανεξάρτητες) εφαρμογές που μπορεί να εκτελούνται ταυτόχρονα μεταξύ τους μπορεί να δίνεται πρόσβαση σε πολλούς χρήστης που (γενικά) δεν εμπιστεύονται ο ένας τον άλλο ο αριθμός και το είδος των εφαρμογών είναι ανοιχτός και στην γενική περίπτωση μπορεί να αλλάξει δυναμικά Προγραμματισμός II 2 lalis@inf.uth.gr

application application application σύστημα γενικής χρήσης σύστημα ειδικού σκοπού OS HW abstraction, HW management, IPC hardware application HW abstraction, HW management hardware Προγραμματισμός II 3 lalis@inf.uth.gr

Ενδεικτική στοίβα λογισμικού ενός Η/Υ user-level API εφαρμογή (application) system-level API βιβλιοθήκες & περιβάλλοντα εκτέλεσης λειτουργικό (OS) user system hardware specs υλικό (HW) Προγραμματισμός II 4 lalis@inf.uth.gr

Λειτουργικό σύστημα και πυρήνας Λειτουργικό σύστημα (operating system) το σύνολο του λογισμικού και των διεργασιών μέσω των οποίων υλοποιείται η συνολική λειτουργικότητα που παρέχεται στις εφαρμογές Πυρήνας λειτουργικού (OS kernel) το τμήμα του λειτουργικού συστήματος που υλοποιεί την επικοινωνία και διαχείριση του υλικού στο πιο χαμηλό επίπεδο Εδώ δεν μας ενδιαφέρει αυτός ο διαχωρισμός Προγραμματισμός II 5 lalis@inf.uth.gr

Βασικοί ρόλοι και μηχανισμοί ΛΣ Αφαίρεση (abstraction) του υλικού απόκρυψη λεπτομερειών υλοποίησης, ανεξαρτησία από υλικό Διαχείριση πόρων και συσκευών του συστήματος επεξεργαστής, μνήμη, δίσκος, δίκτυο, λοιπά περιφερειακά Υποστήριξη εκτέλεσης προγραμμάτων εφαρμογής Υποστήριξη αποθήκευσης δεδομένων Υποστήριξη επικοινωνίας προγραμμάτων Κατανομή και ελεγχόμενη πρόσβαση σε πόρους του συστήματος Προγραμματισμός II 6 lalis@inf.uth.gr

Ασφάλεια Δεν μπορεί να γίνει υπόθεση για την ορθή συμπεριφορά προγραμμάτων και χρηστών προγραμματιστικά λάθη, κακόβουλοι χρήστες/προγράμματα Το λειτουργικό παρέχει κατάλληλους μηχανισμούς ελέγχου/ασφάλειας Δύο διαφορετικά επίπεδα/διαστάσεις Προστασία του ΛΣ από εφαρμογές / χρήστες Προστασία εφαρμογών / χρηστών μεταξύ τους Προγραμματισμός II 7 lalis@inf.uth.gr

Διαχωρισμός σύστημα - χρήστης Η ασφάλεια στα λειτουργικά συστήματα βασίζεται στον διαχωρισμό μεταξύ του κώδικα που ανήκει στο σύστημα και του κώδικα που ανήκει στον χρήστη Κώδικας συστήματος υλοποιεί τις βασικές λειτουργίες του συστήματος γράφεται από εξειδικευμένους/έμπιστους προγραμματιστές θεωρείται αξιόπιστος (χωρίς αυτό να ισχύει πάντα) Κώδικας χρήστη υλοποιεί λειτουργικότητα της εφαρμογής μπορεί να γραφτεί από οποιονδήποτε μπορεί να έχει πολλά και διάφορα λάθη μπορεί να είναι «κακόβουλος» Προγραμματισμός II 8 lalis@inf.uth.gr

Διεπαφή λειτουργικού συστήματος Ο κώδικας χρήστη δεν έχει απ ευθείας πρόσβαση σε κρίσιμους πόρους και συσκευές του συστήματος Το λειτουργικό παρέχει συγκεκριμένες λειτουργίες επικοινωνίας του κώδικα χρήστη με το λειτουργικό επικοινωνίας μεταξύ διαφορετικών προγραμμάτων χρήστη Η πρόσβαση σε αυτές τις λειτουργίες γίνεται μέσω ειδικών κλήσεων συστήματος (system calls) Το σύνολο των κλήσεων συστήματος ονομάζεται και διασύνδεση συστήματος (system interface) Προγραμματισμός II 9 lalis@inf.uth.gr

system interface/api non-trusted user code user Α program user Β program trusted system code system resources system Προγραμματισμός II 10 lalis@inf.uth.gr

Κλήσεις συστήματος Οι κλήσεις συστήματος υλοποιούνται μέσω ειδικής εντολής του επεξεργαστή (supervisor call svc) Όταν ένα πρόγραμμα καλέσει μια κλήση συστήματος αλλαγή του επεξεργαστή από user σε system mode άλμα στον κώδικα του λειτουργικού Όταν τερματιστεί η κλήση συστήματος επιστροφή στον κώδικα του χρήστη επαναφορά του επεξεργαστή σε user mode Η πρόσβαση στις εσωτερικές λειτουργίες και τους πόρους του ΛΣ επιτρέπεται μόνο σε system mode προστασία από προγραμματιστικά λάθη και «κακόβουλο» κώδικα Προγραμματισμός II 11 lalis@inf.uth.gr

χρόνος περιορισμένη πρόσβαση σε πόρους του συστήματος πλήρης πρόσβαση σε πόρους του συστήματος περιορισμένη πρόσβαση σε πόρους του συστήματος user code svc system code Προγραμματισμός II 12 lalis@inf.uth.gr

Απόκρυψη κλήσεων συστήματος Οι συμβάσεις κλήσης είναι περίπλοκες γίνονται σε χαμηλό επίπεδο αποθήκευση παραμέτρων και επιστροφή αποτελεσμάτων εύκολα γίνονται προγραμματιστικά λάθη Οι κλήσεις συστήματος συνήθως «περιτυλίγονται» ώστε να έχουν την μορφή οικείων συναρτήσεων, π.χ., με βάση την σύνταξη/συμβάσεις της C Τα περιτυλίγματα ορίζονται σε ειδικές βιβλιοθήκες system-level libraries Προγραμματισμός II 13 lalis@inf.uth.gr

applications user system API user-level libraries system-level libraries / system calls system system code Προγραμματισμός II 14 lalis@inf.uth.gr

application write( ) printf( ) stdio printf syslib write write write system χρόνος Προγραμματισμός II 15 lalis@inf.uth.gr

Το λειτουργικό σύστημα ως μαύρο κουτί Προσφέρει προγραμματιστική διασύνδεση/διεπαφή με βάση την οποία μπορεί να προγραμματιστούν πολλές διαφορετικές εφαρμογές χοντροκομμένη αναλογία: μια βιβλιοθήκη ειδικού τύπου Ο προγραμματιστής δεν χρειάζεται να γνωρίζει τις εσωτερικές λεπτομέρειες υλοποίησης του λειτουργικού συστήματος Πρέπει όμως να γνωρίζει ποιες λειτουργίες προσφέρονται από το λειτουργικό και πώς να τις χρησιμοποιεί σωστά Προγραμματισμός II 16 lalis@inf.uth.gr

χρήση system call user-level software black box System-level programming interface διάβασμα εσωτερική υλοποίηση λειτουργικού συστήματος εγχειρίδιο (manual) Προγραμματισμός II 17 lalis@inf.uth.gr

πρόγραμμα ζητά μια λειτουργία συστήματος svc έλεγχος της τιμής που επιστρέφεται! έχει άδεια; ΟΧΙ επιστροφή κωδικού αποτυχίας ΝΑΙ ΟΧΙ εκτέλεση της λειτουργίας επιτυχής εκτέλεση; ΝΑΙ επιστροφή κωδικού επιτυχίας Προγραμματισμός II 18 lalis@inf.uth.gr

Αποτυχία κλήσης συστήματος Η τιμή που επιστρέφει μια κλήση συστήματος πρέπει οπωσδήποτε(!) να ελέγχεται Σηματοδοτεί αν η κλήση πέτυχε (ενίοτε μαζί με επιπλέον πληροφορία) ή αν απέτυχε (όχι τον λόγο της αποτυχίας) Ο λόγος αποτυχίας αποθηκεύεται, ως κωδικός, στην καθολική μεταβλητή συστήματος errno οι κωδικοί λαθών ορίζονται στο αρχείο errno.h η συνάρτηση strerror επιστρέφει το (αλφαριθμητικό) μήνυμα που αντιστοιχεί στην τρέχουσα τιμή της errno η συνάρτηση perror εκτυπώνει αυτό το μήνυμα η τιμή της errno ανανεώνεται μόνο σε περίπτωση αποτυχίας μια κλήσης συστήματος γιατί; Προγραμματισμός II 19 lalis@inf.uth.gr 19

RTFM Προγραμματισμός II 20 lalis@inf.uth.gr

Το πρόβλημα της φορητότητας (portability) Συχνά είναι επιθυμητό ο κώδικας που γράφουμε να μπορεί να εκτελεστεί (σωστά), χωρίς καμία αλλαγή, σε διαφορετικούς υπολογιστές διαφορετικό υλικό/επεξεργαστές, διαφορετικά λειτουργικά Η φορητότητα του κώδικα μπορεί να είναι καθοριστικής σημασίας για την διάδοση του Όσο πιο κοντά στο λειτουργικό σύστημα βρίσκεται ο κώδικας τόσο λιγότερο μεταφέρσιμος είναι μπορεί όμως να εκμεταλλευτεί ειδικές λειτουργίες Υπάρχουν προδιαγραφές λειτουργιών επιπέδου συστήματος ανεξάρτητες λειτουργικού συστήματος POSIX (Portable Operating System Interface for Unix) Προγραμματισμός II 21 lalis@inf.uth.gr

Μεταφορά σε διαφορετική πλατφόρμα υλικού Application Operating System Ox re-compile modify & re-compile Application Operating System Ox Hardware Η1 Hardware Η2 Αλλαγή/προσαρμογή & μετάφραση λειτουργικού Μετάφραση προγράμματος εφαρμογής Προγραμματισμός II 22 lalis@inf.uth.gr

Μεταφορά σε διαφορετικό λειτουργικό σύστημα Application modify & re-compile Application Operating System O1 Operating System O2 Hardware Hx Hardware Hx Μετάφραση προγράμματος εφαρμογής Προγραμματισμός II 23 lalis@inf.uth.gr

Μεταφορά σε διαφορετικό λειτουργικό σύστημα με ίδια διεπαφή προγραμματισμού Application re-compile Application system interface I system interface I Operating System O1 Operating System O2 Hardware Hx Hardware Hx Μετάφραση προγράμματος εφαρμογής Προγραμματισμός II 24 lalis@inf.uth.gr

Μεταφορά σε διαφορετικό λειτουργικό σύστημα ή/και πλατφόρμα υλικού χωρίς παρέμβαση Application no action! Application Middleware Middleware Operating System O1 Operating System O2 Hardware H1 Hardware H2 Ο προγραμματιστής δεν χρειάζεται να κάνει τίποτα Χρησιμοποιείται ειδικό ενδιάμεσο/μεσοστρωματικό λογισμικό (middleware) που εξασφαλίζει ομοιόμορφη εσωτερική αναπαράσταση για όλα τα δεδομένα και τις λειτουργίες της εφαρμογής και του συστήματος Προγραμματισμός II 25 lalis@inf.uth.gr

Μεταφορά μέσω εικονικής μηχανής Application no action! Application Operating System O1 Operating System O1 VM Hardware H1 H1 Emulation Hypervisor Hardware H2 Ο προγραμματιστής δεν χρειάζεται να κάνει τίποτα Η εφαρμογή πακετάρεται μαζί με το λειτουργικό, και εκτελείται στο πλαίσιο μιας «εικονικής μηχανής» που εξομοιώνει το υλικό για το οποίο έχει φτιαχτεί το λειτουργικό, πάνω από άλλο λειτουργικό σύστημα Προγραμματισμός II 26 lalis@inf.uth.gr