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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

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

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

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

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

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

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

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

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός:

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Κεφάλαιο 2: Μεταφραστές

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

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

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

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

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

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

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

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

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

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

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

Η γλώσσα προγραμματισμού C

Διαδικασιακός Προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

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

Λογισμικό - Προγράμματα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

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

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

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

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

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

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

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

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

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

Transcript:

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

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

application application application σύστημα γενικής χρήσης σύστημα ειδικού σκοπού OS HW abstraction & communication hardware application basic 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

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

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

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

userα program userβ program πόροι συστήματος system Προγραμματισμός II 8 lalis@inf.uth.gr

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

κώδικας χρήστη system calls user system λειτουργικό (OS) Προγραμματισμός 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

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

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

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

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

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

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

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

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

source code Compiler object code Linker more object code executable Loader language-neutral Runtime Προγραμματισμός II 21 lalis@inf.uth.gr

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

φορητότητα πάνω από διαφορετικό υλικό applications/libraries operating system hardware Α modify re-compile applications/libraries operating system hardware Β φορητότητα πάνω από διαφορετικό λειτουργικό applications/libraries operating system Α hardware modify re-compile applications/libraries operating system Β hardware Προγραμματισμός II 23 lalis@inf.uth.gr