2. 1. Τι είναι το Λειτουργικό Σύστημα
Λειτουργικό Σύστημα είναι ένα πρόγραμμα (ή μια συλλογή προγραμμάτων)
που ελέγχει την ισχύ και διαχειρίζεται την πολυπλοκότητα του υπολογιστικού
υλικού. Το Λειτουργικό Σύστημα διευκολύνει τη δημιουργία και εκτέλεση
άλλων προγραμμάτων, που ονομάζονται εφαρμογές (applications), για
λογαριασμό του χρήστη. Αυτό το κάνει ελέγχοντας τους παρακάτω πόρους
του συστήματος:
Κεντρική Μονάδα Επεξεργασίας (CPU)
Κύρια Μνήμη
Δευτερεύουσα Μνήμη (Μέσα αποθήκευσης)
Άλλες περιφερειακές συσκευές
Ένα Λειτουργικό Σύστημα παρέχει ένα σύνολο βασικών υπηρεσιών που
χειρίζονται τις πολύπλοκες λεπτομέρειες του προγραμματισμού εργασιών, της
φόρτωσης προγραμμάτων στη μνήμη και της εκτέλεσης τους, της ανάγνωσης
και εγγραφής δεδομένων, της παροχής ασφάλειας, της παρακολούθησης της
χρήσης των πόρων και της επικοινωνίας με άλλα συστήματα και
απομακρυσμένες συσκευές. Η Διασύνδεση Χρήστη (user interface) είναι εκείνο
το τμήμα του Λειτουργικού Συστήματος που βλέπουν οι χρήστες του
συστήματος του υπολογιστή.
Δηλαδή με άλλα λόγια το Λειτουργικό Σύστημα είναι ένα ή περισσότερα
προγράμματα που επιβλέπουν τη χρήση του υλικού του υπολογιστή.
Ειδικότερα, επιτρέπει την εκτέλεση προγραμμάτων, την αποθήκευση
πληροφοριών κλπ. Κάθε φορά που εκκινεί ένας υπολογιστής το λειτουργικό
σύστημα είναι το πρώτο πρόγραμμα που εκτελείτε και επιτρέπει την
περαιτέρω χρησιμοποίηση του υπολογιστή. Το Ms-Dos, το UNIX, τα Windows
είναι κάποια παραδείγματα Λειτουργικών Συστημάτων.
Η δομή ενός λειτουργικού συστήματος παρουσιάζεται στον παρακάτω
πίνακα:
Διερμηνευτής Εντολών (Φλοιός)
Λειτουργικό Σύστημα Σύστημα Αρχείων
Πυρήνας
2. Διεργασίες/ Κλήσεις Συστήματος
Το Λειτουργικό Σύστημα μας προσφέρει ένα σύνολο «εκτεταμένων
εντολών» (extended instructions) μέσω του οποίου επιτυγχάνεται η
επικοινωνία με τα προγράμματα του χρήστη. Αυτές οι συγκεκριμένες εντολές
είναι γνωστές ως «Κλήσεις Συστήματος» (system calls). Οι κλήσεις
συστήματος είναι αυτές που δημιουργούν, καταστρέφουν και χρησιμοποιούν
διάφορα κομμάτια του λογισμικού που μπορεί να διαχειρίζεται το λειτουργικό
σύστημα. Οι πιο σημαντικές από αυτές είναι οι Διεργασίες και τα Αρχεία.
Ένα πρόγραμμα που εκτελείται ονομάζεται Διεργασία.
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
3. Διεργασία (process) σε έναν υπολογιστή είναι το στιγμιότυπο ενός
προγράμματος που εκτελείται. Σε αντιδιαστολή με την έννοια του
προγράμματος, το οποίο είναι ένα στατικό σύνολο εντολών, μια διεργασία
αποτελεί την εκτέλεση αυτών των εντολών. Επομένως ένα πρόγραμμα
γενικώς συσχετίζεται με περισσότερες από μία διεργασίες, μία για κάθε φορά
που εκτελείται. Τα σύγχρονα λειτουργικά συστήματα επιτρέπουν την
ταυτόχρονη συνύπαρξη πολλαπλών διεργασιών στη μνήμη του υπολογιστή
καθώς υποστηρίζουν πολυδιεργασία, μία μέθοδο υλοποίησης ταυτοχρονισμού
με την οποία, είτε με κατάλληλη κατανομή του χρόνου του μοναδικού
επεξεργαστή (ψευδοπαράλληλη εκτέλεση) είτε λόγω της ύπαρξης
περισσοτέρων του ενός επεξεργαστών (παράλληλη εκτέλεση), είναι εφικτή η
ταυτόχρονη εκτέλεση πολλαπλών διεργασιών.
Πηγή : http://el.wikipedia.org/wiki/Διεργασία(υπολογιστές)
Σε πολλά λειτουργικά συστήματα όλες αυτές οι πληροφορίες, που είναι
σχετικές με κάθε διεργασία, αποθηκεύονται σε ένα πίνακα που το ίδιο το
λειτουργικό σύστημα δημιουργεί και ονομάζεται Πίνακας Διεργασιών
(process table). Σε αυτόν δεν αποθηκεύονται τα περιεχόμενα του χώρου
διευθύνσεων της κάθε διεργασίας. Πιο συγκεκριμένα μια διεργασία αποτελείται
από το χώρο διευθύνσεων της, που συνήθως καλείται Εικόνα μνήμης (core
image) και τις πληροφορίες που την αφορούν στον πίνακα διεργασιών.
Οι κλήσεις του λειτουργικού συστήματος διαχείρισης διεργασιών είναι αυτές
που στην ουσία μεριμνούν για τη δημιουργία και τον τερματισμό των
διεργασιών. Για παράδειγμα στο λειτουργικό σύστημα των Windows
μεταβαίνοντας στη διαχείριση εργασιών με το συνδυασμό των πλήκτρων
Ctrl+Alt+Del, μπορούμε στην καρτέλα Διεργασίες να δούμε όλες τις
διεργασίες που εκτελούνται τη συγκεκριμένη στιγμή και να προκαλέσουμε τον
τερματισμό κάποιας (Εικόνα 1).
Εικόνα 1
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
4. Ο τερματισμός μιας διεργασίας είναι μία ενέργεια που πρέπει να γίνεται με
μεγάλη προσοχή αν δεν θέλουμε να προκαλέσουμε τον τερματισμό
διεργασιών που εξυπηρετούν τη λειτουργία του ίδιου του λειτουργικού
συστήματος! (Εικόνα 2)
Εικόνα 2
Είναι δυνατό μια διεργασία να δημιουργήσει μια ή περισσότερες διεργασίες
που ονομάζονται διεργασίες – παιδιά ή θυγατρικές διεργασίες και αυτές
με τη σειρά τους να δημιουργήσουν και άλλες θυγατρικές διεργασίες ώστε
τελικά να καταλήξουμε σε μια δεντροειδή δομή διεργασιών.
Στην ουσία σε ένα σύστημα πολυπρογραμματισμού η κεντρική μονάδα
επεξεργασίας αξιοποιείται διαδοχικά από διαφορετικά προγράμματα
εκτελώντας κάθε φορά κάποιο μέρος του καθενός από αυτά για δέκατα ή
εκατοστά του χιλιοστοδευτερολέπτου (millisecond). Δηλαδή στο χρονικό
διάστημα ενός δευτερολέπτου έχει ασχοληθεί με πολλά και διαφορετικά
προγράμματα, δίνοντας με αυτό τον τρόπο την ψευδαίσθηση του
παραλληλισμού. Με τον όρο Ψευδοπαραλληλισμός εννοείτε αυτή ακριβώς η
συχνότατη εναλλαγή των προγραμμάτων που εκτελεί ο επεξεργαστής σε
αντίθεση με τον πραγματικό παραλληλισμό υλικού που αφορά για παράδειγμα
την εκτέλεση υπολογισμών από τον επεξεργαστή ενώ την ίδια στιγμή
εκτυπώνεται και ένα κείμενο στον εκτυπωτή. Στους πολυπύρηνους
επεξεργαστές το λογισμικό (και κατ’ επέκταση το λειτουργικό σύστημα)
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
5. μπορεί να ωφεληθεί όταν υπάρχει κώδικας που μπορεί να εκτελεστεί
παράλληλα. Στα περισσότερα σύγχρονα λειτουργικά συστήματα μια εφαρμογή
εκτελείται ως μια ξεχωριστή διεργασία με αποτέλεσμα η ταυτόχρονη εκτέλεση
πολλών εφαρμογών να μπορεί να επιταχυνθεί σημαντικά σε έναν επεξεργαστή
με πολλαπλούς πυρήνες.
Μία διεργασία με βάση την κατάσταση που βρίσκεται διακρίνεται σε τρεις
κατηγορίες:
1. Εκτελούμενη (running), χρησιμοποιεί τη CPU εκείνη τη στιγμή.
2. Έτοιμη ή εκτελέσιμη (ready, runnable), έχει διακοπεί
προσωρινά για να εκτελεστεί κάποια άλλη.
3. Υπό αναστολή(blocked), ανίκανη να εκτελεστεί μέχρις ότου λάβει
χώρα κατάλληλο εξωτερικό συμβάν.
Όταν πολλές διεργασίες έχουν πρόσβαση στον ίδιο πόρο του συστήματος ή
μοιράζονται τα ίδια δεδομένα σε ένα πρόγραμμα τότε παρατηρείτε πρόβλημα
κατά την εκτέλεση των διεργασιών. Το πρόβλημα αυτό ονομάζεται πρόβλημα
κρίσιμου τμήματος. Με τον όρο κρίσιμο τμήμα ονομάζεται το τμήμα – περιοχή
της διεργασίας που έχει πρόσβαση στον κοινό πόρο του συστήματος και δεν
πρέπει να διακοπεί η λειτουργία της γιατί δημιουργείται κίνδυνος στα
δεδομένα του προγράμματος. Ένα παράδειγμα είναι η ταυτόχρονη εκτύπωση
δύο εγγράφων σε ένα εκτυπωτή. Θα πρέπει πρώτα να ολοκληρωθεί η
εκτύπωση τους ενός για να προχωρήσει στο επόμενο.
Ένα σύνολο υπηρεσιών που παρέχει ο πυρήνας του λειτουργικού
συστήματος μέσω μιας προγραμματιστικής διασύνδεσης ονομάζεται κλήση
συστήματος.
Κανονικά ο κώδικας των εκτελούμενων προγραμμάτων («κώδικας χρήστη»)
δεν έχει άμεση πρόσβαση στον πυρήνα, αλλά χάρη στις κλήσεις συστήματος
που αυτός εξάγει, τα προγράμματα χρήστη μπορούν να καλούν με ελεγχόμενο
τρόπο διαδικασίες που παρέχουν υπηρεσίες στον καλούντα. Η σύνταξη, η
σημασιολογία και η ονοματολογία των κλήσεων συστήματος διαφέρει μεταξύ
των Λειτουργικών Συστημάτων, με αποτέλεσμα ένα εκτελέσιμο πρόγραμμα
συνήθως να μπορεί να τρέξει μόνο σε ένα Λειτουργικό σύστημα. Ο κώδικας
χρήστη δεν μπορεί να προσπελάσει μόνος του τους πόρους του υπολογιστή
(π.χ. δίσκους, μνήμη συστήματος, περιφερειακές συσκευές, δίκτυο κλπ), αλλά
μπορεί να ζητήσει ότι χρειάζεται (π.χ. άνοιγμα ενός αρχείου στον δίσκο) από
τον πυρήνα μέσω των κλήσεων συστήματος.
Κάθε φορά που μία διεργασία καλεί μία κλήση συστήματος το Λειτουργικό
σύστημα εκτελεί έναν έλεγχο ώστε να επιβεβαιώσει ότι πράγματι η διεργασία
αυτή έχει δικαίωμα να εκτελέσει τη συγκεκριμένη πράξη στον συγκεκριμένο
πόρο (π.χ. ανάγνωση αρχείου). Το λειτουργικό σύστημα αναλαμβάνει να
συντονίσει τις κλήσεις συστήματος που εκτελούνται από κάθε διεργασία ώστε
να μην προξενούνται προβλήματα. Ακόμη, ο χρονοπρογραμματιστής του
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
6. πυρήνα επιβλέπει κάθε κλήση συστήματος, αφού πολλές από αυτές οδηγούν
σε αναστολή της καλούσας διεργασίας μέχρι να απελευθερωθεί κάποιος πόρος
ή να ικανοποιηθεί κάποια άλλη συνθήκη.
3.Σύστημα Αρχείων
Αρχεία
Ως γνωστόν τα δεδομένα αποθηκεύονται στον υπολογιστή σε αρχεία. Ένα
αρχείο είναι ένα σύνολο δεδομένων. Οι πληροφορίες που αντιπροσωπεύουν τα
δεδομένα αυτά μπορεί να είναι στοιχεία, αριθμοί, κείμενα, ήχοι, εικόνες ή
προγράμματα. Κάθε αρχείο είναι γνωστό με ένα όνομα, μοναδικό στο
συγκεκριμένο υπολογιστή, το όνομα αρχείου.
Σύστημα αρχείων
Ένα σύστημα αρχείων είναι μια μέθοδος για την αποθήκευση και την
οργάνωση των δεδομένων των αρχείων που χρησιμοποιούνται σε ηλεκτρονικό
υπολογιστή. Ουσιαστικά, οργανώνει αυτά τα αρχεία σε μια βάση δεδομένων
με σκοπό την αποθήκευση, την οργάνωση, τη διαχείριση, και την ανάκτηση
τους από το λειτουργικό σύστημα του υπολογιστή.
Ονοματολογία των αρχείων
Αναφέρεται στον τρόπο χρήσης ονομάτων για την ανεύρεση και τη χρήση
των αρχείων. Πολλά λειτουργικά συστήματα χρησιμοποιούν μια συγκεκριμένη
ονοματολογία για να χαρακτηρίσουν τη θέση και τη χρήση των αρχείων. Η
ονοματολογία αυτή διαφέρει μεταξύ των λειτουργικών συστημάτων. Για
παράδειγμα στα Windows το όνομα ενός αρχείου μπορεί να περιλαμβάνει έως
και 255 χαρακτήρες, λατινικούς, ελληνικούς και κενά. Απαγορεύεται η χρήση
των χαρακτήρων *|<>?/ “ επειδή αυτοί χρησιμοποιούνται για ειδικές χρήσεις.
Επίσης η χρήση του αρχείου μπορεί να χαρακτηρίζεται από μια «κατάληξη» ή
«επέκταση» του ονόματός του. Για παράδειγμα:
Στο Ms-Dos : RUN.BAT σημαίνει ότι το συγκεκριμένο αρχείο είναι
ομαδικό και περιέχει εντολές προς εκτέλεση.
Στα Windows: Text.txt αρχείο κειμένου. Ομοίως το text.doc με τη
διαφορά ότι μπορεί να αναγνωστεί μέσω της εφαρμογής microsoft word.
Prog.exe εκτελέσιμο αρχείο κλπ.
Στο UNIX: test.c σημαίνει ότι περιέχει πηγαίο κώδικα σε γλώσσα c.
Γενικά οι τύποι των αρχείων είναι:
.exe .com Εκτελέσιμο αρχείο κώδικα μηχανής
.dll Dynamic Link Library
.obj Αρχείο κώδικα μηχανής, αποτέλεσμα μεταγλώττισης
.c .cpp Αρχείο πηγαίου κώδικα σε C, C++
.txt Κείμενο σε μορφή ASCII
.hlp Αρχείο βοήθειας
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
7. .lib Βιβλιοθήκη ρουτινών σε κώδικα μηχανής
.doc .xls Αρχεία εφαρμογών του Office
.ppt
.htm .html Αρχεία γλώσσας HTML – σελίδες web
.jpg .bmp Αρχεία με εικόνες
.gif
.mp3 .wav Αρχεία ήχου
.mpg .mov Αρχεία κινούμενης εικόνας - video
.zip .ace .arj Συμπιεσμένα αρχεία
Τα χαρακτηριστικά των αρχείων
Το βασικό χαρακτηριστικό του αρχείου είναι βέβαια το όνοµά του. Υπάρχουν
όµως και άλλες απαραίτητες πληροφορίες, µερικές από τις οποίες µπορεί να
είναι:
Το µέγεθος του αρχείου
Ο χρήστης που δηµιούργησε το αρχείο
Ο τύπος του αρχείου
Ο τρέχων χρήστης-ιδιοκτήτης του
Η ηµεροµηνία και ώρα δηµιουργίας του αρχείου
Η ηµεροµηνία και ώρα της τελευταίας πρόσβασης στο αρχείο
Η ηµεροµηνία και ώρα της τελευταίας τροποποίησης των
περιεχοµένων του
Μια ένδειξη αν τα δεδοµένα του αρχείου µπορούν να αλλοιωθούν ή
αυτό προορίζεται µόνο για ανάγνωση δεδοµένων (read only)
Μια ένδειξη αν πρόκειται για αρχείο του ΛΣ
Αν το αρχείο το χρησιµοποιούν από κοινού πολλές διεργασίες και
ποιες.
Οι χρήστες που δικαιούνται να το χρησιµοποιούν και µε ποιο
τρόπο: να διαβάζουν τα δεδοµένα του, να τα αλλάζουν ή να
τροποποιούν κάποια χαρακτηριστικά του
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
8. Δικαιώµατα προσπέλασης (access rights) είναι οι πληροφορίες αυτές που
καθορίζουν την ασφάλεια των δεδοµένων του Λειτουργικού Συστήματος
ορίζοντας ποιες λειτουργίες µπορούν να εκτελεστούν και από ποιους χρήστες
Οι λειτουργίες των αρχείων
Οι κυριότερες λειτουργίες που παρέχονται από όλα τα Λειτουργικά Συστήματα
στους χρήστες όταν διαθέτουν τα ανάλογα δικαιώµατα προσπέλασης στα
αρχεία είναι:
∆ηµιουργία ενός νέου αρχείου. Αυτό αρχικά δεν περιέχει δεδοµένα
Διαγραφή ενός αρχείου από τη δευτερεύουσα µνήµη
Άνοιγµα ενός αρχείου
Κλείσιµο ενός αρχείου
Ανάγνωση δεδοµένων από ένα ανοικτό αρχείο
Εγγραφή δεδοµένων σε ένα ανοικτό αρχείο
Ανάγνωση ή αλλαγή των χαρακτηριστικών ενός αρχείου
Κατάλογοι Συστήματος αρχείων
Ο κατάλογος ή ευρετήριο (directory) περιέχει µια καταγραφή των αρχείων
που βρίσκονται στη συγκεκριµένη µονάδα δευτερεύουσας µνήµης, µαζί µε
διάφορες πληροφορίες για το πού µπορεί το Λειτουργικό Σύστημα να βρεί τα
περιεχόµενα του καθενός αρχείου.
Στο σύστηµα αρχείων ενός υπολογιστή, όπου τα αρχεία συνήθως είναι πάρα
πολλά, υπάρχει η ανάγκη για λογική οργάνωσή τους ανάλογα µε τη
λειτουργικότητα και το «θέµα» τους. Έτσι γίνεται κατανοµή των αρχείων σε
διαφορετικούς καταλόγους ή ευρετήρια (directories). Για να αναφερθεί ο
χρήστης σε ένα αρχείο χρειάζεται το όνοµα του αρχείου και τον κατάλογο
όπου αυτό βρίσκεται. Οι κατάλογοι έχουν συµβολικά ονόµατα ακριβώς όπως
και τα αρχεία. Με τον τρόπο αυτό η αναζήτηση ενός αρχείου γίνεται πιο
γρήγορη, αν γνωρίζουµε τον κατάλογο στον οποίο αυτό βρίσκεται ενώ το
Λειτουργικό Σύστημα έχει καλύτερη διαχείριση των δικαιωμάτων πρόσβασης.
Με βάση τον αριθμό των χρηστών και των αρχείων οι κατάλογοι διακρίνονται
στις παρακάτω κατηγορίες:
Κατάλογοι ενός επιπέδου
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
9. Το σύστηµα αρχείων κρατά έναν κεντρικό πίνακα (ρίζα) µε µια θέση
για κάθε χρήστη. Κάθε θέση στον κεντρικό πίνακα αντιστοιχεί σε
έναν κατάλογο. Όλα τα αρχεία του κάθε χρήστη βρίσκονται µέσα
στον κατάλογο που του ανήκει, χωρίς καµία περαιτέρω οργάνωση.
ROOT
DIRECTORY
A B C D
Κατάλογοι πολλαπλών επιπέδων
Όταν το σύστηµα αρχείων οργανώνει τους καταλόγους σε πολλά
επίπεδα, κάθε κατάλογος µπορεί να περιέχει άλλους καταλόγους,
αλλά και αρχεία. Όταν ο κατάλογος X περιέχει τον κατάλογο Β,
ονοµάζουµε τον Β υποκατάλογο (subdirectory) του X και τον X
κατάλογο-πατέρα (parent directory) του Β. Έτσι δηµιουργείται ένα
«δένδρο» καταλόγων, όπου ο υποκατάλογος είναι «παρακλάδι» του
καταλόγου που τον περιέχει και ο κεντρικός πίνακας καταλόγων του
συστήµατος αρχείων παίζει το ρόλο της ρίζας (root directory). . Αυτή
η σειρά από ονόµατα καταλόγων αποκαλείται διαδροµή ή µονοπάτι
(path).
ROOT
DIRECTORY
Χ
Z
Y
A
A
B C F
E H
D
G
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
10. Οι λειτουργίες των καταλόγων
Οι βασικές λειτουργίες που µπορούν να εκτελεστούν σε ένα κατάλογο είναι:
∆ηµιουργία ενός νέου καταλόγου
Διαγραφή ενός καταλόγου. Για να µπορεί να διαγραφεί ένας
κατάλογος πρέπει να είναι κενός. Ο κατάλογος-ρίζα δεν µπορεί να
διαγραφεί.
Μετονομασία του καταλόγου
Εγγραφή σε ένα κατάλογο
Ανάγνωση των περιεχομένων ενός καταλόγου, δηλαδή απαρίθμηση
των αρχείων και των υποκαταλόγων που αυτός περιέχει.
4.Φλοιός ή Διερμηνευτής εντολών
Το λειτουργικό σύστημα επικοινωνεί με τον ή τους χρήστες μέσα από ένα
πρόγραμμα που λέγεται Διερμηνευτής εντολών (command interpreter) ή
Φλοιός (shell). Το πρόγραμμα αυτό αναλαμβάνει την ερμηνεία των εντολών
του χρήστη και την αποστολή τους στα «βαθύτερα» μέρη του λειτουργικού
συστήματος για να εκτελεστούν. Όλα τα λειτουργικά συστήματα
χρησιμοποιούν αυτό τον τρόπο επικοινωνίας. Για παράδειγμα στο MS-DOS ο
διερμηνευτής εντολών είναι το αρχείο COMMAND.COM, ή στο UNIX το sh (ή
ch ή ksh κ.λπ.).
Συγκεκριμένα για το σύστημα UNIX το πρόγραμμα του φλοιού εκτελείται
από τον πυρήνα για τον κάθε χρήστη που εισέρχεται στο σύστημα, οπότε
είναι δυνατόν να τρέχουν συγχρόνως πολλά προγράμματα φλοιού στο ίδιο
σύστημα. Ο φλοιός διαθέτει κάποιες συγκεκριμένες εντολές (cp, rm…), οι
οποίες είναι στην ουσία υπορουτίνες ενσωματωμένες στο πρόγραμμα του
φλοιού.
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη
11. Στην εικόνα που ακολουθεί απεικονίζεται σχηματικά η αλληλεπίδραση του
χρήστη με τον φλοιό σε ένα σύστημα UNIX:
Επιμέλεια σημειώσεων: Σεραλίδου Ελένη