Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 4

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

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Πληροφορική I. "Λογισμικό (Software)" B. Φερεντίνος

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

ver Επεξεργαστές κειμένου, λογιστικών φύλλων, παρουσιάσεων Οδηγοί συσκευών (Device Drivers)

Linux με τη χρήση κονσόλας

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

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

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

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

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

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

Διαδικαστικά. Εισαγωγή στο Λειτουργικό Σύστημα UNIX. Διαδικαστικά. Τι είναι το Λειτουργικό Σύστημα

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

Προγραμματισμός Η/Υ. Λογισμικό. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

Εισαγωγή στο Λειτουργικό Σύστημα UNIX

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

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

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

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

Πληροφορική 2. Λειτουργικά Συστήματα

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

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

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

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

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

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

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

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

Εισαγωγή στο λειτουργικό σύστηµα Unix

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

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

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

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

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

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

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

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

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

Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 1

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

Βασίλειος Κοντογιάννης ΠΕ19

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

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

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

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

ΕΙΣΑΓΩΓΗ. Παρέχει µια διεπαφή (interface) ανάµεσα στο υλισµικό και στα προγράµµατα εφαρµογών/χρηστών.

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

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

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

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

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

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

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

ΒασικέςέννοιεςτουUNIX: Πλοήγηση στο Σύστημα Αρχείων, ΟφλοιόςτουUNIX, Βοηθητικά Προγράμματα, ΗδομήτουΠυρήνα.

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

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

Συστήματα Πληροφοριών Διοίκησης Ενότητα 5: Λογισμικό Πληροφοριακών Συστημάτων

Κεφάλαιο 5. Κεφ. 5 Λειτουργικά Συστήματα 1

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

Χαράλαμπος Καραγιαννίδης

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 1 : Λειτουργικά συστήματα. Δρ.

ΠΑΡΟΥΣΙΑΣΗ 2: ΔΕΞΑΜΕΝΗ ΘΕΜΑΤΩΝ

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1

Πληροφορίες. Εισαγωγή στην Πληροφορική. Κατηγορίες υλισµικού. Περίληψη µαθήµατος (συνέχεια) Επεξεργαστής Μνήµη. Χειµερινό Εξάµηνο

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

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

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

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

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

Μάθημα 8: Διαχείριση Μνήμης

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης

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

Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή.

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

Κεφάλαιο 3. Διδακτικοί Στόχοι

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

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

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

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

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΜΟΝΑΔΑ ΑΡΙΣΤΕΙΑΣ ΕΛ/ΛΑΚ

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

Transcript:

Λειτουργικά Συστήματα & Γλώσσες Προγραμματισμού Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 4 1

Λειτουργικά Συστήματα & Γλώσσες Προγραμματισμού Διαφάνειες σύμφωνα με τις Πανεπιστημιακές Σημειώσεις του Καθηγητή Κ. Γιαννάκογλου Επιμέλεια: Επικ. Καθηγητής Ν. Πετρόπουλος Παρουσίαση 4 2

Περιεχόμενα Παρουσίασης 4 "Λ/Σ UNIX & Λ/Σ LINUX" 1. Ιστορικά Στοιχεία UNIX 2. Ιστορικά Στοιχεία LINUX 3. Πρόγραμμα "Φλοιός" 4. Διεργασίες Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 3

Ιστορικά Στοιχεία UNIX (1) Το Λ/Σ UNIX (και ο κλώνος του LINUX) χρησιμοποιούνται σήμερα στη μεγαλύτερη ποικιλία Η/Υ. Όλα ξεκίνησαν από μια προσπάθεια, γύρω στο 1960, να αντικατασταθεί η αποκλειστική χρήση του Η/Υ από ένα και μόνο χρήστη τη φορά, με το σύστημα καταμερισμού χρόνου (time-sharing). Οι πρώτες ενέργειες, με μικρή και προσωρινή επιτυχία, έγιναν από το ΜIT, με το οποίο αργότερα συνεργάστηκαν τα AT&T Bell Laboratories και η General Electric. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 4

Ιστορικά Στοιχεία UNIX (2) Η τριμερής αυτή συνεργασία έδωσε ένα πρόγονο του σημερινού UNIX, το MULTICS (MULTI plexed Information and Computing Service). Το MULTICS, γενικά, μπορεί να θεωρηθεί ότι δεν εκπλήρωσε τους στόχους του αφού στηρίχθηκε σε προβληματική Γλώσσα Προγραμματισμού και δεν είχε την υποστήριξη ικανού Υλικού. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 5

Ιστορικά Στοιχεία UNIX (3) Στη συνέχεια ο Ken Thompson (μέλος της προηγούμενης ερευνητικής ομάδας), δημιούργησε μια παραλλαγή του MULTICS, το σύστημα UNICS (UΝiplexed Information and Computing Service) δουλεύοντας σε Η/Υ της σειράς PDP-7. Η ονομασία UNICS αργότερα άλλαξε σε UNIX. Χαρακτηριστικό της επιτυχίας της δουλειάς του Thomson είναι η μεταφορά, σε συνεργασία με τον Dennis Ritchie, του συστήματος σε Η/Υ της σειράς PDP-11 που μπορούσαν να υποστηρίζουν πολλούς χρήστες. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 6

Ιστορικά Στοιχεία UNIX (4) Η ομάδα των Thomson και Ritchie συνέχισε τις προσπάθειες αλλάζοντας Γλώσσες για τη γραφή του UNIX και έδωσαν μια "τελική" μορφή σε Γλώσσα "C", στην αρχή της δεκαετίας του 1970. Το γεγονός ότι οι σημαντικότερες φάσεις της εξέλιξης αυτής έλαβαν χώρα σε Η/Υ PDP-11 βοήθησε σημαντικά στην καθιέρωση του UNIX. Ο λόγος είναι ότι, την εποχή εκείνη, τα πανεπιστήμια διέθεταν κυρίως συστήματα PDP-11 και το σύστημα UNIX έγινε αποδεκτό αφού έλυνε αρκετά προβλήματα άλλων Λ/Σ. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 7

Ιστορικά Στοιχεία UNIX (5) Ακολούθησε η προσπάθεια το UNIX να ξεπεράσει την αποκλειστική χρήση στον PDP-11 και να τρέχει και σε άλλους Η/Υ. Το ότι ήταν γραμμένο σε C έλυνε αρκετά προβλήματα γιατί η C ήταν μια επιτυχημένη Γλώσσα. Έτσι, θεωρητικά, αρκούσε να γραφτεί ένας Μεταγλωττιστής C (C compiler) και Λογισμικό Οδήγησης Συσκευών (device drivers) για τις συσκευές I/Ο για κάθε άλλο Η/Υ μαζί με ένα μικρό τμήμα του Λ/Σ σε Γλώσσα Μηχανής (assembly language) κυρίως για τη διαχείριση μνήμης. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 8

Ιστορικά Στοιχεία UNIX (6) Πρακτικά όμως υπήρχαν πάντοτε κρίσιμες λεπτομέρειες που έπρεπε να επιλυθούν κάθε φορά που το UNIX μεταφερόταν σε άλλο τύπο Η/Υ. Η κατάσταση βελτιώθηκε σημαντικά όταν η ομάδα του Steve Johnson των Bell Laboratories δημιούργησε τον "φορητό" Μεταγλωττιστή C (portable C compiler), δηλαδή έναν Μεταγλωττιστή κατάλληλο για διαφορετικές αρχιτεκτονικές της CPU. Αυτό συνέβαλε στην εξάπλωση του UNIX σε πολλούς νέους Η/Υ διαφορετικών αρχιτεκτονικών CPU. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 9

Ιστορικά Στοιχεία UNIX (7) Στη συνέχεια η AT&T διέθεσε, γύρω στο 1984, τις πρώτες εμπορικές εκδόσεις UNIX, με πιο γνωστή και επιτυχημένη την UNIX System V. Συγχρόνως, το πανεπιστήμιο Berkeley, άρχισε να εργάζεται ερευνητικά σε μια έκδοση του UNIX, να την βελτιώνει και να την εξελίσσει, και κυκλοφόρησε τις δικές του εκδόσεις UNIX, αρχικά για τον Η/Υ PDP- 11. Αυτές ονομάσθηκαν εκδόσεις UNIX ΒSD (BSD= Berkeley Software Distribution). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 10

Ιστορικά Στοιχεία UNIX (8) Ανάμεσα στις βελτιώσεις των εκδόσεων BSD ήταν η χρήση εικονικής μνήμης (virtual memory) και σελιδοποίησης (paging) που επέτρεπε να τρέχουν προγράμματα μεγαλύτερα από τη φυσική μνήμη του H/Y, φορτώνοντας και ξεφορτώνοντας σελίδες από και προς τη μνήμη του από το σκληρό δίσκο. Το Berkeley προσέθεσε σημαντικό αριθμό νέων βοηθητικών Προγραμμάτων Συστήματος και Εφαρμογών στο UNIX, με πιο γνωστά από αυτά, τον κειμενογράφο vi και τον φλοιό c (c shell ή csh). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 11

Ιστορικά Στοιχεία UNIX (9) Στο τέλος του '80 υπήρχαν σε χρήση δύο διαφορετικές μορφές UNIX: η BSD4.3 του Berkeley και η 3η έκδοση του System V της AΤ&T. Η διπλή εμφάνιση του UNIX προκαλούσε προβλήματα κυρίως στις εταιρίες που ανέπτυσσαν λογισμικό για Η/Υ με UNIX αφού αυτό έπρεπε να μπορεί να συνεργάζεται με δύο ασύμβατες εκδόσεις UNIX. Την προσπάθεια συμβιβασμού των δύο UNIX και τη δημιουργία προτύπου ανέλαβε η Επιτροπή Προτύπων της ΙΕΕΕ, γνωστή ως POSIX (POS= Portable Operating System). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 12

Ιστορικά Στοιχεία UNIX (10) Προέκυψε το Λ/Σ UNIX προτύπου POSIX, παρόλα αυτά η προτυποποίηση δεν προχώρησε στο βαθμό που ήταν επιθυμητός και εξακολούθησε η ύπαρξη αρκετών εκδόσεων UNIX. Το σημαντικότερο πλεονέκτημα του Λ/Σ UNIX είναι ότι είναι "φορητό" ή αλλιώς "μεταφέρσιμο". Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 13

Ιστορικά Στοιχεία UNIX (11) Φορητότητα Προγράμματος: Η έννοια του φορητού ή μεταφέρσιμου Προγράμματος σημαίνει το Πρόγραμμα μπορεί να μεταφερθεί από Η/Υ σε Η/Υ και να τεθεί σε λειτουργία χωρίς καθόλου ή έστω με ελάχιστες τροποποιήσεις. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 14

Ιστορικά Στοιχεία UNIX (12) Φορητότητα Λ/Σ UNIX (1): Η έννοια του φορητού ή μεταφέρσιμου Λ/Σ μπορεί να διατυπωθεί και διαφορετικά. Επειδή το Λ/Σ "λειτουργεί" τον Η/Υ (ερχόμενο σε άμεση επικοινωνία με αυτόν), πρέπει να γνωρίζει όλα τα στοιχεία του Υλικού που ελέγχει. Όμως οι διαφορές στο Υλικό μεταξύ δύο Η/Υ είναι πολύ σημαντικές και οι πιθανότητες να μπορεί να μεταφερθεί το Λ/Σ από Η/Υ σε Η/Υ με λίγες μεταβολές είναι μάλλον απίθανη. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 15

Ιστορικά Στοιχεία UNIX (13) Φορητότητα Λ/Σ UNIX (2): Επομένως, ένα φορητό Λ/Σ μπορεί να μεταφέρεται από Η/Υ σε Η/Υ με τις "ελάχιστες δυνατές" αλλαγές. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 16

Γενεολογικό δέντρο UNIX

Ιστορικά Στοιχεία LINUX (1) Το Λ/Σ LINUX είναι ένα UNIX προτύπου POSIX. Πρόκειται για Λ/Σ για το οποίο δεν θεμελιώνονται εμπορικά δικαιώματα. Ως Λ/Σ αναπτύχθηκε για να λειτουργεί με Η/Υ που έχουν CPU αρχιτεκτονικής INTEL τύπου 80x86. Μέχρι να αναπτυχθεί το LINUX αυτοί οι Η/Υ θεωρούνταν κατάλληλοι μόνο για PC βασισμένα στα Λ/Σ της IBM και της Microsoft. Δημιουργήθηκε το 1991 από τον Φιλανδό Linus TORVALDS, ο οποίος έγραψε το πρόγραμμα Πυρήνα που απαιτούνταν. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 18

Ιστορικά Στοιχεία LINUX (2) Λόγω των ελεύθερων δικαιωμάτων του το LINUX αναπτύχθηκε ως αντιδάνειο και για Η/Υ και τις CPU τους, για τους οποίους υπήρχε ήδη κατάλληλο UNIX. Ως αποτέλεσμα το LINUX επέβαλλε στην ουσία το πρότυπο POSIX και πολύ ικανοποιητική φορητότητα. Το μερίδιό του στους Η/Υ απαιτήσεων, δηλαδή τους Υπερ-υπολογιστές, τα "clusters", τις "φάρμες", τους εξυπηρετητές και τους σταθμούς εργασίας είναι σήμερα (2015) από 35 έως 95% ανάλογα με την εφαρμογή. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 19

Ιστορικά Στοιχεία LINUX (3) Το μερίδιό του στα PC είναι πολύ μικρότερο και δύσκολα μετρήσιμο (αλλά από αυτούς τους Η/Υ ξεκίνησε!) Διατίθενται σήμερα (2015) πολλές εκδόσεις (distributions) LINUX, οι σημαντικότερες είναι: Red Hat Enterprise (κλώνοι: Fedora και CentOS), Debian (κλώνοι: Ubuntu και Mint), SUSE Linux Enterprise (κλώνος: opensuse), Mandriva (κλώνος: Mageia), Arch Linux, Slackware Linux, Puppy Linux, και το Android για κινητά Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 20

Ιστορικά Στοιχεία LINUX (4) Όλες οι διαθέσιμες εκδόσεις υπάρχουν τόσο για CPU της INTEL όσο και για CPU της AMD. Οι διαφορές μεταξύ των εκδόσεων βρίσκονται κυρίως στο πρόγραμμα Πυρήνα. Όλα τα υπόλοιπα απαραίτητα είναι σχεδόν όμοια και διαφέρουν μόνο στον οπτικό τρόπο αλληλεπίδρασης με τον χρήστη, τη μορφή δηλαδή του "παραθυρικού" περιβάλλοντος. Στο μάθημα αυτό ΔΕΝ θα ασχοληθούμε με τα "παραθυρικά" περιβάλλοντα LINUX, παρά ΜΟΝΟ με την αλληλεπίδραση χρήστη Η/Υ μέσω γραμμών εντολών (command line). Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 21

Πρόγραμμα "Φλοιός" (1) Κύρια Προγράμματα Λ/Σ UNIX, με σειρά απομακρυνόμενη από το Υλικό: 1.Σύστημα Αρχείων, πρόγραμμα Πυρήνα, Λογισμικό οδήγησης συσκευών 2.Πρόγραμμα Συστήματος "Φλοιός" 3.Άλλα Προγράμματα Συστήματος 4.Άλλα Προγράμματα Εφαρμογών 5.Άλλα Προγράμματα Χρήστη Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 22

Πρόγραμμα "Φλοιός" (2) Το Πρόγραμμα "Φλοιός" (shell) είναι αυτό που παρέχει στο χρήστη τις εντολές με τις οποίες μπορεί αυτός να επικοινωνήσει με το Λ/Σ και να καθοδηγήσει σε σημαντικό βαθμό τις Διεργασίες που επιθυμεί, ανάλογα με τα δικαιώματα εξουσίας που διαθέτει. Τις εντολές αυτές ο χρήστης πληκτρολογεί μία προς μία στο τερματικό του ή εναλλακτικά προετοιμάζει Αρχείο που περιέχει ένα σενάριο από τέτοιες εντολές (command script), το οποίο εκτελεί με κατάλληλο τρόπο. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 23

Πρόγραμμα "Φλοιός" (3) Κάθε μία από τις εντολές αυτές πρέπει να εκτελεσθεί πλήρως πριν ξεκινήσει η επόμενη ακριβώς στη σειρά. Για την "μετάφραση" των εντολών του Φλοιού προς το Λ/Σ και το Υλικό χρησιμοποιείται μεταφραστής τύπου Διερμηνευτή που είναι μέρος του Φλοιού. Γενικά, ένας Διερμηνευτής ασχολείται πάντα μόνο με τη μετάφραση μίας και μόνης εντολής. Όταν η εντολή αυτή εκτελεστεί πλήρως, ο Διερμηνευτής θα μεταφράσει την επόμενη. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 24

Πρόγραμμα "Φλοιός" (4) Ως συνέπεια η μετάφραση και η εκτέλεση μέσω Διερμηνευτή είναι αργή ΑΛΛΑ καταναλώνει λίγη μνήμη. (Από την άλλη γενικά, ένας Μεταγλωττιστής ασχολείται με τη μετάφραση όλων των εντολών ενός προγράμματος, δημιουργώντας στην ουσία στη θέση του ένα άλλο πρόγραμμα σε Γλώσσα πιο κατανοητή για το Υλικό. Η μετάφραση και η εκτέλεση μέσω Μεταγλωττιστή είναι πολύ γρηγορότερη ΑΛΛΑ καταναλώνει πολύ περισσότερη μνήμη.) Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 25

Πρόγραμμα "Φλοιός" (5) Τα πιο γνωστά Προγράμματα Φλοιοί είναι ο Φλοιός Bourne (Bourne shell) και ο Φλοιός C (c shell). Οι Η/Υ με Λ/Σ UNIX ή LINUX επιτρέπουν στο χρήστη να χρησιμοποιεί περισσότερους από έναν Φλοιό. Ο πλέον δημοφιλής σήμερα (2015) είναι ο Φλοιός Bourne στην έκδοσή του "Bourne Again SΗell" (ή bash) και σε αυτόν θα εστιάσουμε. Για το χρήστη του Λ/Σ που γνωρίζει τις βασικές εντολές ενός Φλοιού, οι γνώσεις αυτές είναι άμεσα εφαρμόσιμες και στους άλλους Φλοιούς. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 26

Πρόγραμμα "Φλοιός" (6) Ο Φλοιός δημιουργεί το σχήμα επικοινωνίας: Χρήστης Φλοιός UNIX (LINUX) H λειτουργία του παραπάνω σχήματος επιτρέπει να ξεκινήσει μια Διεργασία, κατόπιν εντολής του χρήστη, με ενδιάμεσο το Φλοιό. Ο Φλοιός αναλαμβάνει να θέτει διαρκώς στη διάθεση του χρήστη την ένδειξη διαθεσιμότητας ή αλλιώς την ένδειξη αναμονής εντολής ή αλλιώς το σύμβολο προτροπής (prompt), το γνωστό χαρακτήρα $ (αν bash) ή % (αν c shell) στην οθόνη του τερματικού του χρήστη. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 27

Πρόγραμμα "Φλοιός" (7) Όταν ο χρήστης δώσει την εντολή που επιθυμεί, αυτή διαβάζεται από το Φλοιό, ο οποίος αναλαμβάνει να μεταφράσει την εντολή μέσω του Διερμηνευτή του, σε μία ή περισσότερες εντολές που είναι κατανοητές από το UNIX. Πρακτικά, ο Φλοιός λειτουργεί ιδεατά, δηλαδή ο χρήστης δεν αντιλαμβάνεται (και, σύμφωνα με την ιδέα της ιδεατής μηχανής, δε θα έπρεπε να αντιλαμβάνεται) την ενδιάμεση παρουσία του Φλοιού. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 28

Πρόγραμμα "Φλοιός" (8) Παράδειγμα (1): Η εντολή date, με την οποία ο χρήστης ζητά να μάθει την ημερομηνία και την ώρα από τον Η/Υ κάνει κατανοητή τη διακριτική παρέμβαση του Φλοιού μεταξύ χρήστη και UNIX. Ο χρήστης, στην ένδειξη διαθεσιμότητας $ υποβάλλει την εντολή $ date και λαμβάνει την επιθυμητή απάντηση-πληροφορία, λ.χ. στη μορφή Thu Apr 27 15:39:50 EET_DST 2000 Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 29

Πρόγραμμα "Φλοιός" (9) Παράδειγμα (2): Χωρίς την ανάμιξη του χρήστη, έστω και σ αυτή την απλούστατη και ευκολομνημόνευτη εντολή, ο φλοιός Δημιουργεί την αντίστοιχη Διεργασία. Η Διεργασία που σχηματίστηκε για την εκτέλεση της εντολής date ολοκληρώθηκε και έπαψε να υφίσταται μόλις ο Η/Υ έδωσε την απάντησή του στο χρήστη. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 30

Πρόγραμμα "Φλοιός" (10) Μία εντολή διά του Φλοιού αντιστοιχεί σε ένα απλό (όπως η date) ή πολυσύνθετο (όπως η telnet) Πρόγραμμα Συστήματος ή Πρόγραμμα Εφαρμογής και βεβαίως σε μία ή περισσότερες γονικές & θυγατρικές Διεργασίες. Ένα "σενάριο" δια του Φλοιού (command script), σηματοδοτεί την διαδοχική σειριακή εκτέλεση πολλών εντολών δια του Φλοιού. Υπό την (ευρεία) αυτή έννοια ένα "σενάριο" δια του Φλοιού, μπορεί να νοείται ως Πρόγραμμα γραμμένο στην Γλώσσα Προγραμματισμού "Φλοιός". Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 31

Διασυνδέσεις στο UNIX Διασύνδεση σε επίπεδο χρήστη Διασύνδεση σε επίπεδο βιβλιοθήκης Διασύνδεση σε επίπεδο κλήσης συστήματος Χρήστες Βοηθητικά προγράμματα (φλοιοί, κειμενγράφοι, κ.λ.π.) Βασική Βιβλιοθήκη (open, close, read, write, fork, κ.λ.π.) ΛΣ UNIX (διαχείριση διεργασιών, μνήμης, file system, κ.λ.π) Υλικό (CPU, RAM, HDD, Terminals, κ.λ.π) Κατάσταση Χρήστη Κατάστασ η Πυρήνα

Διεργασίες (πάλι) (1) Δίοδοι επικοινωνίας (streams) (1): Μία Διεργασία είναι συνδεδεμένη, και με τον ορισμό διόδων (streams) για την ανταλλαγή πληροφορίας και μηνυμάτων με το Εκτελούμενο Πρόγραμμα. Οι δίοδοι επικοινωνίας ορίζονται γενικά με δύο τρόπους: ØΗ ίδια η Διεργασία καθορίζει αυστηρά τις επιθυμητές διόδους ØΟι δίοδοι δεν ορίζονται από τη Διεργασία, αλλά χρησιμοποιούνται οι προφανείς δίοδοι (default streams) του συστήματος. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 33

Διεργασίες (πάλι) (2) Δίοδοι επικοινωνίας (streams) (2): Η καταγραφή των αναγκών που παρουσιάζονται κατά την εκτέλεση μιας Διεργασίας καθορίζουν και τις διόδους που πρέπει να έχει. Έτσι, αυτές μπορεί να είναι: η είσοδος (input): Με τη δίοδο εισόδου, η Διεργασία τροφοδοτείται με τα δεδομένα που θα επεξεργαστεί μέσω του Εκτελούμενου Προγράμματος. η έξοδος (output): Με τη δίοδο εξόδου, η Διεργασία επιστρέφει και θέτει στη διάθεση του χρήστη τα αποτελέσματα του Εκτελούμενου Προγράμματος. το σφάλμα (error) Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 34

Διεργασίες (πάλι) (3) Δίοδοι επικοινωνίας (streams) (3): Με τη δίοδο σφάλματος η Διεργασία ειδοποιεί για ενδεχόμενα σφάλματα που παρουσιάστηκαν κατά την εκτέλεση της. Η δίοδος σφάλματος υπάρχει για να διαχωρίζονται τα μηνύματα που επιστρέφει η Διεργασία για ενδεχόμενα σφάλματα εκτέλεσης από τα ουσιαστικά αποτελέσματα της Διεργασίας που οδεύουν προς τη δίοδο εξόδου όταν η Διεργασία εκτελεσθεί κανονικά. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 35

Διεργασίες (πάλι) (4) Δίοδοι επικοινωνίας (streams) (4): Αν δεν έχει ορισθεί διαφορετικά, μια Διεργασία στο UNIX (LINUX) θα χρησιμοποιήσει την τυπική είσοδο (standard input ή stdin), την τυπική έξοδο (standard output ή stdout) και την τυπική έξοδο σφάλματος (standard error ή stder). Οι τυπικές αυτές δίοδοι, ταυτίζονται αντίστοιχα με το πληκτρολόγιο (είσοδος) και την οθόνη (έξοδος και σφάλμα) του τερματικού. Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού 36