belosback.jpg (5806 bytes)

Η δομή του UNIX

To UNIX αποτελείται από τα εξής software εξαρτήματα :

Το Κernel
είναι ο πυρήνας του Συστήματος που ελέγχει το hardware και εκτελεί μια σειρά από βασικές λειτουργίες "low level".Tα άλλα συστατικά μέρη του UNIX καθώς και προγράμματα των χρηστών απευθύνονται στο Kernel για να εκτελέσει εντολές προς το σύστημα (system calls).

To SHELL (ειδικό utility)
είναι ο εκτελεστής εντολών προς το UNIX, command interpreter

Tα Utility Programs
είναι commands που υποστηρίζουν μια σειρά δουλειές όπως την αντιγραφή αρχείων,text editing,calculations, αναπτυξη λογισμικού κ.α.

Τα User Programs
είναι τα προγράμματα που αναπτύσουν οι χρήστες από την στιγμή που πάρουν θέση μέσα στο UNIX τότε δεν ξεχωρίζουν από το υπόλοιπο UNIX ή τις εντολές προς αυτό.

Το UNIX Kernel

Eκτελεί βασικές λειτουργίες του Συστήματος, τέτοιες που λέμε ότι είναι "κοντά" στη μηχανή ή αλλιώς λέμε ότι είναι low level.Aυτές οι λειτουργίες δημιουργούν το UNIX environment πάνω σε συγκεκριμένο Hardware.To πιο "κοντινό" τμήμα του βρίσκεται σε άμεση επαφή με το Hardware και έτσι "κρύβει" από τα άλλα εξαρτήματα του UNIX τη μηχανή καθιστώντας τα ανεξάρτητα της.Τι κάνει το ΚERNEL περιγράφεται στο επόμενο σχήμα και αποτελείται από τα εξής :

Kernel.jpg (12721 bytes)

1. Management και Ασφάλεια Αρχείων.Το Κernel υλοποιεί το File System, oργανώνει και ελέγχει το mass storage (Δίσκοι,ταινίες) του Συστήματος, επιβάλει κάποια μέτρα Security στην προσπέλαση προς τα Αρχεία.

2. Εκτελεί τις εντολές για I/O, μεταφέροντας data μεταξύ I/O devices.

3. Process Scheduling & Management.H λειτουργία αυτή του Kernel σχετίζεται με το πρόβλημα της κατανομής του χρόνου CPU μεταξύ διαδικασιών, βρίσκονται σε ανταγωνισμό.Με βάση έναν αλγόριθμο (δίνει σε κάθε process έναν αριθμό "προτεραιότητας") το σύστημα αποφασίζει ποιά διαδικασία θα έχει τον CPU.Ακόμα σχετίζεται με την επικοινωνία μεταξύ των διαδικασιών.

4. Μemory management.To έργο αυτής της Λειτουργίας του Kernel είναι η τοποθέτηση και μεταφορά των διαδικασιών μεταξύ Μνήμης και Δίσκου.Υπάρχουν διάφορες τεχνικές πάνω στις οποίες στηρίζεται αυτή η λειτουργία :
α. process swapping (Aναστολή διαδικασιών)
β. Virtual Memory. Eδώ δεν χρειάζεται ολόκληρη η process να είναι φορτωμένη στη Μνήμη, όπως στη τεχνική "α", αλλά μόνο τα τμήματα της που άμεσα χρειάζονται για την εκτέλεση της.

5. Η τεχνική interrupts και error handling.

6. Λογιστικά του Συστήματος.

7. Στο εσωτερικό ή πιο "χαμηλό" επίπεδο το Kernel "ακουμπάει" το Υλικό της μηχανής.Αυτό το εξάρτημα του Kernel πρέπει να είναι προσαρμοσμένο στο συγκεκριμένο hardware, πχ1.το κάθε Σύστημα (Ηware + Sware) έχει τη δικιά του τεχνική για memory management, πχ2. τα εξαρτήματα που έχουν άμεση επαφή με τα Ι/Ο devices, αυτά που ονομάζονται Drivers, όλα αυτά έχουν χαρακτηριστικά σε εξάρτηση με το Υλικό και έτσι πρέπει να προσαρμοστούν από το σχετικό μέρος του Kernel.

O όρος "porting" αφορά την προσαρμογή εξαρτημάτων του Kernel στο Hardware.

System call interface

Τα διάφορα εργαλεία (utilities) του UNIX και τα προγράμματα εφαρμογών απευθύνονται στο Kernel για εκτέλεση εντολών προς το Σύστημα (system calls), πχ. όταν το πρόγραμμα λογιστικής χρειάζεται στην είσοδο του μια γραμμή data από ένα τερματικό, τότε απευθύνεται στο Kernel (τμήμα 2) έχουμε δραστηριοποίηση του 2 που παίρνει τη γραμμή data πχ. "αβγδεζηθικλμνξοπρστυφχψω" και την "περνάει" στο πρόγραμμα.Ο μηχανισμός των system calls είναι το ενδιάμεσο Kernel <----> προγραμμάτων εφαρμογών.Έτσι οι εντολές προς το Σύστημα αποτελούν το στάνταρ interface του UNIX.Έτσι η μεταφορά (portability, transfer) των προγραμμάτων πάνω στα UNIX γίνεται ανεξάρτητη του Hardware.

To SHELL (δηλαδή το σύστημα διαλόγου με το UNIX)

To παρακάτω σχήμα δείχνει τη λειτουργία του SHELL

programmaxristi.jpg (17408 bytes)

Χρησιμοποιείται πιο συχνά από κάθε άλλο εξάρτημα του UNIX, χειρίζεται το διάλογο μεταξύ Χρήστη και Συστήματος.Αυτό γίνεται με την ερμηνεία των εντολών προς το Σύστημα και την δραστηριοποίηση για την εκτέλεση τους.Είναι δηλαδή ένας command interprefer.To διάγραμμα ροής που ακολουθεί δείχνει τα βήματα του SHELL.Το συνταχτικό των εντολών είναι :

Όνομα Εντολής          Options     Αrguments
πχ.   ls                              -l                  Aρχείου

δίνει στο τερματικό τον κατάλογο των files, δηλαδή των ονομάτων τους, που περιέχει το file "Αρχείου"

σημείωση : Υπάρχει στο UNIX ειδική κατηγορία αρχείων που λέγονται directory (=κατάλογος) και περιέχουν ονόματα και άλλες λεπτομέρειες αρχείων.

Οθόνη Τερματικού

othonitermatikou.jpg (36230 bytes)

Ένα από τα utility του UNIX είναι το ίδιο το SHELL (είναι και αυτό ένα πρόγραμμα) η εντολή sh.

Πχ. Έστω αρχείο ΔΟΚΙΜΗ με περιεχόμενο :

ΔΟΚΙΜΗ

1. os source                   (κάλεσε τον assembler πάνω στο source)
2. cp a.out testprog      (αντέγραψε το αποτέλεσμα του στο αρχείο testprog)
3. testprog                      (εκτέλεσε το object file testprog)

H εντολή 4. sh<ΔΟΚΙΜΗ κατευθύνει την είσοδο (input) του SHELL πάνω στο αρχείο (command file) ΔΟΚΙΜΗ αντί να είναι πάνω στο τερματικό.

'Ετσι                 

panostotermatiko.jpg (5057 bytes)

Σημείωση: Το ρόλο του χαρακτήρα " < " ή " > " σ' αυτή την περίπτωση

Άλλα προγράμματα στο ρόλο του

Eκτός του διαλόγου που επιβάλει το SHELL στο χρήστη το UNIX παρέχει τα μέσα για τροποποίηση του, πχ.ορισμένες κατηγορίες χρηστών να "βλέπουν" μόνο υποσύνολο του Συστήματος, όπως κάποιο παιχνίδι ή τον editor (εντολή ed).

H διαδικασία που χειρίζεται τα login αφού κάνεις έλεγχο του password κ.τ.λ. καλεί το SHELL.Mε τροποποίηση του command file που σχετίζεται με αυτή την διαδικασία επιτυγχάνεται ο παραπάνω περιορισμός, δηλαδή αντί του sh βάζουμε ed.

Αρχειοterminalcontrolerprocess

xειρισμός              login / logout / file system update κ.τ.λ.
έλεγχος                user name        user password
      :
      :
    ed
     
Kύρια χαρακτηριστικά του SHELL

- Interactive programming (επικοινωνία με το UNIX έχει την μορφή διαλόγου)

- background processing για χρονοβόρα tasks

- input/output redirection (κατεύθυνση εσόδων / εξόδων)

- pipes * (δυνατότητα συνδιασμού προγραμμάτων)

- command files (μια σειρά εντολών πχ. ed,cp,sh,date,ls,cd κ.α. αποθηκεύονται από το χρήστη σ'ένα αρχείο και μπορούν να εκτελεστούν σαν μια εντολή)

- το SHELL σαν γλώσσα προγραμματισμού (με if,do,while,variables)

* Pipes : Eίναι το μέσο επικοινωνίας διαδικασιών (process communication).Όταν data χρειάζεται να περάσει από process σε process.Στην ουσία είναι ένα αρχείο πάνω στο οποίο γράφουν ή διαβάζουν οι διαδικασίες σε επικοινωνία.

πχ.
      sort αριθμός | βρες Λογάριθμότους

Η παραπάνω εντολή δημιουργεί 2 process,το πρώτο βάζει αριθμούς σε διάταξη, η δεύτερη βρίσκει το λογάριθμο τους.

σημείωση: το ρόλο του χαρακτήρα " 1 "


belosback.jpg (5806 bytes)