Δείγμα σημειώσεων για τα Λειτουργικά Συστήματα για τις εξετάσεις του ΑΣΕΠ Εκπαιδευτικών ΠΕ19-ΠΕ20



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

Δρομολόγηση σε σύστημα ενός επεξεργαστή

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

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

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

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

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

Επιτεύγµατα των Λ.Σ.

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ H/Y

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

Παράλληλη Επεξεργασία

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

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

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

Σκελετός Παρουσίασης

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις

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

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

Ένα πρόγραμμα σε εκτέλεση, Μια ασύγχρονη δραστηριότητα,

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

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

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

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

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

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

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

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

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

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

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

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

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

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Διαχείριση Κύριας Μνήμης

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

ροµολόγηση Επεξεργαστή

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Ενότητα 6 (Κεφάλαιο 9) Χρονοδρομολόγηση

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

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

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

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

Περιγραφή και Έλεγχος ιεργασιών

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

Διεργασίες και Νήματα (2/2)

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

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

Κατανεμημένα Συστήματα

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

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

Εξετάσεις Προόδου 8/1/2014 Τεχνικός Εφαρμογών Πληροφορικής (Πολυμέσα/ Web designer - developper/video games)

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

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

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

Αμοιβαίος αποκλεισμός

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

Transcript:

Δείγμα σημειώσεων για τα Λειτουργικά Συστήματα για τις εξετάσεις του ΑΣΕΠ Εκπαιδευτικών ΠΕ19-ΠΕ20 Υλικολογικό (firmware) Υπάρχει επίσης και το υλικολογικό (firmware) που είναι ένα σύνολο από μικροπρογράμματα τα οποία ερμηνεύουν τις εντολές γλώσσας μηχανής του υπολογιστή. Το κύριο χαρακτηριστικό τους είναι ότι έχουν εμφυτευτεί σε ειδικές μνήμες (EPROM - Erasable Programmable Read-Only Memory, δηλαδή τύπου ROM) κατά το στάδιο της κατασκευής του υλικού με την τεχνική του μικροπρογραμματισμού. Το firmware έχει τη δυνατότητα να αλλάξει όταν υπάρχουν λόγοι που άπτονται της αρχιτεκτονικής του υλικού. Τα αρχικά EPROM σημαίνουν: a) Erasable Program from ROM b) Erasable Proccess in ROM c) Erasable Programmable Read-Only Memory d) External Power Run-On Emergency Τι είναι το middleware; a) Τύπος οθόνης b) Όρος για να περιγράψει την αλληλεπίδραση του χρήστη με τον υπολογιστή c) Λογισμικό που ελέγχει και συντονίζει κατανεμημένα συστήματα υπολογιστών d) Πρωτόκολλο επικοινωνίας παρόμοιο με το TCP/IP Πυρήνας Ο πυρήνας έχει κυρίως τις εξής λειτουργίες: Διαχείριση διεργασιών στη CPU: Ο πυρήνας είναι υπεύθυνος για να αποφασίσει ποια από τα εκτελούμενα προγράμματα θα πρέπει να δρομολογηθούν προς τους επεξεργαστές κάθε στιγμή Διαχείριση της μνήμης: Ο πυρήνας καθορίζει ποια προγράμματα θα έχουν πρόσβαση στη μνήμη και συχνά απαιτείται περισσότερη μνήμη

από τη διαθέσιμη οπότε πρέπει να υπάρξει αποφυγή κρασαρίσματος. Κύρια λειτουργία του είναι να δρομολογήσει τις διεργασίες με τέτοιον τρόπο ώστε να αποφευχθούν τα αδιέξοδα σε στιγμές που υπάρχει έλλειψη πόρων. Διαχείριση Μονάδων Ι/Ο: Όλες αυτές οι συσκευές όπως το πληκτρολόγιο, το ποντίκι, οι σκληροί δίσκοι, εκτυπωτές κ.τ.λ. Ο πυρήνας χειρίζεται αιτήσεις για χρήση μονάδων Ι/Ο τις από εφαρμογές και παρέχει τις κατάλληλες μεθόδους για τη χρήση τέτοιων συσκευών με τον πιο αποτελεσματικό τρόπο. Τύποι πυρήνα Υπάρχουν πολλοί τύποι Λειτουργικών Συστημάτων βασισμένοι σε διαφορετικούς τρόπους προσέγγισης το καθένα. Όμως οι κυριότεροι τύποι πυρήνων είναι οι παρακάτω: Μονολιθικός πυρήνας (Monolithic kernel) Μικροπυρήνας (Μicokernels) Υβριδικός πυρήνας (Hybrid kernel) Εξωπυρήνας (Exokernel) Πυρήνας Cache Loadable kernel module (LKM) Υβριδικοί πυρήνες Οι υβριδικοί πυρήνες βασίζονται σε αρχιτεκτονική που συνδυάζει τις αρχιτεκτονικές μονολιθικού πυρήνα και μικροπυρήνα μαζί. Αυτή η κατηγορία δεν αποδέχεται από πολλούς και είναι αμφιλεγόμενη. Πάντως η κεντρική ιδέα είναι να υπάρχει μία δομή πυρήνα όμοια με αυτήν του μικροπυρήνα αλλά να υλοποιείται όπως αυτή του μονολιθικού. Χαρακτηριστικό παράδειγμα τέτοιου πυρήνα είναι ο πυρήνας NT που χρησιμοποιούν τα Λειτουργικά Συστήματα Windows NT, Windows 2000, Windows XP και Windows Vista. 2.5. Λειτουργία Dual-Mode Οι διαμοιραζόμενοι πόροι του συστήματος απαιτούν από το Λειτουργικό Σύστημα να εξασφαλίσει ότι ένα λανθασμένο πρόγραμμα δε θα μπορεί να γίνει αφορμή να εκτελεστούν λανθασμένα και άλλα προγράμματα. Έτσι το Λειτουργικό Σύστημα παρέχει υποστήριξη υλικού για δύο καταστάσεις λειτουργίας:

Κατάσταση Χρήστη (User mode): Η εκτέλεση γίνεται εκ μέρους του χρήστη. Παρέχει πρόσβαση σε υψηλότερα επίπεδα, εκεί όπου βρίσκονται τα προγράμματα και το λογισμικό εφαρμογών. Όσο είμαστε σε κατάσταση χρήστη έχουμε περιορισμένη εξουσιοδότηση ώστε να ελαττώνονται οι πιθανότητες να υπάρξει κάποια σύγκρουση στην περιοχή διευθύνσεων μνήμης. Το mode register bit δείχνει αν η CPU εκτελεί ένα πρόγραμμα χρήστη ή βρίσκεται σε κατάσταση προστασίας του πυρήνα (0 = kernel mode, 1 = user mode) Κατάσταση Συστήματος (System Mode): Η εκτέλεση γίνεται εκ μέρους του Λειτουργικού Συστήμάτος. Επίσης ονομάζεται και Superivisor Mode ή Monitor Mode ή και Kernel Mode. Όταν το σύστημα βρίσκεται σε αυτή την κατάσταση υποθέτει ότι οι εντολές και το λογισμικό που εκτελείται είναι ασφαλές και για αυτό εκτελεί οποιαδήποτε εντολή και αναφορά στο χώρο διευθύνσεων μνήμης. Ο πυρήνας θεωρείται ασφαλές λογισμικό. Στην Κατάσταση Συστήματος (User Mode): a) Το σύστημα υποθέτει ότι οι εντολές που εκτελούνται δεν είναι ασφαλείς και τις ελέγχει. b) Το Mode Register Bit είναι 1 c) Έχουμε περιορισμένη εξουσιοδότηση ώστε να μην υπάρξει κάποια σύγκρουση στην περιοχή διευθύνσεων μνήμης d) Η εκτέλεση γίνεται εκ μέρους του Λειτουργικού Συστήμάτος Φλοιός Ο φλοιός (Shell) είναι ένα πρόγραμμα Unix που παρέχει μία αλληλεπιδραστική συνεργασία μεταξύ χρήστη και συστήματος και συνήθως είναι μία αλληλεπίδραση μέσω κειμένου. Σύνδεσμοι Οι σύνδεσμοι χρησιμεύουν στο να μπορεί ένα αρχείο να είναι παρόν σε περισσότερους του ενός καταλόγους χωρίς να πρέπει να αντιγράφεται πολλές φορές στο δίσκο. Έτσι έχουμε οικονομία χώρου. Υπάρχουν δύο είδη συνδέσμων: Οι Σκληροί Σύνδεσμοι (Hard Links) Οι Συμβολικοί Σύνδεσμοι (Soft ή Symbolic Links)

Χαρακτηριστικά των Hard Links είναι τα εξής: Αν σβήσει ένας hard link το αρχείο δε σβήνεται, σβήνεται μόνο ο hard link. Για να σβήσει ένα αρχείο από το δίσκο πρέπει να σβήσουν όλοι οι hard link που δείχνουν σε αυτό. Όλοι οι hard link είναι ισοδύναμοι με τον αρχικό και δεν έχουν από την στιγμή της δημιουργίας τους καμία διαφορά με αυτόν. Οι hard links δε μπορούν να δείχνουν δεδομένα σε άλλο σύστημα αρχείων (σε άλλο partition του δίσκου). Κλήσεις συστήματος Οι κλήσεις συστήματος διαφέρουν από τις κλήσεις συνάρτησης επιπέδου χρήστη (user level function call) οι οποίες είναι κλήσεις που γίνονται από συναρτήσεις που είναι απόρροια ενεργειών του χρήστη. Τα πολυπρογραμματιζόμενα συστήματα βασίζονται: a) Σε συγκεκριμένα χαρακτηριστικά του υλικού μέρους του Η/Υ (π.χ. διακοπές, Ι/Ο, DMA) b) Στη διαχείριση μνήμης c) Στους αλγόριθμους δρομολόγησης d) Σε όλα τα παραπάνω Ποια είναι η λειτουργία του Διεκπαιρωτή ετεροχρονισμένης εκτύπωσης (Spooler); a) Συνδέεται με το modem επιτυγχάνοντας καλύτερη σύνδεση στο διαδίκτυο b) Χρησιμοποιείται σε συστήματα πολυπρογραμματισμού για ταυτόχρονη χρήση συσκευών Ι/Ο c) Είναι πρόγραμμα εφαρμογής για την κατασκευή ιστοσελίδων d) Τίποτα από τα παραπάνω

Χαρακτηριστικό μέγεθος για την απόδοση ενός Λειτουργικού Συστήματος είναι: a) Η μέση χρησιμοποίηση των πόρων b) Η ρυθμοαπόδοση (throughput) c) Ο χρόνος απόκρισης d) Όλα τα παραπάνω Καταστάσεις διεργασίας Κατά τη διάρκεια ζωής της μία διεργασία μπορεί να βρεθεί σε μία σειρά από διακριτές καταστάσεις που καθορίζουν το πώς το Λειτουργικό Σύστημα συμπεριφέρεται σε αυτές. Διάφορα γεγονότα αναγκάζουν μια διεργασία να μεταβάλει την κατάστασή της. Οι καταστάσεις αυτές είναι οι εξής: Εκτελούμενη (running): Είναι η διεργασία που χρησιμοποιεί τη CPU εκείνη τη στιγμή. Έτοιμη (ready): Είναι η διεργασία που έχει διακοπεί προσωρινά λόγω κάποιου γεγονότος. Υπό αναστολή (blocked): Είναι η διεργασία που δε μπορεί να εκτελεστεί μέχρι να συμβεί ένα κατάλληλο εξωτερικό συμβάν. Επίσης έχουμε και άλλες δύο καταστάσεις: New: Είναι η διεργασία που μόλις έχει δημιουργηθεί από το Λειτουργικό Σύστημα. Exit: Είναι η διεργασία που μόλις έχει απελευθερωθεί από τον πίνακα των εκτελέσιμων εργασιών από το Λειτουργικό Σύστημα. (ΑΣΕΠ) Διεργασία (process) είναι: a) Ένα πρόγραμμα b) Ένας επεξεργαστής c) Ένα ειδικό αρχείο d) Ένα πρόγραμμα σε εκτέλεση Κατά τη διαγραφή μίας διεργασίας:

a) Το μπλοκ ελέγχου της διεργασίας (PCB) παραμένει στη μνήμη για μελλοντική χρήση b) Το μπλοκ ελέγχου της διεργασίας (PCB) δίδεται σε μία άλλη διεργασία c) Το μπλοκ ελέγχου της διεργασίας (PCB) διαγράφεται d) Τίποτα από τα παραπάνω Ασφαλής κατάσταση Ασφαλής κατάσταση σημαίνει ότι υπάρχει μία τουλάχιστον ακολουθία εκτέλεσης των διεργασιών που δεν οδηγεί σε αδιέξοδο και μπορεί να εκτελεστεί μέχρι το τέλος. Από την άλλη μη ασφαλής κατάσταση είναι η κατάσταση που δεν είναι ασφαλής. Όταν μία διεργασία απαιτεί έναν διαθέσιμο πόρο, το σύστημα πρέπει να αποφασίσει αν η άμεση ανάθεση του πόρου θα το διατηρήσει σε ασφαλή κατάσταση. Το σύστημα είναι σε ασφαλή κατάσταση αν υπάρχει μία ασφαλής ακολουθία για όλες τις διεργασίες. 6.5. Χρονοδρομολογητές Όταν μία διεργασία βρίσκεται σε μία ουρά τότε το Λειτουργικό Σύστημα με κάποιον τρόπο πρέπει να επιλέξει μία διεργασία από την ουρά. Αυτή την λειτουργία την επιτελούν οι χρονοδρομολογητές (time scheduler). Αυτοί είναι οι εξής: Long-term scheduler ή job scheduler: Αποφασίζει και επιλέγει τις διεργασίες που θα περιληφθούν στην ουρά των έτοιμων προς εκτέλεση διεργασιών (ready queue). Επίσης ελέγχει και τον βαθμό του πολυπρογραμματισμού. Short-term scheduler ή CPU scheduler: Επιλέγει ποια διεργασία θα είναι η επόμενη προς εκτέλεση και εκχωρεί τη χρήση της CPU. Medium-term scheduler: Χρησιμοποιείται ειδικά σε συστήματα καταμερισμού χρόνου (time-sharing) ως ένα ενδιάμεσο επίπεδο χρονοδρομολόγησης. Λειτουργεί χρησιμοποιώντας ένα σχήμα εναλλαγής που μετακινεί περιοδικά διεργασίες από τη μνήμη και τις εγκαθιστά αργότερα για να συνεχίσουν από το σημείο που είχαν σταματήσει.

Κατά τη στιγμή επιλογής μίας διεργασίας από τη λίστα έτοιμων διεργασιών: a) Ο job scheduler αποφασίζει ποια διεργασία θα εκτελεστεί αυτήν τη στιγμή b) Ο CPU scheduler επιλέγει ποια θα είναι η επόμενη προς εκτέλεση διεργασία c) Ο medium-term scheduler χρησιμοποιείται για να διαγράψει από τη λίστα όσες διεργασίες ολοκλήρωσαν το κβάντουμ χρόνου τους d) Τίποτα από τα παραπάνω 6.12. Συνεξέλιξη (Concurrency) Ένα σημαντικό και θεμελιώδες χαρακτηριστικό των σύγχρονων Λειτουργικών Συστημάτων είναι η ταυτόχρονη εξέλιξη (συνεξέλιξη) πολλών διεργασιών. Αυτές εκτελούνται ταυτόχρονα και πιθανόν να αλληλεπιδρούν μεταξύ τους. Έτσι μπορεί να υπάρχουν πολλά μονοπάτια ολοκλήρωσης της εκτέλεσης των διεργασιών. Το χαρακτηριστικό αυτό είναι ουσιώδες για την κατανόηση του πολυπρογραμματισμού, της πολυεπεξεργασίας, των κατανεμημένων συστημάτων και του μοντέλου πελάτη-εξυπηρετητή (client-server). Η συνεξέλιξη εμπεριέχει σχεδιαστικά χαρακτηριστικά που περιλαμβάνουν: επικοινωνία μεταξύ των διεργασιών διαχείριση πόρων το συγχρονισμό πολλαπλών διεργασιών την εκχώρηση χρόνου του επεξεργαστή στις διεργασίες. Η συνεξέλιξη είναι σημαντική αλλά πρέπει να αντιμετωπιστούν: Ο αμοιβαίος αποκλεισμός Η παρατεταμένη στέρηση Το αδιέξοδο Ο συγχρονισμός Το αυξημένο κόστος εναλλαγής των διεργασιών. Μοντέλα που αναπτύχθηκαν σχετικά με τη συνεξέλιξη είναι το Parallel Random Access Mashine, το SCOOP (Simple Concurent Object-Oriented Programming) κ.ά.

Γλώσσες προγραμματισμού που η συνεξέλιξη παίζει σημαντικό ρόλο είναι η Ada, η CDL (Concurrent Description Language), η Cilk, η Join Java κ.ά. Συνεξέλιξη (Concurrency) είναι: a) Η ταυτόχρονη τεχνολογική εξέλιξη του υλικού και του λογισμικού b) Μέθοδος κατά την οποία βρίσκεται το μοναδικό μονοπάτι εκτέλεσης των διεργασιών για την αποφυγή αδιεξόδων c) Η ταυτόχρονη εξέλιξη πολλών διεργασιών d) Τίποτα από τα παραπάνω Σηματοφόροι (Semaphores) Άλλη διάκριση των σηματοφόρων είναι: Ισχυροί σηματοφόροι: Όταν μία διεργασία μπλοκάρεται από ένα σηματοφόρο τότε προστίθεται σε μία ουρά που περιλαμβάνει τις διεργασίες που περιμένουν και η πολιτική διαχείρισης της ουράς είναι η FIFO. Οι ισχυροί συματοφόροι εγγυώνται την απαλλαγή από την παρατεταμένη στέρηση και είναι το είδος των σηματοφόρων που παρέχουν τα Λειτουργικά Συστήματα. Ασθενής σηματοφόροι: Όταν δεν καθορίζεται η σειρά με την οποία εξέρχονται οι διεργασίες από την ουρά. (ΑΣΕΠ) Ποια από τις παρακάτω έννοιες δεν σχετίζεται με την επικοινωνία διεργασιών σε ένα λειτουργικό σύστημα; a) Σημαφόρος b) Αμοιβαίος αποκλεισμός c) Πέρασμα μυνήματος d) Μπλοκ δίσκου Στη χρήση ισχυρών σηματοφόρων: a) Δεν καθορίζεται η σειρά με την οποία εξέρχονται οι διεργασίες από την ουρά αναμονής

b) Η πολιτική διαχείρισης της ουράς είναι Shortest Job First (SJF) c) Η πολιτική διαχείρισης της ουράς είναι η Last In First Out (LIFO) d) Η πολιτική διαχείρισης της ουράς είναι η First In First Out (FIFO) 7.7. Κατακερματισμός Έχουμε δύο είδη κατακερματισμού της μνήμης τα οποία είναι: Εσωτερικός κατακερματισμός (internal fragmentation): Είναι η μνήμη που δε χρησιμοποιείται και είναι ορατή μόνο από τη διεργασία που ζητά μνήμη. Συμβαίνει επειδή η ποσότητα μνήμης που θα εκχωρηθεί στη διεργασία πρέπει να είναι μεγαλύτερη ή ίση από την αιτούμενη ποσότητα. Εξωτερικός κατακερματισμός (external fragmentation): Είναι η μνήμη που δε χρησιμοποιείται και είναι ορατή από το σύστημα εκτός των διεργασιών που απαιτούν μνήμη. Συμβαίνει επειδή όλες οι απαιτήσεις μνήμης δεν είναι του ίδιου μεγέθους. 7.13.1. Τύποι διευθύνσεων Οι διευθύνσεις στη μνήμη του υπολογιστή ανήκουν σε τρεις κατηγορίες: Μία λογική διεύθυνση είναι μία αναφορά σε μία θέση μνήμης ανεξάρτητα από τη φυσική δομή και οργάνωση της μνήμης καθώς και από την τρέχουσα εκχώρηση των δεδομένων στη μνήμη. Οι compilers παράγουν κώδικα στον οποίο όλες οι αναφορές μνήμης είναι λογικές διευθύνσεις. Οι λογικές διευθύνσεις παράγονται από τον επεξεργαστή. Πριν πραγματοποιηθεί η πρόσβαση στην κύρια μνήμη γίνεται μετάφραση στη φυσική διεύθυνση. Μία σχετική διεύθυνση είναι ένα παράδειγμα λογικής διεύθυνσης στο οποίο η διεύθυνση εκφράζεται ως μία θέση σχετική με ένα γνωστό σημείο του προγράμματος (π.χ. η αρχή). Είναι ο πλέον συνηθισμένος τύπος λογικών διευθύνσεων που χρησιμοποιούνται στα εκτελέσιμα αρχεία. Αυτά φορτώνονται στην κύρια μνήμη με όλες τις αναφορές προς τη μνήμη σε σχετική μνήμη. Μία φυσική ή απόλυτη διεύθυνση είναι μία φυσική θέση στην κύρια μνήμη. Οι διευθύνσεις αυτές υπολογίζονται καθώς εκτελούνται οι εντολές.

Για να υπάρχει επαρκής απόδοση η μετάφραση από σχετικές σε φυσικές διευθύνσεις γίνεται από το υλικό. Τα προγράμματα των χρηστών διαχειρίζονται μόνο λογικές διευθύνσεις και δε βλέπουν ποτέ τις πραγματικές φυσικές διευθύνσεις. Μία λογική διεύθυνση: a) Είναι μία διευθύνση που παράγεται από τον επεξεργαστή b) Είναι μία φυσική θέση στην κύρια μνήμη c) Είναι μία αναφορά σε μία θέση μνήμης που εξαρτάται από τη φυσική δομή και οργάνωση της μνήμης d) Τίποτα από τα παραπάνω Υποθέστε ότι ένα σύστημα έχει μία CPU και μέσο ρυθμό αφίξεων διεργασιών 20 jobs/minute. Κάθε διεργασία έχει μέσο χρόνο εξυπηρέτησης 2 seconds. Ποιο είναι το αναμενόμενο ποσοστό χρόνου κατά το οποίο η CPU είναι απασχολημένη; a) 40% b) 66.7% c) 83.3% d) Κανένα από τα παραπάνω (ΑΣΕΠ) Ένας σκληρός δίσκος έχει κατακερματισμό (fragmentation) σε ποσοστό 30%. Μετά την εκτέλεση κατάλληλου λογισμικού το ποσοστό αυτό μειώνεται σε 15%. Η μέση ταχύτητα προσπέλασης ενός αρχείου του δίσκου θα: a) Αυξηθεί b) Μειωθεί c) Μείνει η ίδια d) Τριπλασιαστεί 7.13.9. Σύγκριση απλής κατάτμησης και σελιδοποίησης Μία σύγκριση κατάτμησης και σελιδοποίησης είναι η εξής: Η κατάτμηση απαιτεί περισσότερο σύνθετο hardware για το μετασχηματισμό των διευθύνσεων.

Η κατάτμηση έχει το μειονέκτημα του εξωτερικού κατακερματισμού. Η κατάτμηση θεωρείται ως πλεονέκτημα που προσφέρεται στον προγραμματιστή για να οργανώσει λογικά ένα πρόγραμμα σε τμήματα και να χρησιμοποιήσει διαφορετικά είδη προστασίας. Η σελιδοποίηση δημιουργεί πολύ μικρό εσωτερικό κατακερματισμό. Η κατάτμηση είναι ορατή από τον προγραμματιστή ενώ η σελιδοποίηση είναι αδιαφανής. 7.13.10. Κατάτμηση με σελιδοποίηση Οι σύγχρονοι υπολογιστές χρησιμοποιούν συνδυασμό κατάτμησης και σελιδοποίησης. Ο χώρος διευθύνσεων του χρήστη χωρίζεται σε ένα πλήθος τμημάτων και κάθε τμήμα διασπάται σε ένα πλήθος σελίδων σταθερού μεγέθους που είναι το ίδιο με το μέγεθος πλαισίου της κύριας μνήμης. Κάθε διεργασία συνδέεται με έναν πίνακα τμήματος και έναν αριθμό από πίνακες σελίδων, έναν για κάθε τμήμα της διεργασίας. Το πρόβλημα του εξωτερικού κατακερματισμού μέσω της σελιδοποίησης των τμημάτων. Ο αλγόριθμος δρομολόγησης First Come First Served (FCFS): a) Είναι κατάλληλος για συστήματα πολλών χρηστών b) Δίνει τον καλύτερο μέσο χρόνο αναμονής από όλους τους αλγορίθμους δρομολόγησης c) Ευνοεί τις προοριζόμενες για τη CPU διεργασίες d) Όλα τα παραπάνω 8.2.3. Shortest Remaining Time First (SRTF) Με αυτή τη μέθοδο επιλέγεται η διεργασία με το μικρότερο εναπομείναντα χρόνο. Ο εναπομένων χρόνος είναι ο συνολικός χρόνος καταιγισμού μείον τον χρόνο που παρέμεινε προς εξυπηρέτηση η διεργασία στη CPU. Δεν είναι πρακτική η εφαρμογή της εξαιτίας της αναγκαστικής πρόβλεψης που απαιτείται για τους χρόνους καταιγισμού. Η απόφαση για δρομολόγηση λαμβάνεται όταν μία διεργασία έχει ολοκληρώσει το χρόνο καταιγισμού της στη CPU και μία νέα διεργασία φθάνει στην ουρά των έτοιμων διεργασιών. Η τεχνική αυτή δίνει καλούς χρόνους απόκρισης στις διεργασίες μικρής διάρκειας για αυτό προτιμάται στα multi user συστήματα.

5.1. Μονοπρογραμματισμός Μονοπρογραμματισμός υπάρχει όταν ένας χρήστης μονοπωλεί τη χρήση του συστήματος και όλοι οι πόροι είναι αφιερωμένοι σε αυτόν. (ΑΣΕΠ 2002) Τι είναι ο μικροπρογραμματισμός a) Τρόπος οργάνωσης ενός επεξεργαστή b) Τεχνική σχεδίασης μικρών και γρήγορων προγραμμάτων c) Τεχνική ταχείας μεταγλώττισης πηγαίου κώδικα d) Τεχνική αποθήκευσης δεδομένων σε μαγνητικούς δίσκους A 5.2. Συστήματα Πολυπρογραμματισμού (multiprogramming) Μία από τις πρώτες λύσεις στο πρόβλημα του νεκρού χρόνου ήταν ο πολυπρογραμματισμός. Είναι μία μέθοδος κατά την οποία διαμερίζουμε τη μνήμη σε τμήματα και μετά πολλά προγράμματα φορτώνονται σε αυτήν. Έτσι κάθε πρόγραμμα καταλαμβάνει διαφορετικό τμήμα μνήμης και με τον τρόπο αυτό η CPU παραμένει απασχολημένη συνέχεια και πετυχαίνουμε υψηλή απόδοση. Αυτό γίνεται επειδή όταν μία διεργασία που εκτελείται σταματήσει κάποια άλλη θα ξεκινήσει αμέσως αφού πολλές διεργασίες βρίσκονται στην κύρια μνήμη κάθε στιγμή. Για την επίτευξη του πολυπρογραμματισμού χρειάζεται ειδικό hardware (Memory Management Unit MME) και συγκεκριμένοι αλγόριθμοι. (Σημειώνουμε ότι με τον παραδοσιακό τρόπο του μονοπρογραμματισμού φορτώνονταν κάθε φορά ένα μόνο πρόγραμμα στη μνήμη). 5.2.1. Διεκπεραιωτής ετεροχρονισμένης εκτύπωσης (Spooler) Ο Spooler παρέχει τον τρόπο για ταυτόχρονη χρήση συσκευών Ι/Ο σε συστήματα πολυπρογραμματισμού αφού τα δεδομένα μεταφοράς τοποθετούνται σε μία προσωρινή περιοχή αποθήκευσης έτσι ένα άλλο πρόγραμμα μπορεί να έχει πρόσβαση σε αυτά σε κάποια άλλη στιγμή. Επιτρέπει την επικάλυψη ανάμεσα σε αυτές τις συσκευές και σε ένα πλήθος διεργασιών που απαιτούν εξυπηρέτηση, διατηρώντας έτσι τους ρυθμούς χρήσης της CPU και των συσκευών Ι/Ο υψηλούς. 5.3. Πολυεπεξεργασία (Multiprocessing) Πολυεπεξεργασία είναι η χρήση πολλών ταυτόχρονων διεργασιών σε ένα σύστημα. Τα συστήματα πολυεπεξεργασίας διακρίνονται σε:

Συμπαγώς συνδεδεμένα συστήματα (tighly coupled systems): Περιέχουν πολλαπλές CPUs που συνδέονται σε επίπεδο διαύλου. Έχουν πρόσβαση σε μια κεντρική διαμοιραζόμενη μνήμη ή μπορούν να συμμετέχουν σε μια ιεραρχία μνήμης διαθέτοντας και τοπική και διαμοιραζόμενη μνήμη. Χαλαρά συνδεδεμένα συστήματα (loosely coupled systems): Κάθε επεξεργαστής έχει τη δική του τοπική μνήμη. Οι επεξεργαστές επικοινωνούν μεταξύ τους μέσω γραμμών επικοινωνίας όπως οι δίαυλοι υψηλής ταχύτητας (gigabit Ethernet) ή τηλεφωνικές γραμμές. (ΑΣΕΠ 2002) Όταν σε έναν υπολογιστή με μία CPU το Λειτουργικό Σύστημα επιτρέπει την εκτέλεση περισσότερων από ένα προγραμμάτων, ενός ή περισσότερων χρηστών, το σύστημα ονομάζεται a) Πολυεπεξεργαστικό b) Πολυδιαδικαστικό c) Πολυπρογραμματιζόμενο d) Πολυσυναρτησιακό C Τα Λειτουργικά Συστήματα πολυπρογραμματισμού εμφανίστηκαν πρώτη φορά στους υπολογιστές: a) 1 ης γενιάς b) 2 ης γενιάς c) 3 ης γενιάς d) 4 ης γενιάς C 5.4. Συστήματα Καταμερισμού χρόνου (time sharing) Αυτά τα συστήματα δημιουργήθηκαν περίπου για τους ίδιους λόγους με τα συστήματα πολυπρογραμματισμού. Καταμερισμός χρόνου είναι η διαμοίραση των πόρων του υπολογιστή σε πολλούς χρήστες. Αυτό σημαίνει ότι κάθε χρήστης συνδεόταν μέσω τερματικού στο σύστημα και εισήγαγε σε αυτό τις εντολές. Η CPU εξυπηρετούσε εκ περιτροπής κάθε πρόγραμμα χρήστη. Αυτό το σύστημα χρησιμοποιήθηκε μέχρι το 1980 αλλά μετά πέρασε στο παρασκήνιο μέχρι που χρησιμοποιήθηκε ξανά λόγω του ίντερνετ.

5.5. Multi-user Ένα σύστημα πολλών χρηστών (multi-user) επιτρέπει τη σύνδεση σε πολλούς χρήστες. 5.6. Παράλληλα συστήματα Τα παράλληλα συστήματα είναι συστήματα πολυεπεξεργασίας με περισσότερες από μία CPU σε επικοινωνία μεταξύ τους. Οι μηχανές παράλληλης επεξεργασίας διακρίνονται σε συμμετρικά και μη συμμετρικά συστήματα πολυεπεξεργασίας (symmetric and asymmetric multiprocessors), εξαρτώμενες από το αν όλοι οι επεξεργαστές είναι σε θέση να εκτελούν ολόκληρο τον κώδικα του Λειτουργικού Συστήματος και να έχουν προσπέλαση στις συσκευές Ι/Ο ή αν κάποιοι επεξεργαστές έχουν περισσότερα ή λιγότερα προνόμια. Έτσι έχουμε: Συμμετρική πολυεπεξεργασία: Είναι η πλέον συνήθης προσέγγιση για τη δημιουργία ενός multiprocessor συστήματος, στο οποίο δύο ή περισσότεροι επεξεργαστές εργάζονται μαζί στην ίδια motherboard. Οι επεξεργαστές συντονίζονται και διαμοιράζονται πληροφορίες καθώς επίσης ρυθμίζουν μεταξύ τους το υπολογιστικό φορτίο. Κάθε επεξεργαστής έχει ένα πανομοιότυπο αντίγραφο του Λειτουργικού Συστήματος. Πολλές διεργασίες μπορούν να εκτελούνται ταυτόχρονα χωρίς να υπάρχει μείωση της απόδοσης. Ασύμμετρη πολυεπεξεργασία: Κάθε επεξεργαστής ανατίθεται σε μια ορισμένη διεργασία ενώ ο πρωτεύων (master) επεξεργαστής δρομολογεί και αναθέτει τις διεργασίες στους άλλους (slave) επεξεργαστές. Είναι πιο συνηθισμένη σε πολύ μεγάλα συστήματα. 5.7. Κατανεμημένα συστήματα (Distributed Systems) Τα συστήματα αυτά κατανέμουν τη διαδικασία υπολογισμών σε πολλούς επεξεργαστές. Δίνουν τη ψευδαίσθηση ενός μοναδικού χώρου για την κύρια μνήμη και ενός ξεχωριστού μοναδικού χώρου για τη δευτερεύουσα μνήμη που αλλά είναι μία συλλογή από υπολογιστές που κάθε ένας έχει τη δική της κύρια και δευτερεύουσα μνήμη. Τέτοια μοντέλα είναι τa client-server model, workstation model, processor pool model (πολλοί επεξεργαστές που διεκπεραιώνουν την επεξεργασία).

5.8. Συστήματα πραγματικού χρόνου (Real time systems) Τα συστήματα πραγματικού χρόνου διαθέτουν καλά σχεδιασμένους περιορισμούς χρόνου και χρησιμοποιούνται ως μια συσκευή ελέγχου σε μια συγκεκριμένη εφαρμογή όπως ο έλεγχος επιστημονικών πειραμάτων, ο έλεγχος βιομηχανικών συστημάτων, σε συστήματα επεξεργασίας εικόνας κ.ά. Διακρίνονται σε: Hard real-time systems: Χαρακτηρίζονται από την περιορισμένη χρήση δευτερεύουσας μνήμης και τα δεδομένα αποθηκεύονται σε μνήμες μικρής διάρκειας ή σε ROM. Soft real-time system: Έχουν περιορισμένη χρησιμότητα σε βιομηχανικό έλεγχο και ρομποτική αλλά είναι χρήσιμα σε εφαρμογές multimedia και virtual reality που απαιτούν εξειδικευμένα χαρακτηριστικά Λειτουργικών Συστημάτων. 5.9. Multi-threading Τα νήματα (threads) είναι διεργασίες που τρέχουν στο ίδιο πλαίσιο μνήμης. Τα νήματα περιγράφονται ως lightweight επειδή οι εναλλαγές ανάμεσα στα νήματα δεν προκαλούν αλλαγές του πλαισίου μνήμης αντίθετα με τις διεργασίες που θεωρούνται ως heavyweight. Νήματα τα οποία που συγχρονίζονται και δρομολογούνται για να λειτουργούν συνεργαζόμενα ονομάζονται ίνες (fibers). Η δημιουργία ενός νήματος μοιάζει με τη μέθοδο fork μίας διεργασίας αλλά έχει τις εξής διαφορές: Όταν μία διεργασία προέρχεται από fork τότε μοιράζεται σχετικά λίγα δεδομένα με την διεργασία γονέα που τη δημιούργησε. Τα νήματα μοιράζονται πολλά δεδομένα. Η δημιουργία νέων αντιγράφων διεργασιών μέσω της fork είναι πιο αργή από ότι η δημιουργία ενός νήματος. Ο χρόνος που χρειάζεται να περάσει ο έλεγχος από μία διεργασία σε άλλη είναι μεγαλύτερος από τον αντίστοιχο χρόνο που χρειάζεται από νήμα σε νήμα. Ο χρόνος για να περάσει μία διεργασία δεδομένα σε μία άλλη διεργασία είναι μεγαλύτερος από τον αντίστοιχο χρόνο που χρειάζεται από νήμα σε νήμα. Έχουμε δύο τύπους νημάτων: Νήματα πυρήνα: Είναι γνωστά στο Λειτουργικό Σύστημα και η εναλλαγή μεταξύ νημάτων πυρήνα στην ίδια διεργασία δεν είναι δαπανηρή. Νήματα χρήστη: το Λειτουργικό Σύστημα δε γνωρίζει για τα νήματα χρήστη αλλά είναι ενημερωμένο μόνο για τη διεργασία όπου

περιέχονται. Επίσης το Λειτουργικό Σύστημα δρομολογεί τις διεργασίες και όχι τα νήματα και χρησιμοποιούνται μέσω της βιβλιοθήκης νημάτων. Η πολυνημάτωση είναι χρήσιμη σε εφαρμογές που εκτελούν πολλές ανεξάρτητες μεταξύ τους διεργασίες που δε χρειάζεται να είναι σε σειρά όπως για παράδειγμα ένας web server. (ΑΣΕΠ 2005) Οι ελαφρές (lightweight) διεργασίες (processes) διαφέρουν από τις διεργασίες: a) Στο μέγεθος των προγραμμάτων που εκτελούν b) Στο μέγεθος της χρησιμοποιούμενης από τον χρήστη μνήμης c) Στο πόσο επιβαρύνουν την κεντρική μονάδα επεξεργασίας d) Στις δομές δεδομένων που χρησιμοποιούνται στον κώδικά τους C (ΑΣΕΠ 2005) Σε ποιο Λειτουργικό Σύστημα δεν υπάρχουν εντολές για τη δημιουργία ελαφρών (lightweight) διεργασιών (processes): a) Στο DOS b) Στα Windows c) Στο SOLARIS d) Σε κανένα από τα παραπάνω A Άσκηση Εάν θέλουμε να υπολογίσουμε το αποτέλεσμα που προκύπτει από την παρακάτων σχέση: x=x*12 με αρχική τιμή x=1 για 100000 φορές, είναι προτιμότερο να χρησιμοποιήσουμε έναν σειριακό Η/Υ ή έναν παράλληλο με 1000 επεξεργαστές; Λύση Είναι προτιμότερη η χρήση ενός σειριακού Η/Υ επειδή το πρόβλημα δε μπορεί να διαιρεθεί σε επιμέρους ανεξάρτητα προβλήματα. Η χρήση ενός παράλληλου Η/Υ θα απαιτούσε περισσότερο χρόνο.

5.9.1. Σύγκριση νημάτων και διεργασιών Νήματα Ένα νήμα δε διαθέτει data segment ή heap Ένα νήμα δε μπορεί να υπάρξει μόνο του, πρέπει να υπάρχει στα πλαίσια μιας διεργασίας Υπάρχουν περισσότερα από ένα νήματα σε μία διεργασία, το πρώτο νήμα είναι το κύριο και κατέχει τη στοίβα της διεργασίας Η δημιουργία του καθώς και η εναλλαγή πλαισίου δεν είναι δαπανηρή Αν ένα νήμα εκλείψει τότε η στοίβα του επιστρέφεται στους πόρους του συστήματος Διεργασίες Μία διεργασία έχει code/data/head καθώς και άλλα segments Υπάρχει ένα τουλάχιστον νήμα σε μία διεργασία Τα νήματα σε μία διεργασία διαμοιράζονται code/data/heap και Ι/Ο, αλλά το καθένα έχει τη δική του στοίβα και τους δικούς του καταχωρητές Η δημιουργία τους καθώς και οι εναλλαγές πλαισίου είναι δαπανηρές Αν μια διεργασία εκλείψει τότε οι πόροι της επιστρέφονται στο σύστημα και όλα της τα νήματα εκλείπουν 5.10. Hyper-threading Η Intel υλοποιεί την τεχνολογία hyper-threading που μοιάζει με την πολυνημάτωση, υλοποιείται σε συστήματα με έναν πυρήνα και τα κάνει να εμφανίζονται σαν να διαθέτουν πολλούς επεξεργαστές. Εκείνο το οποίο επιτυγχάνεται είναι η αύξηση του ρυθμού με τον οποίο το σύστημα μπορεί να εναλλάσσεται μεταξύ πολλών νημάτων. Έτσι ενισχύεται ο πολυδιεργασιακός χαρακτήρας του υπολογιστή. 5.11. Multi-tasking Η μέθοδος multi-tasking επιτρέπει πολλές διεργασίες να μοιράζονται πόρους του υπολογιστή ταυτόχρονα δρομολογώντας κάθε διεργασία ώστε να είναι έχει για ένα ορισμένο χρονικό διάστημα αυτή κάποιον συγκεκριμένο πόρο πριν τον παραδώσει σε κάποια άλλη. Σε υπολογιστές με έναν επεξεργαστή έχουμε εικονικό multi-tasking ενώ σε υπολογιστές με πολλούς επεξεργαστές έχουμε πραγματικό multi-tasking αφού κάθε επεξεργαστής μπορεί να τρέχει μία διεργασία.

5.12. Προεκχώρηση (pre-emption) Προεκχώρηση είναι η προσωρινή διακοπή μίας διεργασίας που εκτελείται για να εκτελεστεί πιο ύστερα. Τέτοιο παράδειγμα είναι η εναλλαγή πλαισίου. Preemtive multitasking system είναι όταν ένα σύστημα χρησιμοποιεί τη μέθοδο της προεκχώρησης για να εκτελέσει τις διεργασίες. Τέτοια συστήματα είναι τα Amiga, Windows NT, Linux, Mac OS X, Unix και άλλα. Ποια είναι η λειτουργία του Διεκπαιρωτή ετεροχρονισμένης εκτύπωσης (Spooler); e) Συνδέεται με το modem επιτυγχάνοντας καλύτερη σύνδεση στο διαδίκτυο f) Χρησιμοποιείται σε συστήματα πολυπρογραμματισμού για ταυτόχρονη χρήση συσκευών Ι/Ο g) Είναι πρόγραμμα εφαρμογής για την κατασκευή ιστοσελίδων h) Τίποτα από τα παραπάνω B Τα πολυπρογραμματιζόμενα συστήματα βασίζονται: e) Σε συγκεκριμένα χαρακτηριστικά του υλικού μέρους του Η/Υ (π.χ. διακοπές, Ι/Ο, DMA) f) Στη διαχείριση μνήμης g) Στους αλγόριθμους δρομολόγησης h) Σε όλα τα παραπάνω D 6. Διεργασίες 6.1 Γενικά Ορισμός: Διεργασία είναι ένα πρόγραμμα που τρέχει. Ορισμός: Διεργασία είναι ένα πρόγραμμα που μπορεί να εκτελεστεί σε έναν Η/Υ. Ορισμός: Διεργασία είναι η οντότητα που μπορεί να ανατεθεί και να εκτελεστεί σε έναν επεξεργαστή.

Ορισμός: Διεργασία είναι ένα εκτελέσιμο πρόγραμμα που περιλαμβάνει και τις τρέχουσες τιμές του μετρητή προγράμματος, των καταχωρητών και των μεταβλητών του. Κάθε διεργασία έχει τη δική της ιδεατή CPU. Η διαφορά μεταξύ διεργασίας και προγράμματος είναι ότι ένα πρόγραμμα είναι μία άψυχη οντότητα και μόνον όταν ο επεξεργαστής ξεκινά να εκτελέσει το πρόγραμμα αυτό καθίσταται μια ενεργή οντότητα που ονομάζεται διεργασία. Μια διεργασία μπορεί να καλέσει πολλά προγράμματα και ένα πρόγραμμα μπορεί να αποτελεί τμήμα πολλών διεργασιών. Η διαχείριση των διεργασιών αποτελεί το θεμελιώδες αντικείμενο των Λειτουργικών Συστημάτων. Έτσι πρέπει να παρεμβάλει την εκτέλεση πολλαπλών διεργασιών για τη μεγιστοποίηση χρήσης του επεξεργαστή, να αναθέτει πόρους στις διεργασίες με συγκεκριμένη πολιτική ώστε να αποφεύγεται το αδιέξοδο και τέλος πρέπει να υποστηρίζει την επικοινωνία των διεργασιών και τη δημιουργία διεργασιών από τους χρήστες. (ΑΣΕΠ 2005) Διεργασία (process) είναι: e) Ένα πρόγραμμα f) Ένας επεξεργαστής g) Ένα ειδικό αρχείο h) Ένα πρόγραμμα σε εκτέλεση D Κάθε διεργασία αποτελείται από δύο μέρη: Την εικόνα μνήμης που είναι ο χώρος διευθύνσεών της, Τον πίνακα διεργασιών που αποτελούν τις πληροφορίες της και αποθηκεύονται σε έναν πίνακα που στην ουσία είναι μία δομή συνδεδεμένης λίστας (linked list) με κόμβους τις διεργασίες. Η εικόνα μνήμης αποτελείται από: Την περιοχή κώδικα (text region) που περιέχει τον κώδικα που εκτελεί ο επεξεργαστής. Την περιοχή δεδομένων (data region) όπου εκεί αποθηκεύονται οι μεταβλητές και η δυναμικά παραχωρούμενη μνήμη που ο επεξεργαστής χρησιμοποιεί κατά τη διάρκεια της εκτέλεσης.

Την περιοχή στοίβας (stack region) όπου εκεί αποθηκεύονται οι εντολές και οι τοπικές μεταβλητές για τις ενεργές κλήσεις διαδικασιών. Τα περιεχόμενα στοίβας αυξάνονται καθώς η διεργασία καλεί νέες διαδικασίες και μειώνονται με τον τερματισμών των καλούμενων διαδικασιών. Εδώ πρέπει να σημειώσουμε: Τη μονάδα σύνδεσης (linker) που παίρνει ως είσοδο μία συλλογή από modules αντικειμένων και παράγει ένα module φόρτωσης που αποτελείται από ένα ολοκληρωμένο σύνολο από προγράμματα και δεδομένα που θα περάσουν στον φορτωτή. Σε κάθε module αντικειμένου μπορούν να υπάρχουν αναφορές διεύθυνσης σε θέσεις άλλων modules. Τη μονάδα φόρτωσης (loader) που τοποθετεί στην κύρια μνήμη το module που πρόκειται να φορτωθεί. Έχουμε τρία είδη φόρτωσης: Την απόλυτη φόρτωση: Το υπό φόρτωση module φορτώνεται πάντοτε στην ίδια θέση στην κύρια μνήμη. Οι αναφορές διεύθυνσης θα πρέπει να είναι απόλυτες διευθύνσεις της κύριας μνήμης. Φόρτωση με μετατόπιση (Relocation). Το υπό φόρτωση module μπορεί να τοποθετηθεί οπουδήποτε στην κύρια μνήμη. Ο διερμηνευτής (interpreter) ή ο μεταγλωττιστής (compiler) παράγουν διευθύνσεις σχετικές με ένα γνωστό σημείο που είναι συνήθως η αρχή του προγράμματος. Δυναμική εκτέλεση φόρτωσης: Το υπό φόρτωση module φορτώνεται στην κύρια μνήμη με όλες τις αναφορές σε σχετική μορφή. Οι απόλυτες διευθύνσεις υπολογίζονται κατά τη στιγμή εκτέλεσης μιας εντολής. Η φόρτωση ενός module στη μνήμη μπορεί να γίνει: a) Με απόλυτης φόρτωση όπου το module φορτώνεται πάντα σε διαφορετική θέση b) Με φόρτωση με μετατόπιση όπου το module φορτώνεται πάντα στην ίδια θέση σε σχέση με κάποια σταθερή διεύθυνση c) Με δυναμική εκτέλεση φόρτωσης όπου το module φορτώνεται και οι απόλυτες διευθύνσεις υπολογίζονται κατά της στιγμή εκτέλεσης μίας εντολής d) Και με τις τρεις παραπάνω μεθόδους