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

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

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

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

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

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

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

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

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

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

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

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

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

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

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

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

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

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

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

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

Μαλούτα Θεανώ Σελίδα 1

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

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

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

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

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

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

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

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

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

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

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

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

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

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

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

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

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

6. Εισαγωγή στον προγραµµατισµό

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

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

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

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

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

Α. Ερωτήσεις Ανάπτυξης

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

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

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Προγραμματισμός Υπολογιστών

Εικονική Μνήμη (1/2)

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

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Θεωρία Προγραμματισμού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

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

Προγραµµατισµός 2 The shell

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

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

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

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΠΡΟΓΡΑΜΜΑ ΠΑΙΔΑΓΩΓΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ 2 η ΕΡΓΑΣΙΑ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

Transcript:

Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος Ιωάννης Σεπτέμβριος 2005 - Άρτα

Τι είναι ένα Λειτουργικό Σύστημα; Ένα Λειτουργικό Σύστημα είναι ένα πρόγραμμα το οποίο ενεργεί ανάμεσα από το χρήστη (του υπολογιστή) και το hardware. Ο σκοπός του Λειτουργικού Συστήματος είναι να παρέχει το περιβάλλον στο οποίο ο χρήστης θα μπορεί να εκτελεί προγράμματα με ένα βολικό και αποδοτικό τρόπο. Επίσης σκοπός του Λ.Σ. είναι να καθορίζει τον τρόπο λειτουργίας του υπολογιστικού συστήματος, ελέγχοντας και συντονίζοντας τη χρήση των μονάδων του από τα διάφορα προγράμματα εφαρμογής των χρηστών.

Υπηρεσίες Λειτουργικών Συστημάτων Διαχείριση Διεργασιών - Δημιουργία και καταστολή διεργασιών - Επικοινωνία και συγχρονισμός διεργασιών Διαχείριση Μνήμης - Διαχείριση μνήμης ανάμεσα σε πολλαπλές διεργασίες - Ανάθεση μνήμης κατόπιν αίτησης από μία διεργασία Διαχείριση Αρχείων - Δημιουργία και επεξεργασία αρχείων και καταλόγων Διαχείριση Συστήματος Εισόδου/Εξόδου - Διαχείριση συσκευών εισόδου εξόδου Διαχείριση Συσκευών Δευτερεύουσας Αποθήκευσης - Διαχείριση ελεύθερου χώρου σε μονάδες δίσκων Δικτυακή Υποστήριξη - Παροχή TCP/IP και σχετικών πρωτοκόλλων (HTTP,FTP,SSL) Προστασία και Ασφάλεια - Παροχή πιστοποίησης - Προστασία από κακόβουλες επιθέσεις μέσω δικτύου.

Τι είναι μία διεργασία; Μία διεργασία είναι ένα πρόγραμμα σε εκτέλεση. Μία διεργασία χρειάζεται συγκεκριμένους πόρους από το σύστημα για να ολοκληρωθεί. Υπολογιστικούς πόρους όπως: χρόνο από τον επεξεργαστή (CPU( CPU), μνήμη, αρχεία και είσοδο- έξοδο συσκευών. Οι πόροι αυτοί δεσμεύονται για την διεργασία από το ΛΣ είτε κατά την δημιουργία της είτε κατά την εκτέλεσή της.

Μπλοκ ελέγχου διεργασίας Μπλοκ Ελέγχου Διεργασίας (Process Control Block) Αποτελεί δομή δεδομένων του Λειτουργικού Συστήματος. Αναπαριστά κάθε διεργασία. Δείκτης Κατάσταση διεργασίας Αριθμός διεργασίας Μετρητής προγράμματος Καταχωρητές Όρια μνήμης Λίστα ανοιχτών αρχείων / συσκευών...

Κλήσεις Συστήματος Για να επικοινωνήσει ένα πρόγραμμα χρήστη με το Λειτουργικό Σύστημα χρησιμοποιεί τις διάφορες κλήσεις συστήματος (System( Calls) ) τις οποίες παρέχει το ίδιο το Λειτουργικό Σύστημα. Το σύνολο όλων των κλήσεων συστήματος αποτελούν το OS API.

Οι κλήσεις συστήματος fork/exec Στο Λ.Σ. Unix αλλά και στο Linux δημιουργούμε μία νέα διεργασία με την κλήση συστήματος fork. Η νέα διεργασία που θα δημιουργηθεί θα είναι ένα αντίγραφο της μητρικής διεργασίας. Κάθε διεργασία έχει τον δικό της περιγραφέα διεργασίας και το δικό της ξεχωριστό χώρο διευθύνσεων. Για να φορτώσει νέο κώδικα στην μνήμη η νέα διεργασία καλεί την κλήση συστήματος execlp.

Τι είναι το κέλυφος; Οι εφαρμογές επικοινωνούν με το Λειτουργικό Σύστημα μέσω κλήσεων συστήματος Οι χρήστες επικοινωνούν με το Λειτουργικό Σύστημα μέσω ενός κελύφους εργασίας (shell( shell) ή μιας διεπαφής του χρήστη με χρήση γραφικών (GUI)

Τι είναι το κέλυφος (συνέχεια) Ο διερμηνέας γραμμής εντολών (κέλυφος εργασίας) είναι μία εφαρμογή γραμμής εντολών. Μέσω του κελύφους, ο χρήστης μπορεί να εκτελέσει προγράμματα δίνοντας στην γραμμή εντολών το όνομα του προγράμματος.

Ορισμένα κελύφη του Unix/Linux Όνομα Shell sh (Bourne) Παρατηρήσεις Είναι το πρώτο κέλυφος που δημιουργήθηκε από τις πρώτες εκδόσεις του Unix. bash Το bash (Bourne Again Shell) είναι το πιο ευρέως χρησιμοποιούμενο (και πιο δυναμικό) κέλυφος. Είναι συμβατό με το Bourne Shell. Το bash είναι το εξ ορισμού κέλυφος σε αρκετές εκδόσεις του Linux. ksh, pdksh csh, tcsh, zsh Το κέλυφος Korn καιτοδωρεάναδερφικότουshell (pdksh) είναι γραμμένα από τον David Korn και είναι το εξ ορισμού κέλυφος σε αρκετές εμπορικές εκδόσεις του Unix. Το κέλυφος C αρχικά δημιουργήθηκε από τον Bill Joy στο Μπέρκλεϊ. Το C Shell και τα παράγωγά του (tcsh, zsh) είναι τα πιο διαδεδομένα κελύφη μετά το κέλυφος Korn.

Ανάλυση της γραμμής εντολών Όταν το κέλυφος διαβάσει μία εντολή θα πραγματοποιήσει λεκτική ανάλυση ώστε να βρει τα λεκτικά σύμβολα της εντολής και ύστερα συντακτική ανάλυση ώστε να διαπιστώσει την συντακτική δομή της εντολής.

Το κέλυφος ως διερμηνευτής Ένα κέλυφος (shell( command interpreter) ) ενός Λειτουργικού Συστήματος είναι μία κατηγορία διερμηνευτή ο οποίος πολλές φορές παρέχει και εργαλεία προγραμματισμού. Ένας διερμηνευτής δέχεται ένα πηγαίο κώδικα ενός προγράμματος μιας συγκεκριμένης γλώσσας προγραμματισμού και είτε το εκτελεί αμέσως, είτε το τοποθετεί σε μία στοίβα και το εκτελεί από εκεί.

Μεταφραστές - Διερμηνευτές Ο μεταγλωττιστής (compiler) μεταφράζει ένα πρόγραμμα γραμμένο σε μία γλώσσα προορισμού σε μία γλώσσα χαμηλού επιπέδου. Το μεταφρασμένο πρόγραμμα συνδέεται με τις κατάλληλες βιβλιοθήκες και παράγεται το εκτελέσιμο αρχείο. Ο διερμηνευτής (interpreter)) από την άλλη, δεν θα κάνει κανενός είδους μετάφραση. Θα αναλύσει τον πηγαίο κώδικα και ταυτόχρονα θα ξεκινήσει την εκτέλεση του προγράμματος χωρίς να παράγει κανένα εκτελέσιμο αρχείο.

Φάσεις μεταγλώττισης Τα στάδια στα οποία χωρίζεται ένας μεταγλωττιστής είναι δύο. Η ανάλυση και η σύνθεση.. Στην ανάλυση ο πηγαίος κώδικας του προγράμματος αναλύεται ώστε να διαπιστωθεί η δομή του και η σημασιολογία του (semantics).. Στο στάδιο της σύνθεσης παράγεται ο κώδικας μηχανής.

Φάσεις μεταγλώττισης (συνέχεια) Ένας διερμηνευτής αποτελείται μόνο από το στάδιο της ανάλυσης. Το στάδιο της σύνθεσης λείπει από τους διερμηνευτές γιατί δεν παράγουνε κανένα εκτελέσιμο αρχείο. Άρα ένας διερμηνευτής εκτελεί μόνο: Λεκτική ανάλυση Συντακτική ανάλυση Σημασιολογική ανάλυση

Λεκτική ανάλυση Η λεκτική ανάλυση (lexical( analysis) ) είναι η διαδικασία στην οποία αναγνωρίζονται τα λεκτικά σύμβολα (tokens) μιας γλώσσας προγραμματισμού. Ένα λεκτικό σύμβολο είναι ένα στοιχείο της γλώσσας προγραμματισμού. Μπορεί να αποτελείται από πολλούς χαρακτήρες. Η λεκτική ανάλυση πραγματοποιεί μία σάρωση (scanning) του πηγαίου κώδικα για να ανακαλύψει τα λεκτικά σύμβολα.

Συντακτική ανάλυση Κάθε γλώσσα προγραμματισμού διέπεται από κανόνες οι οποίοι καθορίζουν την συντακτική δομή ενός σωστά σχηματισμένου προγράμματος. Η λειτουργία της συντακτικής ανάλυσης (syntactic( syntactic analysis) είναι να προσδιορίσει την συντακτική δομή ενός προγράμματος. Κατασκευή μίας ενδιάμεσης αναπαράστασης του πηγαίου κώδικα η οποία θα περιγράφει την συντακτική δομή του. συνήθως με μία δομή δεδομένων δέντρου (syntax( tree ή parse tree) δέντρο αφηρημένης σύνταξης (Abstract( Syntax Tree AST)

Σημασιολογική ανάλυση Κάθε συντακτικό δέντρο που παράγεται δεν είναι απαραίτητο να είναι και έγκυρο πρόγραμμα της γλώσσας προγραμματισμού. Η δουλειά της σημασιολογικής ανάλυσης (semantic analysis) είναι να ελέγξει αν ο πηγαίος κώδικας συμμορφώνεται με τους σημασιολογικούς περιορισμούς της γλώσσας. Οι περιορισμοί αυτοί είναι: Κανόνες εμβέλειας (scope rules) Κανόνες τύπων (type rules)

Βασική λειτουργία ενός κελύφους Διαβάζει τα αρχεία εκκίνησης Εμφανίζει μία προτροπή (prompt)) στον χρήστη. Συνήθως το $ ή το % για τον απλό χρήστη και το # για τον χρήστη root. Δέχεται μία εντολή από τον χρήστη μέσω της γραμμής εντολών.

Βασική λειτουργία ενός κελύφους (συνέχεια) Η σύνταξη είναι συνήθως της μορφής: <όνομα εντολής/προγράμματος> > <παράμετρος> <παράμετρος< παράμετρος> Το πρώτο λεκτικό σύμβολο της εντολής μπορεί να είναι: το όνομα του αρχείου που περιέχει το εκτελέσιμο πρόγραμμα (εξωτερική( εντολή). το όνομα μιας εσωτερικής εντολής του κελύφους.

Βασική λειτουργία ενός κελύφους (συνέχεια) Εξωτερική εντολή: Δημιουργεί μία νέα διεργασία και εκτελεί το εξωτερικό πρόγραμμα Εσωτερική εντολή: Εκτελεί κατ ευθείαν την εντολή

Εξωτερική εντολή Έρευνα του αρχείου στους καταλόγους που έχουν καθοριστεί την μεταβλητή περιβάλλοντος PATH. Αν εντοπιστεί εκτελείται, αλλιώς μήνυμα λάθους. Μπορεί να εφαρμοστεί: Ανακατεύθυνση της εισόδου/εξόδου (redirection( redirection) Διοχέτευση της εξόδου (pipes) Χρήση ψευδώνυμου (alias)

Εσωτερική εντολή (built-in in command) Είναι υλοποιημένες στο ίδιο το κέλυφος. Μπορεί να είναι ενσωματωμένη στο κέλυφος γιατί: η λειτουργία της έχει άμεση σχέση με τη λειτουργία του κελύφους (πχ jobs, list). είναι πολύ απλή στην υλοποίησή της και χρησιμοποιείται πολύ συχνά από τους χρήστες (πχ cd) Ορισμένες ενσωματωμένες εντολές είναι: cd,, echo, list, alias, unalias,, jobs, fg, bg κλπ

Shell Programming Το κέλυφος χρησιμοποιεί μία διερμηνευόμενη γλώσσα Ο χρήστης μπορεί να δημιουργήσει προγράμματα χρησιμοποιώντας την γλώσσα του κελύφους το κέλυφος μπορεί να εκτελέσει τα προγράμματα αυτά χωρίς να τα μεταγλωττίσει. Τα προγράμματα αυτά ονομάζονται σενάρια κελύφους (shell scripts).

Μεταβλητές περιβάλλοντος Το περιβάλλον του Unix είναι μία λίστα με μεταβλητές και αντίστοιχες τιμές, τις οποίες χρησιμοποιούν οι θυγατρικές διεργασίες. Οι εγγραφές έχουν την μορφή: varname=value value Οι μεταβλητές αυτές ονομάζονται μεταβλητές περιβάλλοντος (environmental variables). Για να προσπελάσουμε την τιμή μιας μεταβλητής χρησιμοποιούμε το σύμβολο $.

Το πειραματικό κέλυφος wish Το πειραματικό κέλυφος wish (windows interactive shell) διαθέτει: Διαχείριση διεργασιών Διαχείριση μεταβλητών περιβάλλοντος Χρήση ψευδώνυμων Σενάρια κελύφους (χωρίς προγραμματιστικές δομές) Ανακατεύθυνση εισόδου/εξόδου Διοχέτευση εξόδου Στοίβα καταλόγου Ιστορικό εντολών Αυτόματη συμπλήρωση του ονόματος των αρχείων Αρχείο εκκίνησης Γραφικό περιβάλλον

Διαφορές του wish με άλλα γνωστά κελύφη bourne csh ksh bash tcsh zsh wish Διαχείριση διεργασιών - ٧ ٧ ٧ ٧ ٧ ٧ Ψευδώνυμα (aliases) - ٧ ٧ ٧ ٧ ٧ ٧ Συναρτήσεις κελύφους ٧-٧ ٧-٧ - Δομές προγραμματισμού sh csh sh sh csh sh - Σενάρια κελύφους ٧ ٧ ٧ ٧ ٧ ٧ ٧ Ανακατεύθυνση της εισόδου/εξόδου (redirection) ٧-٧ ٧-٧ ٧ Διοχέτευση εξόδου (pipes) ٧ ٧ ٧ ٧ ٧ ٧ ٧ Στοίβα καταλόγων - ٧ ٧ ٧ ٧ ٧ ٧ Ιστορικό εντολών - ٧ ٧ ٧ ٧ ٧ ٧ Επεξεργασία της γραμμής εντολών - - ٧ ٧ ٧ ٧ ٧ Αυτόματη συμπλήρωση του ονόματος των αρχείων - ٧ ٧ ٧ ٧ ٧ ٧ Αυτόματη συμπλήρωση του ονόματος του χρήστη - ٧ ٧ ٧ ٧ ٧ - Αυτόματη συμπλήρωση του ιστορικού των εντολών - - - ٧ ٧ ٧ -

Διαφορές (συνέχεια) Ενσωματομένη δυνατότητα αριθμιτικών υπολογισμών bourne csh ksh bash tcsh zsh wish - ٧ ٧ ٧ ٧ ٧ - Προσωποποίηση της προτροπής - - ٧ ٧ ٧ ٧ ٧ Διατήθεται ελεύθερα - - - ٧ ٧ ٧ ٧ Ελέγχει το Mailbox - ٧ ٧ ٧ ٧ ٧ - Διαθέτει αρχείο εκκίνησης ٧ ٧ ٧ ٧ ٧ ٧ ٧ Μπορεί να αγνοήσει το αρχείο εκκίνησης - ٧-٧ - ٧ - Μπορεί να καθοριστεί το όνομα του αρχείου εκκίνησης - - ٧ ٧ - - - Καταγραφή μεταβλητών - ٧ ٧-٧ ٧ - Τοπικές μεταβλητές - - ٧ ٧-٧ - Γραφικό περιβάλλον - - - - - - ٧ Συμβατό με Cygwin ٧ ٧ ٧ ٧ ٧ ٧ ٧

Το πειραματικό κέλυφος wish (συνέχεια)

Η γραφική έκδοση ncurses του κελύφους wish

Ευχαριστώ πολύ