Περιεχόμενα ΠΡΟΛΟΓΟΣ 25 1 ΕΙΣΑΓΩΓΗ 31

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Περιεχόμενα ΠΡΟΛΟΓΟΣ 25 1 ΕΙΣΑΓΩΓΗ 31"

Transcript

1

2

3 Περιεχόμενα ΠΡΟΛΟΓΟΣ 25 1 ΕΙΣΑΓΩΓΗ ΤΙ ΕΙΝΑΙ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ; Το λειτουργικό σύστημα ως επεκτεταμένη μηχανή Το λειτουργικό σύστημα ως διαχειριστής πόρων Η ΙΣΤΟΡΙΑ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Η πρώτη γενιά ( ): λυχνίες κενού Η δεύτερη γενιά ( ): τρανζίστορ και συστήματα δέσμης Η τρίτη γενιά ( ): ολοκληρωμένα κυκλώματα και πολυπρογραμματισμός Η τέταρτη γενιά (1980-σήμερα): προσωπικοί υπολογιστές ΓΕΝΙΚΑ ΓΙΑ ΤΟ ΥΛΙΚΟ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επεξεργαστές Μνήμη Δίσκοι Ταινίες Συσκευές εισόδου/εξόδου Δίαυλοι 64

4 8 ΠΕΡΙΕΧΟΜΕΝΑ Εκκίνηση του υπολογιστή Ο ΖΩΟΛΟΓΙΚΟΣ ΚΗΠΟΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Λειτουργικά συστήματα μεγάλων υπολογιστών Λειτουργικά συστήματα διακομιστών Λειτουργικά συστήματα πολυεπεξεργαστών Λειτουργικά συστήματα προσωπικών υπολογιστών Λειτουργικά συστήματα υπολογιστών χειρός Ενσωματωμένα λειτουργικά συστήματα Λειτουργικά συστήματα κόμβων αισθητήρων Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα έξυπνων καρτών ΕΝΝΟΙΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Διεργασίες Χώροι διευθύνσεων Αρχεία Είσοδος/Έξοδος Προστασία Το κέλυφος Η οντογένεση ανακεφαλαιώνει τη φυλογένεση ΚΛΗΣΕΙΣ ΣΥΣΤΗΜΑΤΟΣ Κλήσεις συστήματος για τη διαχείριση διεργασιών Κλήσεις συστήματος για τη διαχείριση αρχείων Κλήσεις συστήματος για τη διαχείριση καταλόγων Διάφορες κλήσεις συστήματος Το Windows Win32 API Η ΔΟΜΗ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Μονολιθικά συστήματα Πολυεπίπεδα συστήματα Μικροπυρήνες Το μοντέλο πελάτη-διακομιστή Εικονικές μηχανές Οι εξωπυρήνες Ο ΚΟΣΜΟΣ ΤΗΣ C Η γλώσσα C Αρχεία-κεφαλίδες Μεγάλα έργα προγραμματισμού 112

5 ΠΕΡΙΕΧΟΜΕΝΑ Το μοντέλο χρόνου εκτέλεσης Η ΕΡΕΥΝΑ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Η ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΥΠΟΛΟΙΠΟΥ ΒΙΒΛΙΟΥ ΜΕΤΡΙΚΕΣ ΜΟΝΑΔΕΣ ΠΕΡΙΛΗΨΗ ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ Το μοντέλο της διεργασίας Δημιουργία διεργασίας Τερματισμός διεργασίας Ιεραρχίες διεργασιών Καταστάσεις διεργασιών Υλοποίηση διεργασιών Μοντελοποίηση του πολυπρογραμματισμού ΝΗΜΑΤΑ Χρήση των νημάτων Το κλασικό μοντέλο των νημάτων Τα νήματα στο POSIX Η υλοποίηση των νημάτων στο χώρο του χρήστη Η υλοποίηση των νημάτων στον πυρήνα Υβριδικές υλοποιήσεις Ενεργοποιήσεις χρονοπρογραμματιστή Αναδυόμενα νήματα Μετατροπή του μονονηματικού κώδικα σε πολυνηματικό ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ Συνθήκες συναγωνισμού Κρίσιμες περιοχές Αμοιβαίος αποκλεισμός μέσω αναμονής με απασχόληση Λήθαργος και αφύπνιση Σηματοφόροι Τα mutex Ελεγκτές Μεταβίβαση μηνυμάτων Φράγματα 192

6 10 ΠΕΡΙΕΧΟΜΕΝΑ 2.4 ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εισαγωγή στο χρονοπρογραμματισμό Χρονοπρογραμματισμός στα συστήματα δέσμης Χρονοπρογραμματισμός στα αλληλεπιδραστικά συστήματα Χρονοπρογραμματισμός στα συστήματα πραγματικού χρόνου Πολιτικές και μηχανισμοί Χρονοπρογραμματισμός νημάτων ΚΛΑΣΙΚΑ ΠΡΟΒΛΗΜΑΤΑ ΔΙΑΔΙΕΡΓΑΣΙΑΚΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ Το πρόβλημα του δείπνου των φιλοσόφων Το πρόβλημα αναγνωστών-γραφέων H ΕΡΕΥΝΑ ΓΙΑ ΤΙΣ ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΤΑ ΝΗΜΑΤΑ ΠΕΡΙΛΗΨΗ ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ ΧΩΡΙΣ ΑΦΑΙΡΕΣΗ ΜΝΗΜΗΣ ΜΙΑ ΑΦΑΙΡΕΣΗ ΜΝΗΜΗΣ: ΧΩΡΟΙ ΔΙΕΥΘΥΝΣΕΩΝ Η έννοια του χώρου διευθύνσεων Εναλλαγή Διαχείριση ελεύθερης μνήμης ΕΙΚΟΝΙΚΗ ΜΝΗΜΗ Σελιδοποίηση Πίνακες σελίδων Επιτάχυνση της σελιδοποίησης Πίνακες σελίδων για μεγάλες μνήμες ΑΛΓΟΡΙΘΜΟΙ ΑΝΤΙΚΑΤΑΣΤΑΣΗΣ ΣΕΛΙΔΩΝ Ο βέλτιστος αλγόριθμος αντικατάστασης σελίδας Ο αλγόριθμος αντικατάστασης σελίδας NRU Ο αλγόριθμος αντικατάστασης σελίδας FIFO Ο αλγόριθμος αντικατάστασης σελίδας της δεύτερης ευκαιρίας Ο αλγόριθμος αντικατάστασης σελίδας του ρολογιού Ο αλγόριθμος αντικατάστασης σελίδας LRU Προσομοίωση του αλγορίθμου LRU με λογισμικό Ο αλγόριθμος αντικατάστασης σελίδας του συνόλου εργασίας 265

7 ΠΕΡΙΕΧΟΜΕΝΑ Ο αλγόριθμος αντικατάστασης σελίδας WSClock Σύνοψη των αλγορίθμων αντικατάστασης σελίδας ΘΕΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΓΙΑ ΤΑ ΣΥΣΤΗΜΑΤΑ ΣΕΛΙΔΟΠΟΙΗΣΗΣ Τοπικές και καθολικές πολιτικές κατανομής Έλεγχος φορτίου Μέγεθος σελίδας Διαχωρισμός των χώρων εντολών και δεδομένων Κοινόχρηστες σελίδες Κοινόχρηστες βιβλιοθήκες Χαρτογραφημένα αρχεία Πολιτική καθαρισμού Διασύνδεση εικονικής μνήμης ΖΗΤΗΜΑΤΑ ΥΛΟΠΟΙΗΣΗΣ Η ανάμιξη του λειτουργικού συστήματος στη σελιδοποίηση Χειρισμός σφαλμάτων σελίδας Αντίγραφα ασφαλείας εντολών Κλείδωμα σελίδων στη μνήμη Δευτερεύουσα μνήμη Διαχωρισμός πολιτικής και μηχανισμού ΤΜΗΜΑΤΟΠΟΙΗΣΗ Υλοποίηση της αμιγούς τμηματοποίησης Τμηματοποίηση με σελιδοποίηση: MULTICS Τμηματοποίηση με σελιδοποίηση: Intel Pentium Η ΕΡΕΥΝΑ ΓΙΑ ΤΗ ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ ΠΕΡΙΛΗΨΗ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ ΑΡΧΕΙΑ Ονομασία αρχείων Δομή των αρχείων Τύποι αρχείων Πρόσβαση στα αρχεία Χαρακτηριστικά αρχείων Λειτουργίες αρχείων Παράδειγμα προγράμματος που χρησιμοποιεί κλήσεις συστήματος αρχείων 329

8 12 ΠΕΡΙΕΧΟΜΕΝΑ 4.2 ΚΑΤΑΛΟΓΟΙ Συστήματα καταλόγων ενός επιπέδου Ιεραρχικά συστήματα καταλόγων Ονόματα διαδρομών Λειτουργίες καταλόγων ΥΛΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ Διάταξη του συστήματος αρχείων Υλοποίηση των αρχείων Η υλοποίηση των καταλόγων Κοινόχρηστα αρχεία Συστήματα αρχείων με καταγραφική δομή Ημερολογιακά συστήματα αρχείων Εικονικά συστήματα αρχείων ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ Διαχείριση χώρου δίσκου Αντίγραφα ασφαλείας του συστήματος αρχείων Συνέπεια των συστημάτων αρχείων Επιδόσεις των συστημάτων αρχείων Ανασυγκρότηση δίσκων ΠΑΡΑΔΕΙΓΜΑΤΑ ΣΥΣΤΗΜΑΤΩΝ ΑΡΧΕΙΩΝ Συστήματα αρχείων για CD-ROM Το σύστημα αρχείων του MS-DOS Το σύστημα αρχείων UNIX V Η ΕΡΕΥΝΑ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ ΠΕΡΙΛΗΨΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΑΡΧΕΣ ΤΟΥ ΥΛΙΚΟΥ ΕΙΣΟΔΟΥ/ΕΞΟΔΟΥ Συσκευές Ε/Ε Ελεγκτές συσκευών E/E με χαρτογράφηση στη μνήμη Άμεση προσπέλαση μνήμης (DMA) Και πάλι οι διακοπές 412

9 ΠΕΡΙΕΧΟΜΕΝΑ ΑΡΧΕΣ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Ε/Ε Στόχοι του λογισμικού Ε/Ε Προγραμματισμένη Ε/Ε Ε/Ε οδηγούμενη από διακοπές Ε/Ε με τη χρήση DMA ΕΠΙΠΕΔΑ ΛΟΓΙΣΜΙΚΟΥ Ε/Ε Χειριστές διακοπών Οδηγοί συσκευών Λογισμικό Ε/Ε ανεξάρτητο από τη συσκευή Λογισμικό Ε/Ε χώρου χρήστη ΔΙΣΚΟΙ Το υλικό των δίσκων Διαμόρφωση δίσκου Αλγόριθμοι χρονοπρογραμματισμού βραχίονα δίσκου Χειρισμός σφαλμάτων Ευσταθής αποθήκευση ΡΟΛΟΓΙΑ Το υλικό των ρολογιών Το λογισμικό των ρολογιών Χρονόμετρα λογισμικού ΔΙΑΣΥΝΔΕΣΕΙΣ ΜΕ ΤΟ ΧΡΗΣΤΗ: ΠΛΗΚΤΡΟΛΟΓΙΟ, ΠΟΝΤΙΚΙ, ΟΘΟΝΗ Λογισμικό εισόδου Λογισμικό εξόδου ΜΙΚΡΟΠΕΛΑΤΕΣ ΔΙΑΧΕΙΡΙΣΗ ΙΣΧΥΟΣ Ζητήματα υλικού Ζητήματα που αφορούν το λειτουργικό σύστημα Ζητήματα προγραμμάτων εφαρμογών Η ΕΡΕΥΝΑ ΓΙΑ ΤΗΝ ΕΙΣΟΔΟ/ΕΞΟΔΟ ΠΕΡΙΛΗΨΗ 509

10 14 ΠΕΡΙΕΧΟΜΕΝΑ 6 ΑΔΙΕΞΟΔΑ ΠΟΡΟΙ Προεκτοπίσιμοι και μη προεκτοπίσιμοι πόροι Απόκτηση πόρων ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΔΙΕΞΟΔΑ Συνθήκες εμφάνισης αδιεξόδου πόρων Μοντελοποίηση των αδιεξόδων Ο ΑΛΓΟΡΙΘΜΟΣ ΤΗΣ ΣΤΡΟΥΘΟΚΑΜΗΛΟΥ ΕΝΤΟΠΙΣΜΟΣ ΚΑΙ ΑΝΑΚΑΜΨΗ ΑΠΟ ΑΔΙΕΞΟΔΑ Εντοπισμός αδιεξόδων όταν υπάρχει ένας πόρος από κάθε είδος Εντοπισμός αδιεξόδων όταν υπάρχουν πολλοί πόροι από κάθε είδος Ανάκαμψη από αδιέξοδο ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΩΝ Τροχιές πόρων Ασφαλείς και ανασφαλείς καταστάσεις Ο αλγόριθμος του τραπεζίτη για ένα μοναδικό πόρο Ο αλγόριθμος του τραπεζίτη για πολλούς πόρους ΑΠΟΤΡΟΠΗ ΑΔΙΕΞΟΔΩΝ Προσβολή της συνθήκης του αμοιβαίου αποκλεισμού Προσβολή της συνθήκης δέσμευσης και αναμονής Προσβολή της συνθήκης μη προεκτόπισης Προσβολή της συνθήκης κυκλικής αναμονής ΑΛΛΑ ΘΕΜΑΤΑ Κλείδωμα σε δύο φάσεις Αδιέξοδα επικοινωνίας Ενεργό αδιέξοδο Λιμοκτονία H ΕΡΕΥΝΑ ΓΙΑ ΤΑ ΑΔΙΕΞΟΔΑ ΠΕΡΙΛΗΨΗ 548

11 ΠΕΡΙΕΧΟΜΕΝΑ 15 7 ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΠΟΛΥΜΕΣΩΝ ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΟΛΥΜΕΣΑ ΑΡΧΕΙΑ ΠΟΛΥΜΕΣΩΝ Κωδικοποίηση βίντεο Κωδικοποίηση ήχου ΣΥΜΠΙΕΣΗ ΒΙΝΤΕΟ Το πρότυπο JPEG Το πρότυπο MPEG ΣΥΜΠΙΕΣΗ ΗΧΟΥ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ ΣΤΑ ΠΟΛΥΜΕΣΑ Χρονοπρογραμματισμός ομογενών διεργασιών Γενικός χρονοπρογραμματισμός σε πραγματικό χρόνο Χρονοπρογραμματισμός RMS Ο χρονοπρογραμματισμός EDF ΥΠΟΔΕΙΓΜΑΤΑ ΣΥΣΤΗΜΑΤΩΝ ΑΡΧΕΙΩΝ ΠΟΛΥΜΕΣΩΝ Οι λειτουργίες ελέγχου των VCR Βίντεο σχεδόν κατά παραγγελία Βίντεο σχεδόν κατά παραγγελία με λειτουργίες VCR ΤΟΠΟΘΕΤΗΣΗ ΑΡΧΕΙΩΝ Τοποθέτηση ενός αρχείου σε ένα μοναδικό δίσκο Δύο εναλλακτικές στρατηγικές οργάνωσης αρχείων Τοποθέτηση αρχείων για βίντεο σχεδόν κατά παραγγελία Τοποθέτηση πολλών αρχείων σε ένα μοναδικό δίσκο Τοποθέτηση αρχείων σε πολλούς δίσκους ΧΡΗΣΗ ΚΡΥΦΗΣ ΜΝΗΜΗΣ Τοποθέτηση μπλοκ στην κρυφή μνήμη Τοποθέτηση αρχείων στην κρυφή μνήμη ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΣΚΟΥ ΓΙΑ ΠΟΛΥΜΕΣΑ Στατικός χρονοπρογραμματισμός δίσκου Δυναμικός χρονοπρογραμματισμός δίσκου 607

12 16 ΠΕΡΙΕΧΟΜΕΝΑ 7.10 Η ΕΡΕΥΝΑ ΣΤΑ ΠΟΛΥΜΕΣΑ ΠΕΡΙΛΗΨΗ ΣΥΣΤΗΜΑΤΑ ΠΟΛΛΑΠΛΩΝ ΕΠΕΞΕΡΓΑΣΤΩΝ ΠΟΛΥΕΠΕΞΕΡΓΑΣΤΕΣ Υλικό πολυεπεξεργαστών Τύποι λειτουργικών συστημάτων για πολυεπεξεργαστές Συγχρονισμός πολυεπεξεργαστών Χρονοπρογραμματισμός πολυεπεξεργαστών ΠΟΛΥ-ΥΠΟΛΟΓΙΣΤΕΣ Υλικό πολυ-υπολογιστών Λογισμικό επικοινωνίας χαμηλού επιπέδου Λογισμικό επικοινωνίας επιπέδου χρήστη Κλήση απομακρυσμένων διαδικασιών Kατανεμημένη κοινόχρηστη μνήμη Χρονοπρογραμματισμός πολυ-υπολογιστών Εξισορρόπηση φορτίου ΕΙΚΟΝΙΚΟΠΟΙΗΣΗ Απαιτήσεις της εικονικοποίησης Υπερεπόπτες τύπου Υπερεπόπτες τύπου Παρα-εικονικοποίηση Εικονικοποίηση μνήμης Εικονικοποίηση Ε/Ε Εικονικές εφαρμογές Οι εικονικές μηχανές σε πολυπύρηνες CPU Ζητήματα άδειας χρήσης ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Υλικό δικτύων Υπηρεσίες δικτύων και πρωτόκολλα Ενδιάμεσο λογισμικό που βασίζεται σε έγγραφα Ενδιάμεσο λογισμικό που βασίζεται σε σύστημα αρχείων Ενδιάμεσο λογισμικό που βασίζεται σε αντικείμενα Ενδιάμεσο λογισμικό που βασίζεται σε συντονισμό Πλέγματα 702

13 ΠΕΡΙΕΧΟΜΕΝΑ H ΕΡΕΥΝΑ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΠΟΛΛΑΠΛΩΝ ΕΠΕΞΕΡΓΑΣΤΩΝ ΠΕΡΙΛΗΨΗ ΑΣΦΑΛΕΙΑ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΑΣΦΑΛΕΙΑΣ Απειλές Εισβολείς Απώλεια δεδομένων από ατύχημα ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΚΡΥΠΤΟΓΡΑΦΙΑΣ Κρυπτογραφία μυστικού κλειδιού Κρυπτογραφία δημόσιου κλειδιού Μονόδρομες συναρτήσεις Ψηφιακές υπογραφές Υπομονάδες έμπιστης πλατφόρμας ΜΗΧΑΝΙΣΜΟΙ ΠΡΟΣΤΑΣΙΑΣ Τομείς προστασίας Λίστες ελέγχου πρόσβασης Δυνατότητες Έμπιστα συστήματα Έμπιστη υπολογιστική βάση Τυπικά μοντέλα ασφαλών συστημάτων Πολυεπίπεδη ασφάλεια Συγκεκαλυμμένα κανάλια ΠΙΣΤΟΠΟΙΗΣΗ ΤΑΥΤΟΤΗΤΑΣ Πιστοποίηση ταυτότητας με τη χρήση κωδικών πρόσβασης Πιστοποίηση ταυτότητας με τη χρήση φυσικού αντικειμένου Πιστοποίηση ταυτότητας με τη χρήση βιομετρίας ΕΠΙΘΕΣΕΙΣ ΑΠΟ ΤΟ ΕΣΩΤΕΡΙΚΟ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Λογικές βόμβες Καταπακτές Παραπλανητική σύνδεση ΑΞΙΟΠΟΙΗΣΗ ΣΦΑΛΜΑΤΩΝ ΚΩΔΙΚΑ Υπερχείλιση προσωρινής μνήμης Επιθέσεις με συμβολοσειρές μορφοποίησης Επιθέσεις με επιστροφή στη libc 769

14 18 ΠΕΡΙΕΧΟΜΕΝΑ Επιθέσεις υπερχείλισης ακεραίων Επιθέσεις με παρεμβολή κώδικα Επιθέσεις με κλιμάκωση προνομίων ΚΑΚΟΒΟΥΛΟ ΛΟΓΙΣΜΙΚΟ Δούρειοι ίπποι Ιοί Σκουλήκια Λογισμικό κατασκοπίας Rootkit ΤΡΟΠΟΙ ΑΜΥΝΑΣ Τείχη προστασίας Τεχνικές εναντίον των ιών και προστασίας των ιών από αυτές Υπογραφή κώδικα Φυλάκιση Ανίχνευση εισβολής με βάση μοντέλο Ενθυλάκωση κινητού κώδικα Η ασφάλεια στην Java Η ΕΡΕΥΝΑ ΓΙΑ ΤΗΝ ΑΣΦΑΛΕΙΑ ΠΕΡΙΛΗΨΗ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ 1: LINUX Η ΙΣΤΟΡΙΑ ΤΩΝ UNIX ΚΑΙ LINUX UNICS PDP-11 UNIX Φορητό UNIX Berkeley UNIX Πρότυπο UNIX MINIX Linux ΓΕΝΙΚΑ ΓΙΑ ΤΟ LINUX Οι στόχοι του Linux Οι διασυνδέσεις του Linux Το κέλυφος Βοηθητικά προγράμματα του Linux Η δομή του πυρήνα 850

15 ΠΕΡΙΕΧΟΜΕΝΑ ΟΙ ΔΙΕΡΓΑΣΙΕΣ ΣΤΟ LINUX Θεμελιώδεις έννοιες Κλήσεις συστήματος για τη διαχείριση διεργασιών στο Linux Υλοποίηση διεργασιών και νημάτων στο Linux Ο χρονοπρογραμματισμός στο Linux Η εκκίνηση του Linux Η ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ ΣΤΟ LINUX Θεμελιώδεις έννοιες Κλήσεις συστήματος για τη διαχείριση μνήμης στο Linux Υλοποίηση της διαχείρισης μνήμης στο Linux Η σελιδοποίηση στο Linux ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΣΤΟ LINUX Θεμελιώδεις έννοιες Δικτύωση Κλήσεις συστήματος για είσοδο/έξοδο στο Linux Υλοποίηση της εισόδου/εξόδου στο Linux Οι υπομονάδες στο Linux ΤΟ ΣΥΣΤΗΜΑ ΑΡΧΕΙΩΝ ΤΟΥ LINUX Θεμελιώδεις έννοιες Κλήσεις συστήματος αρχείων στο Linux Υλοποίηση του συστήματος αρχείων του Linux NFS: Το σύστημα αρχείων δικτύου Η ΑΣΦΑΛΕΙΑ ΣΤΟ LINUX Θεμελιώδεις έννοιες Κλήσεις συστήματος που αφορούν την ασφάλεια στο Linux Υλοποίηση της ασφάλειας στο Linux ΠΕΡΙΛΗΨΗ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ 2: WINDOWS VISTA Η ΙΣΤΟΡΙΑ ΤΩΝ WINDOWS VISTA Δεκαετία 1980: MS-DOS Δεκαετία 1990: Windows βασισμένα σε MS-DOS Δεκαετία 2000: Windows βασισμένα σε NT Windows Vista 941

16 20 ΠΕΡΙΕΧΟΜΕΝΑ 11.2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΤΑ WINDOWS VISTA Η εγγενής διασύνδεση προγραμματισμού εφαρμογών των NT Η διασύνδεση προγραμματισμού εφαρμογών Win Το μητρώο των Windows ΔΟΜΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Η δομή του λειτουργικού συστήματος Εκκίνηση των Windows Vista Υλοποίηση του διαχειριστή αντικειμένων Υποσυστήματα, DLL, και υπηρεσίες κατάστασης χρήστη ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΣΤΑ WINDOWS VISTA Θεμελιώδεις έννοιες Κλήσεις API για τη διαχείριση εργασιών, διεργασιών, νημάτων, και ινών Υλοποίηση διεργασιών και νημάτων ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Θεμελιώδεις έννοιες Κλήσεις συστήματος για τη διαχείριση μνήμης Υλοποίηση της διαχείρισης μνήμης ΧΡΗΣΗ ΚΡΥΦΗΣ ΜΝΗΜΗΣ ΣΤΑ WINDOWS VISTA ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΣΤΑ WINDOWS VISTA Θεμελιώδεις έννοιες Κλήσεις API εισόδου/εξόδου Υλοποίηση της Ε/Ε ΤΟ ΣΥΣΤΗΜΑ ΑΡΧΕΙΩΝ ΤΩΝ WINDOWS ΝΤ Θεμελιώδεις έννοιες Υλοποίηση του συστήματος αρχείων των ΝΤ Η ΑΣΦΑΛΕΙΑ ΣΤΑ WINDOWS VISTA Θεμελιώδεις έννοιες Κλήσεις API που αφορούν την ασφάλεια Υλοποίηση της ασφάλειας ΠΕΡΙΛΗΨΗ 1060

17 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ 3: ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ SYMBIAN Η ΙΣΤΟΡΙΑ ΤΟΥ ΛΕΙΤΟΥΡΓΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ SYMBIAN Οι ρίζες του Symbian: Psion και EPOC Symbian OS έκδοση Symbian OS έκδοση Το Symbian OS σήμερα ΓΕΝΙΚΑ ΓΙΑ ΤΟ SYMBIAN OS Αντικειμενοστρέφεια Σχεδιασμός μικροπυρήνα Ο νανοπυρήνας του Symbian OS Προσπέλαση πόρων πελάτη/διακομιστή Δυνατότητες μεγαλύτερου λειτουργικού συστήματος Επικοινωνία και πολυμέσα ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΣΤΟ SYMBIAN OS Νήματα και νανονήματα Διεργασίες Ενεργά αντικείμενα Διαδιεργασιακή επικοινωνία ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Συστήματα χωρίς εικονική μνήμη Πώς απευθύνεται στη μνήμη το Symbian OS ΕΙΣΟΔΟΣ ΚΑΙ ΕΞΟΔΟΣ Οδηγοί συσκευών Επεκτάσεις πυρήνα Άμεση προσπέλαση μνήμης Ειδική περίπτωση: μέσα αποθήκευσης Ανασταλτική Ε/Ε Αφαιρούμενα μέσα ΣΥΣΤΗΜΑΤΑ ΑΠΟΘΗΚΕΥΣΗΣ Συστήματα αρχείων κινητών συσκευών Συστήματα αρχείων του Symbian OS Ασφάλεια και προστασία του συστήματος αρχείων Η ΑΣΦΑΛΕΙΑ ΣΤΟ SYMBIAN OS 1089

18 22 ΠΕΡΙΕΧΟΜΕΝΑ 12.8 Η ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΟ SYMBIAN OS Η βασική υποδομή Μια πιο κοντινή ματιά στην υποδομή ΠΕΡΙΛΗΨΗ ΣΧΕΔΙΑΣΗ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Η ΦΥΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ ΣΧΕΔΙΑΣΗΣ Στόχοι Γιατί είναι δύσκολο να σχεδιαστεί ένα λειτουργικό σύστημα; ΣΧΕΔΙΑΣΗ ΔΙΑΣΥΝΔΕΣΕΩΝ Καθοδηγητικές αρχές Υποδείγματα Η διασύνδεση κλήσεων συστήματος Η ΥΛΟΠΟΙΗΣΗ Η δομή του συστήματος Μηχανισμός ή πολιτική; Ορθογωνικότητα Ονομασία Χρόνος δέσμευσης Στατικές ή δυναμικές δομές; Αναλυτική ή συνθετική υλοποίηση; Χρήσιμες τεχνικές ΑΠΟΔΟΣΗ Γιατί είναι αργά τα λειτουργικά συστήματα; Τι πρέπει να βελτιστοποιηθεί; Συμβιβασμοί χώρου-χρόνου Κρυφή μνήμη Υποδείξεις Εκμετάλλευση της τοπικότητας Η βελτιστοποίηση της συνηθισμένης περίπτωσης ΔΙΑΧΕΙΡΙΣΗ ΕΡΓΩΝ Ο μυθικός ανθρωπομήνας Η δομή της ομάδας Ο ρόλος της πείρας Όχι ασημένιες σφαίρες 1142

19

20 162 ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΚΕΦ ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ Οι διεργασίες χρειάζεται συχνά να επικοινωνούν με άλλες διεργασίες. Για παράδειγμα, σε έναν αγωγό κελύφους (shell pipeline), η έξοδος της πρώτης διεργασίας αποτελεί την είσοδο της δεύτερης, κ.ο.κ. μέχρι το τέλος της γραμμής διαταγής. Επομένως, είναι απαραίτητη η επικοινωνία ανάμεσα στις διεργασίες, η οποία είναι προτιμότερο να γίνεται με καλά δομημένο τρόπο, χωρίς τη χρήση διακοπών. Στις επόμενες ενότητες θα εξετάσουμε τα θέματα που σχετίζονται με τη διαδιεργασιακή επικοινωνία (InterProcess Communication ή IPC). Με λίγα λόγια, εδώ υπάρχουν τρία βασικά ζητήματα. Το πρώτο το θίξαμε πιο πάνω: με ποιο τρόπο μια διεργασία μπορεί να μεταβιβάσει πληροφορίες σε μια άλλη. Το δεύτερο έχει σχέση με την εξασφάλιση ότι δύο ή περισσότερες διεργασίες δεν εμποδίζουν η μια την άλλη όταν εκτελούν κρίσιμες ενέργειες, όπως για παράδειγμα δύο διεργασίες σε ένα σύστημα κράτησης αεροπορικών θέσεων που προσπαθούν να δεσμεύσουν την τελευταία διαθέσιμη θέση για διαφορετικούς επιβάτες. Το τρίτο ζήτημα αφορά την κατάλληλη αλληλουχία ενεργειών όταν υπάρχουν εξαρτήσεις: αν η διεργασία Α παράγει δεδομένα και η διεργασία Β τα τυπώνει, η διεργασία Β πρέπει να περιμένει να εξαχθεί κάποια ποσότητα δεδομένων από την Α πριν ξεκινήσει την εκτύπωση. Θα εξετάσουμε όλα τα ζητήματα αυτά, ξεκινώντας από την επόμενη ενότητα. Είναι επίσης σημαντικό να αναφέρουμε ότι δύο από τα ζητήματα αυτά ισχύουν θαυμάσια και στα νήματα. Το πρώτο η μεταβίβαση πληροφοριών είναι εύκολη υπόθεση για τα νήματα που μοιράζονται έναν κοινό χώρο διευθύνσεων (νήματα διαφορετικών χώρων διευθύνσεων που επιχειρούν να επικοινωνήσουν υπάγονται στην επικοινωνία των διεργασιών). Τα άλλα δύο ζητήματα όμως η αποφυγή παρεμπόδισης και η κατάλληλη ακολουθία ενεργειών ισχύουν εξίσου καλά και στα νήματα. Εμφανίζονται τα ίδια προβλήματα και εφαρμόζονται οι ίδιες λύσεις. Στη συνέχεια θα εξετάσουμε τα ζητήματα στο περιβάλλον των διεργασιών, αλλά σημειώστε ότι τα ίδια προβλήματα και οι ίδιες λύσεις εφαρμόζονται και στην περίπτωση των νημάτων Συνθήκες συναγωνισμού Σε ορισμένα λειτουργικά συστήματα, οι συνεργαζόμενες διεργασίες μοιράζονται συχνά την ίδια περιοχή αποθήκευσης, στην οποία η κάθε διεργασία μπορεί να διαβάσει και να γράψει. Η περιοχή αυτή μπορεί να βρίσκεται στην κύρια μνήμη (πιθανόν σε μια δομή δεδομένων του πυρήνα) ή να είναι ένα κοινόχρηστο αρχείο δίσκου η θέση αυτής της περιοχής δεν αλλάζει τη φύση της επικοινωνίας ούτε τα ζητήματα που προκύπτουν. Για να δούμε πώς λειτουργεί στην πράξη η διαδιεργασιακή επικοινωνία, θα μελετήσουμε ένα απλό αλλά συνηθισμένο παράδειγμα: έναν παροχετευτή εκτυπώσεων (print spooler). Όταν μια διεργασία θέλει να τυπώσει ένα αρχείο, καταχωρίζει το όνομα του αρχείου σε έναν ειδικό κατάλογο παροχέτευσης (spooler directory). Μια άλλη διεργασία, ο δαίμονας εκτυπωτή (printer daemon), ελέγχει περιοδικά αν υπάρχουν αρχεία που πρέπει να τυπωθούν και, αν ναι, τα τυπώνει και αφαιρεί τα ονόματά τους από τον κατάλογο. Υποθέστε ότι ο κατάλογος παροχέτευσης διαθέτει ένα πλήθος από υποδοχές, που αριθμούνται ως 0, 1, 2,..., κάθε μία από τις οποίες μπορεί να κρατήσει ένα όνομα αρχείου. Υποθέστε ακόμη ότι διατίθενται δύο κοινόχρηστες μεταβλητές, η out που δείχνει στο επόμενο

21 ΕΝ. 2.3 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ 163 αρχείο που πρόκειται να τυπωθεί, και η in, η οποία δείχνει στην επόμενη ελεύθερη υποδοχή του καταλόγου. Οι δύο αυτές μεταβλητές μπορούν να διατηρούνται σε ένα αρχείο δύο λέξεων που είναι διαθέσιμο σε όλες τις διεργασίες. Σε μια συγκεκριμένη στιγμή, οι υποδοχές 0 έως 3 είναι κενές (τα αντίστοιχα αρχεία έχουν ήδη τυπωθεί), ενώ οι υποδοχές 4 έως 6 είναι κατειλημμένες (περιέχουν τα ονόματα των αρχείων που έχουν τοποθετηθεί στην ουρά για να τυπωθούν). Σχεδόν ταυτόχρονα, οι διεργασίες Α και Β αποφασίζουν να προσθέσουν στην ουρά ένα αρχείο προς εκτύπωση. Η συγκεκριμένη κατάσταση παρουσιάζεται στην Εικόνα ÊáôÜëïãïò ðáñï Ýôåõóçò Äéåñãáóßá A abc prog.c prog.n out=4 in=7 Äéåñãáóßá B Εικόνα Δύο διεργασίες επιχειρούν ταυτόχρονα να προσπελάσουν κοινή μνήμη. Εκεί που ισχύει ο νόμος του Murphy θα μπορούσαν να συμβούν τα εξής: Η διεργασία Α διαβάζει τη μεταβλητή in και αποθηκεύει την τιμή της, που είναι 7, σε μια τοπική μεταβλητή που ονομάζεται next_free_slot. Ακριβώς εδώ συμβαίνει μια διακοπή ρολογιού και η CPU αποφασίζει ότι η διεργασία Α εκτελέστηκε για αρκετό χρόνο, οπότε μεταφέρεται στην εκτέλεση της διεργασίας Β. Αυτή η διεργασία διαβάζει επίσης τη μεταβλητή in λαμβάνοντας επίσης την τιμή 7, την οποία αποθηκεύει στη δική της τοπική μεταβλητή next_ free_slot. Τη στιγμή αυτή, οι δύο διεργασίες πιστεύουν ότι η επόμενη ελεύθερη υποδοχή είναι η 7. Η διεργασία Β συνεχίζει τώρα την εκτέλεσή της. Αποθηκεύει το όνομα του αρχείου της στην υποδοχή 7 και αυξάνει την τιμή της μεταβλητής in σε 8. Στη συνέχεια εκτελεί άλλες λειτουργίες. Τέλος, η διεργασία Α εκτελείται ξανά, ξεκινώντας από το σημείο που βρισκόταν πριν από τη διακοπή. Ελέγχει τη μεταβλητή next_free_slot, η οποία έχει τιμή 7, και καταχωρίζει το όνομα του δικού της αρχείου στην υποδοχή 7, διαγράφοντας το όνομα του αρχείου που η διεργασία Β τοποθέτησε εκεί. Στη συνέχεια υπολογίζει την τιμή της πράξης next_free_slot + 1, βρίσκει την τιμή 8, και την καταχωρίζει στη μεταβλητή in. Ο κατάλογος παροχέτευσης είναι εσωτερικά συνεπής, ο δαίμονας του εκτυπωτή δε θα παρατηρήσει κάτι ασυνήθιστο, αλλά η διεργασία Β δε θα δεχθεί ποτέ καμία έξοδο. Ο χρήστης Β θα περιμένει γεμάτος αγωνία δίπλα στον εκτυπωτή για χρόνια, περιμένοντας μια έξοδο που δε θα έλθει ποτέ. Αυτές οι καταστάσεις, στις οποίες δύο ή περισσότερες διεργασίες διαβάζουν ή γράφουν κοινά δεδομένα και το τελικό αποτέλεσμα εξαρτάται από το πότε ακριβώς θα εκτελεστεί η κάθε μία, ονομάζονται Αν υπάρχει η πιθανότητα κάτι να πάει στραβά, θα πάει.

22 164 ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΚΕΦ.2 συνθήκες συναγωνισμού (race conditions). Η αποσφαλμάτωση προγραμμάτων που περιλαμβάνουν συνθήκες συναγωνισμού δεν είναι καθόλου ευχάριστη. Τα αποτελέσματα των περισσότερων δοκιμαστικών εκτελέσεων είναι ολόσωστα, αλλά εντελώς αναπάντεχα συμβαίνει κάτι παράξενο και ανεξήγητο Κρίσιμες περιοχές Πώς μπορούμε να αποφύγουμε τις συνθήκες συναγωνισμού; Το πιο σημαντικό ζήτημα για την αποφυγή των προβλημάτων, τόσο στο θέμα που εξετάζουμε όσο και στις περιπτώσεις που υπάρχει κοινή χρήση μνήμης, αρχείων, ή οποιασδήποτε άλλης οντότητας, είναι η εύρεση κάποιας μεθόδου ώστε να μην επιτρέπεται σε περισσότερες από μία διεργασίες η ανάγνωση ή η εγγραφή των κοινών δεδομένων, την ίδια χρονική στιγμή. Με άλλα λόγια, αυτό που χρειαζόμαστε είναι ο αμοιβαίος αποκλεισμός (mutual exclusion), δηλαδή μια μέθοδος που θα εξασφαλίζει ότι, αν μια διεργασία χρησιμοποιεί μια κοινή μεταβλητή ή αρχείο, οι άλλες διεργασίες θα αποκλείονται από την εκτέλεση της ίδιας ενέργειας. Στο προηγούμενο παράδειγμα, το πρόβλημα προήλθε από το γεγονός ότι η διεργασία Β χρησιμοποίησε μια κοινή μεταβλητή, πριν η Α ολοκληρώσει τις ενέργειες που είχαν σχέση με τη μεταβλητή αυτή. Η επιλογή των κατάλληλων θεμελιωδών λειτουργιών για την επίτευξη του αμοιβαίου αποκλεισμού είναι ένα σημαντικό θέμα για το σχεδιασμό λειτουργικών συστημάτων, και ένα θέμα που θα αναλύσουμε στις επόμενες ενότητες. Το πρόβλημα της αποφυγής συνθηκών συναγωνισμού μπορεί να εκφραστεί και με αφαιρετικό τρόπο. Υπάρχουν χρονικά διαστήματα που οι διεργασίες απασχολούνται με εσωτερικούς υπολογισμούς και άλλα θέματα που δεν οδηγούν σε συνθήκες συναγωνισμού. Σε άλλα όμως χρονικά διαστήματα, οι διεργασίες πρέπει να προσπελάσουν κοινόχρηστες περιοχές μνήμης ή αρχεία, ή να εκτελέσουν ενέργειες που είναι δυνατόν να οδηγήσουν σε συναγωνισμό. Το τμήμα ενός προγράμματος, στο οποίο γίνεται προσπέλαση κοινόχρηστης μνήμης, ονομάζεται κρίσιμη περιοχή (critical region) ή κρίσιμο τμήμα (critical section). Αν μπορούσαμε να εξασφαλίσουμε ότι ποτέ δύο ή περισσότερες διεργασίες δε θα βρίσκονται ταυτόχρονα σε κρίσιμες περιοχές, θα αποφεύγαμε το συναγωνισμό. Αν και η απαίτηση αυτή αποφεύγει τις συνθήκες συναγωνισμού, δεν είναι επαρκής για τη σωστή και αποδοτική συνεργασία παράλληλων διεργασιών που χρησιμοποιούν κοινόχρηστα δεδομένα. Μια ικανοποιητική λύση προϋποθέτει τις εξής τέσσερις συνθήκες: 1. Δύο διεργασίες δε βρίσκονται ποτέ ταυτόχρονα στις κρίσιμες περιοχές τους. 2. Δεν επιτρέπονται παραδοχές σε ό,τι αφορά την ταχύτητα ή το πλήθος των επεξεργαστών. 3. Διεργασία που δε βρίσκεται σε κρίσιμο τμήμα δεν επιτρέπεται να μπλοκάρει άλλες διεργασίες. 4. Δεν επιτρέπεται μια διεργασία να αναμένει επαόριστον να μπει στην κρίσιμη περιοχή της. Από αφαιρετική σκοπιά, η συμπεριφορά που χρειαζόμαστε παρουσιάζεται στην Εικόνα Εδώ, η διεργασία Α εισέρχεται στην κρίσιμη περιοχή της τη χρονική στιγμή T 1. Λίγο αρ-

23 ΕΝ. 2.3 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ 165 γότερα, τη χρονική στιγμή T 2, η διεργασία Β προσπαθεί να μπει στην κρίσιμη περιοχή της, αλλά αποτυγχάνει καθώς μια άλλη διεργασία βρίσκεται ήδη στην κρίσιμη περιοχή της και αυτό επιτρέπεται μόνο για μία διεργασία κάθε φορά. Συνεπώς, η Β αναστέλλεται προσωρινά μέχρι τη χρονική στιγμή T 3, στην οποία η Α βγαίνει από την κρίσιμη περιοχή της και επιτρέπει έτσι στη Β να μπει αμέσως στη δική της. Τέλος, η Β βγαίνει (τη χρονική στιγμή T 4 ) από τη δική της κρίσιμη περιοχή και επιστρέφουμε στην αρχική κατάσταση όπου δεν υπάρχουν διεργασίες που βρίσκονται στην κρίσιμη περιοχή τους. Ç Á åéóýñ åôáé óôçí êñßóéìç ðåñéï Þ Ç Á âãáßíåé áðü ôçí êñßóéìç ðåñéï Þ Äéåñãáóßá Á Ç Â áðïðåéñüôáé íá åéóýëèåé óôçí êñßóéìç ðåñéï Þ Ç Â åéóýñ åôáé óôçí êñßóéìç ðåñéï Þ Ç Â âãáßíåé áðü ôçí êñßóéìç ðåñéï Þ Äéåñãáóßá Â Ç Â åßíáé T1 T2 ìðëïêáñéóìýíç T3 T4 ñüíïò Εικόνα Αμοιβαίος αποκλεισμός με τη χρήση κρίσιμων περιοχών Αμοιβαίος αποκλεισμός μέσω αναμονής με απασχόληση Στην ενότητα αυτή θα εξετάσουμε διάφορες προτάσεις για την επίτευξη του αμοιβαίου αποκλεισμού ώστε, στο διάστημα που μια διεργασία ενημερώνει την κοινόχρηστη περιοχή μνήμης, καμία άλλη να μην μπαίνει στο δικό της κρίσιμο τμήμα ώστε να δημιουργηθεί πρόβλημα. Απενεργοποίηση διακοπών Σε ένα σύστημα με έναν επεξεργαστή, η απλούστερη λύση είναι κάθε διεργασία που μπαίνει στην κρίσιμη περιοχή της να απενεργοποιεί όλες τις διακοπές και να τις επανενεργοποιεί αμέσως πριν βγει από αυτή. Όταν απενεργοποιούνται οι διακοπές δεν μπορούν να συμβούν ούτε διακοπές ρολογιού. Η CPU εναλλάσσεται μεταξύ των διεργασιών μόνο μετά από διακοπές ρολογιού ή άλλου είδους, οπότε, με την απενεργοποίηση των διακοπών η CPU δεν πρόκειται να μεταφερθεί σε άλλη διεργασία. Επομένως, από τη στιγμή που μια διεργασία θα απενεργοποιήσει τις διακοπές, μπορεί να εξετάσει και να ενημερώσει την κοινόχρηστη μνήμη χωρίς το φόβο ότι θα παρεμβληθεί κάποια άλλη διεργασία. Η συγκεκριμένη λύση θεωρείται γενικά μη ελκυστική, μια και δεν είναι έξυπνο να δίνεται σε διεργασίες χρήστη η δικαιοδοσία απενεργοποίησης των διακοπών. Ας υποθέσουμε ότι μια διεργασία χρήστη απενεργοποίησε τις διακοπές και δεν τις επανέφερε ποτέ σε λειτουργία

24 166 ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΚΕΦ.2 ξανά. Αυτό θα έβαζε τέλος στη λειτουργία του συστήματος. Ακόμη, αν το σύστημα είναι πολυεπεξεργαστικό (δηλαδή έχει δύο ή περισσότερες CPU), η απενεργοποίηση των διακοπών θα επηρεάσει μόνο τη CPU που εκτέλεσε την εντολή disable. Οι υπόλοιπες θα συνεχίσουν την εκτέλεσή τους, έχοντας τη δυνατότητα να προσπελάσουν την κοινόχρηστη μνήμη. Από την άλλη, συχνά είναι βολικό ο πυρήνας να απενεργοποιεί τις διακοπές για μερικές ε- ντολές, για το χρονικό διάστημα που ενημερώνει μεταβλητές ή λίστες. Αν, για παράδειγμα, παρουσιαστεί διακοπή τη στιγμή που η λίστα των έτοιμων διεργασιών δε βρίσκεται σε συνεπή κατάσταση, τότε μπορεί να εμφανιστούν συνθήκες συναγωνισμού. Το γενικό συμπέρασμα: η απενεργοποίηση των διακοπών είναι συχνά μια χρήσιμη τεχνική για το λειτουργικό σύστημα όταν προκαλείται από το ίδιο, αλλά δεν ενδείκνυται ως γενικός μηχανισμός αμοιβαίου αποκλεισμού για τις διεργασίες χρήστη. Η πιθανότητα επίτευξης αμοιβαίου αποκλεισμού μέσω της απενεργοποίησης των διακοπών ακόμη και μέσα στον πυρήνα μειώνεται κάθε μέρα λόγω του αυξανόμενου αριθμού των πολυπύρηνων τσιπ ακόμη και σε PC της χαμηλής κατηγορίας τιμής. Οι δύο πυρήνες είναι ήδη κάτι συνηθισμένο, τέσσερις υπάρχουν σε μηχανές αιχμής, και οι οκτώ ή οι 16 δεν απέχουν πολύ να εμφανιστούν. Σε ένα πολυπύρηνο (δηλαδή πολυεπεξεργαστικό) σύστημα, η απενεργοποίηση των διακοπών της μιας CPU δεν εμποδίζει τις άλλες να παρεμβαίνουν στις λειτουργίες που εκτελεί η πρώτη CPU. Επομένως, χρειάζονται πιο σύνθετες μέθοδοι. Μεταβλητές κλειδώματος Σε μια δεύτερη προσπάθεια, ας αναζητήσουμε μια λύση μέσω λογισμικού. Ας θεωρήσουμε μια απλή, κοινόχρηστη μεταβλητή (μεταβλητή κλειδώματος lock variable) με αρχική τιμή 0. Όταν μια διεργασία θέλει να μπει στην κρίσιμη περιοχή της, ελέγχει πρώτα τη μεταβλητή αυτή. Αν έχει τιμή 0, τότε την αλλάζει σε 1 και μπαίνει στην κρίσιμη περιοχή. Αν όμως η τιμή αυτή είναι ήδη 1, τότε η διεργασία περιμένει μέχρι να γίνει πάλι 0. Συνεπώς, το 0 σημαίνει ότι καμία διεργασία δε βρίσκεται στην κρίσιμη περιοχή της, ενώ το 1 ότι κάποια διεργασία βρίσκεται στην κρίσιμη περιοχή της. Δυστυχώς, η συγκεκριμένη ιδέα περιέχει το ίδιο ακριβώς μοιραίο ψεγάδι που παρατηρήσαμε στον κατάλογο παροχέτευσης. Έστω ότι μια διεργασία διαβάζει τη μεταβλητή κλειδώματος και διαπιστώνει ότι περιέχει την τιμή 0. Πριν την αλλάξει σε 1, μια άλλη διεργασία χρονοπρογραμματίζεται, εκτελείται, και θέτει στη μεταβλητή την τιμή 1. Μόλις η πρώτη διεργασία επανεκτελείται, θέτει εκ νέου την τιμή 1 στη μεταβλητή και τελικά οι δύο διεργασίες βρίσκονται ταυτόχρονα στην κρίσιμη περιοχή τους. Ίσως να σκεφθήκατε ότι θα μπορούσαμε να παρακάμψουμε αυτό το πρόβλημα διαβάζοντας πρώτα την τιμή της μεταβλητής κλειδώματος και στη συνέχεια ελέγχοντας την τιμή αυτή πάλι αμέσως πριν την αλλάξουμε, αλλά ούτε αυτή η μέθοδος βοηθάει. Ο συναγωνισμός τώρα θα συμβεί αν η δεύτερη διεργασία τροποποιήσει τη μεταβλητή κλειδώματος αμέσως μόλις η πρώτη ολοκληρώσει το δεύτερο έλεγχό της. Αυστηρή εναλλαγή Μια τρίτη προσέγγιση στο πρόβλημα του αμοιβαίου αποκλεισμού παρουσιάζεται στην Εικόνα Αυτό το τμήμα προγράμματος, όπως και όλα σχεδόν τα υπόλοιπα στο βιβλίο, είναι γραμμένο στη γλώσσα προγραμματισμού C. Η γλώσσα αυτή επιλέχθηκε επειδή τα

25 ΕΝ. 2.3 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ 167 πραγματικά λειτουργικά συστήματα γράφονται σχεδόν πάντα σε C (ή κάποιος φορές σε C++), ενώ η χρήση άλλων γλωσσών όπως οι Java, Modula 3, και Pascal είναι σπανιότατη. Η C είναι ισχυρότατη, αποδοτική, και προβλέψιμη, ιδιότητες κρίσιμες για τη γραφή των λειτουργικών συστημάτων. Η Java, για παράδειγμα, δεν είναι προβλέψιμη καθώς μπορεί να παρουσιάσει έλλειψη μνήμης σε κάποια κρίσιμη στιγμή και να χρειάζεται κλήση της περισυλλογής απορριμμάτων (garbage collector) για την απελευθέρωση μνήμης σε εντελώς ακατάλληλη χρονική στιγμή. Αυτό δεν μπορεί να συμβεί στη C επειδή στη γλώσσα αυτή δεν υπάρχει η έννοια της περισυλλογής απορριμμάτων. Στο (Prechelt, 2000) θα βρείτε μια ποσοτική σύγκριση των γλωσσών C, C++, Java και τεσσάρων ακόμη. while (TRUE) { while (TRUE) { while (turn!= 0) /* βρόχος */; while (turn!= 1) /* βρόχος */; critical_region(); critical_region(); turn = 1; turn = 0; noncritical_region(); noncritical_region(); } } (α) (β) Εικόνα Μια προτεινόμενη λύση στο πρόβλημα των κρίσιμων περιοχών. (α) Διεργασία 0. (β) Διεργασία 1. Και στις δύο περιπτώσεις, προσέξτε τα ελληνικά ερωτηματικά (;) που τερματίζουν τις εντολές while. Στην Εικόνα 2-23, η ακέραια μεταβλητή turn έχει αρχική τιμή 0 και παρακολουθεί ποια διεργασία έχει σειρά να μπει στην κρίσιμη περιοχή της και να εξετάσει ή να ενημερώσει την κοινόχρηστη μνήμη. Αρχικά η διεργασία 0 ελέγχει την turn, βρίσκει ότι έχει τιμή 0, και μπαίνει στην κρίσιμη περιοχή της. Η διεργασία 1 βρίσκει επίσης ότι η μεταβλητή αυτή έχει τιμή 0 και περιμένει σε ένα βρόχο, ελέγχοντας συνεχώς την turn μέχρι να δει ότι αυτή πήρε την τιμή 1. Ο συνεχής έλεγχος μιας μεταβλητής μέχρι αυτή να πάρει μια συγκεκριμένη τιμή ονομάζεται αναμονή με απασχόληση (busy waiting). Συνήθως πρέπει να αποφεύγεται επειδή σπαταλάει χρόνο της CPU. Η αναμονή με απασχόληση χρησιμοποιείται μόνον όταν υπάρχει σχετική βεβαιότητα ότι η αναμονή θα είναι σύντομη. Το κλείδωμα που χρησιμοποιεί αναμονή με απασχόληση λέγεται κλείδωμα περιστροφής (spin lock). Όταν η διεργασία 0 εγκαταλείψει την κρίσιμη περιοχή, αλλάζει την τιμή της turn σε 1, ε- πιτρέποντας έτσι στη διεργασία 1 να μπει στη δική της κρίσιμη περιοχή. Υποθέστε ότι η διεργασία 1 ολοκληρώνει γρήγορα την κρίσιμη περιοχή της, ώστε και οι δύο διεργασίες να βρίσκονται στη μη κρίσιμη περιοχή τους ενώ η turn έχει την τιμή 0. Τώρα η διεργασία 0 εκτελεί πολύ γρήγορα το βρόχο της, και βγαίνει από την κρίσιμη περιοχή της δίνοντας στην turn την τιμή 1. Στο σημείο αυτό, η turn έχει την τιμή 1 και οι δύο διεργασίες εκτελούνται στη μη κρίσιμη περιοχή τους. Ξαφνικά, η διεργασία 0 ολοκληρώνει τη μη κρίσιμη περιοχή της και επανέρχεται στην αρχή του βρόχου. Δυστυχώς, δεν επιτρέπεται να μπει αμέσως στην κρίσιμη περιοχή της, αφού η μεταβλητή turn έχει την τιμή 1 και η διεργασία 1 είναι στη μη κρίσιμη περιοχή της. Περιμένει λοιπόν στο βρόχο while, μέχρι η διεργασία 1 να αλλάξει την τιμή της turn σε 0. Με άλλα λόγια, η αυστηρή εναλλαγή δεν ενδείκνυται όταν η μία από τις δύο διεργασίες είναι πολύ βραδύτερη από την άλλη.

26 168 ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΚΕΦ.2 Η κατάσταση αυτή παραβαίνει την τρίτη συνθήκη που θέσαμε προηγουμένως: η διεργασία 0 μπλοκάρεται από διεργασία που βρίσκεται στη μη κρίσιμη περιοχή της. Επιστρέφοντας στο θέμα του καταλόγου παροχέτευσης που περιγράψαμε σε προηγούμενη ενότητα, αν αντιστοιχίσουμε την κρίσιμη περιοχή με την ανάγνωση και την εγγραφή στον κατάλογο παροχέτευσης, η διεργασία 0 δεν καταφέρνει να τυπώσει ένα ακόμη αρχείο επειδή η διεργασία 1 κάνει κάτι άλλο. Στην πραγματικότητα, η λύση αυτή προϋποθέτει την αυστηρή εναλλαγή των διεργασιών, όσο αφορά την είσοδο στις κρίσιμες περιοχές τους, όπως για παράδειγμα στην παροχέτευση αρχείων. Δε θα επιτραπεί σε καμία να παροχετεύσει δύο αρχεία στη σειρά. Παρόλο που ο αλγόριθμος αυτός αποφεύγει όλες τις συνθήκες συναγωνισμού, δεν αποτελεί σοβαρή υποψήφια λύση επειδή παραβιάζει τη συνθήκη 3. Η λύση του Peterson Συνδυάζοντας την ιδέα της εναλλαγής στην εκτέλεση των διεργασιών με αυτή των μεταβλητών κλειδώματος, ο Ολλανδός μαθηματικός Τ. Dekker ήταν ο πρώτος θεωρητικός που επινόησε λύση μέσω λογισμικού για το πρόβλημα του αμοιβαίου αποκλεισμού, η οποία μάλιστα δεν προϋποθέτει αυστηρή εναλλαγή. Για τη μελέτη του αλγορίθμου του Dekker μπορείτε να ανατρέξετε στο (Dijkstra, 1965). Το 1981, ο G. L. Peterson ανακάλυψε έναν απλούστερο τρόπο για την επίτευξη αμοιβαίου αποκλεισμού, κάνοντας παρωχημένη τη λύση του Dekker. Ο αλγόριθμος του Peterson παρουσιάζεται στην Εικόνα Ο αλγόριθμος αυτός αποτελείται από δύο διαδικασίες γραμμένες σε γλώσσα ANSI C, πράγμα που σημαίνει ότι πρέπει να περιλαμβάνονται στον κώδικα όλα τα πρωτότυπα συναρτήσεων (function prototypes) για όλες τις συναρτήσεις που ορίζονται και χρησιμοποιούνται. Για να κερδίσουμε όμως χώρο, θα παραλείψουμε τα πρωτότυπα τόσο στο επόμενο παράδειγμα όσο και σε αυτά που θα ακολουθήσουν. Πριν χρησιμοποιήσει τις κοινόχρηστες μεταβλητές (δηλαδή πριν μπει στην κρίσιμη περιοχή της), κάθε διεργασία καλεί την enter_region με παράμετρο τον αριθμό της, 0 ή 1. Η κλήση αυτή θα αναγκάσει τη διεργασία να περιμένει μέχρι να εξασφαλιστεί η ασφαλής είσοδος στην κρίσιμη περιοχή της. Αφού τελειώσει την εργασία της με τις κοινόχρηστες μεταβλητές, η διεργασία καλεί τη leave_region για να γνωστοποιήσει ότι τελείωσε και να επιτρέψει στην άλλη διεργασία να μπει στην κρίσιμη περιοχή της, αν βέβαια εκείνη θέλει. Ας δούμε τώρα πώς λειτουργεί αυτή η λύση. Αρχικά καμία διεργασία δε βρίσκεται στην κρίσιμη περιοχή της. Η διεργασία 0 καλεί την enter_region. Εκδηλώνει το ενδιαφέρον της να μπει στην κρίσιμη περιοχή δίνοντας στο αντίστοιχο στοιχείο του πίνακα interested την τιμή TRUE και στη μεταβλητή turn την τιμή 0. Εφόσον η διεργασία 1 δεν ενδιαφέρεται, η enter_region επιστρέφει αμέσως. Αν η διεργασία 1 καλέσει αργότερα με τη σειρά της την enter_region, θα περιμένει μέχρι το στοιχείο interested[0] να γίνει FALSE, γεγονός που συμβαίνει μόνον όταν η διεργασία 0 καλέσει τη leave_region για να βγει από την κρίσιμη περιοχή της. Ας εξετάσουμε τώρα την περίπτωση στην οποία οι δύο διεργασίες καλούν σχεδόν ταυτόχρονα την enter_region. Προφανώς θα αποθηκεύσουν και οι δύο τον αριθμό τους στη μεταβλητή turn. Σε αυτή τη μεταβλητή θα παραμείνει όμως ο αριθμός που αποθηκεύτηκε τελευταίος, ενώ αυτός που αποθηκεύτηκε πρώτος θα αντικατασταθεί και θα χαθεί. Υποθέστε ότι η διεργασία 1 είναι η τελευταία που αποθηκεύει και, συνεπώς, η turn έχει τιμή 1. Όταν φτά-

27 ΕΝ. 2.3 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ 169 σουν και οι δύο διεργασίες στην εντολή while, η διεργασία 0 την εκτελεί μηδέν φορές και μπαίνει αμέσως στην κρίσιμη περιοχή της. Η διεργασία 1 όμως επαναλαμβάνει συνεχώς την εντολή και δεν μπαίνει στην κρίσιμη περιοχή της μέχρι να βγει από το δικό της η διεργασία 0. #define FALSE 0 #define TRUE 1 #define Ν 2 /* το πλήθος των διεργασιών */ int turn; /* ποια διεργασία έχει σειρά; */ int interested[n]; /* όλες οι τιμές αρχικά 0 (FALSE) */ void enter_region(int process); /* η process παίρνει τις τιμές 0 και 1 */ { int other; /* ο αριθμός της άλλης διεργασίας */ } other = 1 process; /* n άλλη διεργασία */ interested[process] = TRUE; /* εκδήλωση ενδιαφέροντος */ turn = process; /* απόδοση τιμής στη σημαία */ while (turn == process && interested[other] == TRUE) /* εντολή απραξίας */; void leave-region (int process) /* process: διεργασία που αποχωρεί */ { interested[process] = FALSE; /* γνωστοποίηση εξόδου από κρίσιμη περιοχή */ } Εικόνα Η λύση του Peterson για την επίτευξη του αμοιβαίου αποκλεισμού. Η εντολή TSL Ας δούμε τώρα μια πρόταση που απαιτεί μια μικρή συνδρομή από το υλικό. Μερικοί υπολογιστές, και ειδικά αυτοί που σχεδιάζονται με πρόβλεψη για πολλούς επεξεργαστές, διαθέτουν μια εντολή όπως η TSL REGISTER,LOCK που σημαίνει "Έλεγξε και δώσε την τιμή 1 στο κλείδωμα" (Test and Set Lock) και λειτουργεί ως εξής: Διαβάζει τα περιεχόμενα της λέξης μνήμης lock, τα τοποθετεί στον καταχωρητή REGISTER, και αποθηκεύει μια μη μηδενική τιμή στη διεύθυνση μνήμης lock. Οι πράξεις της ανάγνωσης και της αποθήκευσης στη λέξη αυτή είναι αδιαίρετες, δηλαδή εξασφαλίζεται ότι κανείς άλλος επεξεργαστής δεν μπορεί να προσπελάσει τη λέξη αυτή μέχρι την ολοκλήρωση της εντολής. Η CPU που εκτελεί αυτή την εντολή κλειδώνει το δίαυλο μνήμης (memory bus), ώστε να αποτρέψει την προσπέλαση της λέξης μνήμης από άλλες CPU μέχρι να τελειώσει την εργασία της. Είναι σημαντικό να σημειώσουμε ότι το κλείδωμα του διαύλου της μνήμης είναι πολύ διαφορετικό από την απενεργοποίηση των διακοπών. Η απενεργοποίηση των διακοπών και στη συνέχεια η ανάγνωση μιας λέξης της μνήμης ακολουθούμενη από μια εγγραφή δεν εμποδίζει ένα δεύτερο επεξεργαστή, που βρίσκεται στον ίδιο δίαυλο, να προσπελάσει τη λέξη μεταξύ

28 170 ΔΙΕΡΓΑΣΙΕΣ ΚΑΙ ΝΗΜΑΤΑ ΚΕΦ.2 της ανάγνωσης και της εγγραφής. Για την ακρίβεια, η απενεργοποίηση των διακοπών στον επεξεργαστή 1 δεν έχει καμία επίδραση στον επεξεργαστή 2. Ο μόνος τρόπος να κρατήσουμε τον επεξεργαστή 2 έξω από τη μνήμη μέχρι ο επεξεργαστής 1 να ολοκληρώσει το έργο του είναι να κλειδώσουμε το δίαυλο, πράγμα που απαιτεί μια ειδική ιδιότητα του υλικού (βασικά, μια γραμμή στο δίαυλο που θα επιβεβαιώνει ότι ο δίαυλος είναι κλειδωμένος και μη διαθέσιμος σε άλλους επεξεργαστές εκτός αυτού που τον κλείδωσε). Για να εφαρμόσουμε την εντολή TSL, θα χρησιμοποιήσουμε την κοινόχρηστη μεταβλητή lock η οποία βοηθάει στο συντονισμό των προσβάσεων στην κοινόχρηστη μνήμη. Όταν η lock έχει την τιμή 0, οποιαδήποτε διεργασία μπορεί να της δώσει την τιμή 1 χρησιμοποιώντας την εντολή TSL και μετά να διαβάσει ή να γράψει στην κοινόχρηστη μνήμη. Όταν τελειώσει το έργο της, η διεργασία ξαναδίνει την τιμή 0 στη lock, με μια απλή εντολή move. Πώς μπορεί να χρησιμοποιηθεί η εντολή αυτή για να αποτρέψει την ταυτόχρονη είσοδο δύο διεργασιών στην κρίσιμη περιοχή τους; Η λύση δίνεται στην Εικόνα Στο παράδειγμα αυτό παρουσιάζεται μια υπορουτίνα τεσσάρων εντολών γραμμένη σε φανταστική (αλλά τυπική) γλώσσα μηχανής. Η πρώτη εντολή αντιγράφει το περιεχόμενο της lock στον καταχωρητή και δίνει την τιμή 1 στη lock. Μετά, η παλιά τιμή συγκρίνεται με το 0. Αν δεν είναι μηδέν, αν δηλαδή η lock έχει πάρει τιμή από άλλη διεργασία, το πρόγραμμα επιστρέφει στην αρχή και ελέγχει τη lock ξανά. Αργά η γρήγορα, η μεταβλητή αυτή θα πάρει την τιμή 0 (όταν η διεργασία που βρίσκεται προς το παρόν στην κρίσιμη περιοχή της βγει από αυτή), και τότε η υπορουτίνα θα επιστρέψει έχοντας ενεργοποιήσει το κλείδωμα. Η άρση του κλειδώματος από το πρόγραμμα είναι απλή, μια και αρκεί η αποθήκευση της τιμής 0 στη μεταβλητή lock. Δε χρειάζονται ειδικές εντολές συγχρονισμού. enter_region: TSL REGISTER, LOCK Αντιγραφή του κλειδώματος στον καταχωρητή και ανάθεση της τιμής 1 στη lock CMP REGISTER,#0 Είχε η lock την τιμή 0; JNE enter_region Αν η lock είχε μη μηδενική τιμή, της είχε δοθεί μη μηδενική τιμή, άρα επανάληψη του βρόχου RET Επιστροφή στην καλούσα διεργασία είσοδος στην κρίσιμη περιοχή leave_region: MOVE LOCK,#0 RET Αποθήκευση της τιμής 0 στη lock Επιστροφή στην καλούσα διεργασία Εικόνα Είσοδος και έξοδος από την κρίσιμη περιοχή, με τη χρήση της εντολής TSL. Μια λύση στο πρόβλημα της κρίσιμης περιοχής είναι πλέον σαφής. Πριν μπει μια διεργασία στην κρίσιμη περιοχή της, καλεί την enter_region η οποία εκτελεί αναμονή με απασχόληση μέχρι να ελευθερωθεί το κλείδωμα. μετά, αποκτά τον έλεγχο του κλειδώματος και επιστρέφει. Με το τέλος των εργασιών στην κρίσιμη περιοχή, η διεργασία καλεί τη leave_region, η οποία δίνει την τιμή 0 στη lock. Όπως και όλες οι λύσεις που βασίζονται στη μέθοδο της κρίσιμης περιοχής, οι διεργασίες οφείλουν να καλούν τις υπορουτίνες enter_region και leave_region την κατάλληλη στιγμή, προκειμένου να εξασφαλιστεί η ομαλή λειτουργία της μεθόδου. Αν κάποια διεργασία κάνει ζαβολιά, ο αμοιβαίος αποκλεισμός θα αποτύχει.

29 ΕΝ. 2.3 ΔΙΑΔΙΕΡΓΑΣΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ 171 Μια εναλλακτική εντολή αντί για την TSL είναι η XCHG, η οποία ανταλλάσσει τα περιεχόμενα δύο θέσεων αδιαίρετα (είναι όπως και η TSL αδιαίρετη εντολή, δηλαδή εκτελεί τις δύο ενέργειές της χωρίς να διακόπτεται), για παράδειγμα, ενός καταχωρητή και μιας λέξης μνήμης. Ο κώδικας παρουσιάζεται στην Εικόνα 2-26 και, όπως βλέπετε, βασικά είναι ίδιος με τη λύση της εντολής TSL. Όλες οι CPU Intel x86 χρησιμοποιούν την εντολή XCHG για συγχρονισμό χαμηλού επιπέδου. enter_region: MOVE REGISTER,#1 XCHG REGISTER,LOCK CMP REGISTER,#0 JNE enter_region RET leave_region: MOVE LOCK,#0 RET Τιμή 1 στον καταχωρητή Ανταλλαγή περιεχομένων καταχωρητή και μεταβλητής lock Ήταν η lock μηδέν; Αν δεν ήταν μηδέν, είχε πάρει μη μηδενική τιμή, άρα βρόχος Επιστροφή στον καλούντα είσοδος στην κρίσιμη περιοχή Αποθήκευση της τιμής 0 στη lock Επιστροφή στην καλούσα διεργασία Εικόνα Είσοδος και έξοδος από την κρίσιμη περιοχή με την εντολή XCHG Λήθαργος και αφύπνιση Τόσο η λύση του Peterson όσο και η λύση που χρησιμοποιεί τις εντολές TSL ή XCHG είναι σωστές, αλλά παρουσιάζουν το ελάττωμα ότι χρειάζονται αναμονή με απασχόληση. Ουσιαστικά, οι δύο αυτές λύσεις λειτουργούν ως εξής: όταν μια διεργασία θέλει να μπει στην κρίσιμη περιοχή της, ελέγχει αν αυτό επιτρέπεται. Αν δεν επιτρέπεται, η διεργασία εκτελεί συνεχώς ένα βρόχο αναμένοντας να απελευθερωθεί η είσοδος στην κρίσιμη περιοχή. Αυτή η προσέγγιση περιλαμβάνει όχι μόνο σπατάλη χρόνου της CPU αλλά και απρόβλεπτες παρενέργειες. Σκεφθείτε έναν υπολογιστή που εκτελεί δύο διεργασίες, την Υ που έχει υψηλή προτεραιότητα και τη Χ που έχει χαμηλή. Οι κανόνες χρονοπρογραμματισμού επιβάλλουν την εκτέλεση της Υ μόλις αυτή βρεθεί σε κατάσταση ετοιμότητας. Σε κάποια χρονική στιγμή και ενώ η Χ βρίσκεται σε κρίσιμο τμήμα, η Υ είναι έτοιμη να εκτελεστεί (για παράδειγμα, μετά από την ολοκλήρωση μιας λειτουργίας εισόδου/εξόδου). Στη συνέχεια, η διεργασία Υ ξεκινάει αναμονή με απασχόληση αλλά, μια και η Χ δε χρονοπρογραμματίζεται ποτέ όταν εκτελείται η Υ, η Χ δεν αποκτάει ποτέ τη δυνατότητα να εγκαταλείψει το κρίσιμο τμήμα της και συνεπώς η Υ επαναλαμβάνει αδιάκοπα το βρόχο αναμονής, χωρίς αποτέλεσμα. Η κατάσταση αυτή αναφέρεται μερικές φορές με τον όρο πρόβλημα αντιστροφής προτεραιοτήτων (priority inversion problem). Ας δούμε τώρα μερικές θεμελιώδεις αρχές της διαδιεργασιακής επικοινωνίας, οι οποίες μπλοκάρουν τις διεργασίες αντί να σπαταλούν το χρόνο της CPU όταν αυτές δεν επιτρέπεται να μπουν στις κρίσιμες περιοχές τους. Μία από τις απλούστερες αφορά το ζεύγος κλήσεων sleep (λήθαργος) και wakeup (αφύπνιση). Η sleep είναι μια κλήση συστήματος που μπλοκάρει την καλούσα διεργασία, πράγμα που σημαίνει ότι αυτή αναστέλλεται μέχρι κάποια άλλη διεργασία να την ξυπνήσει. Η κλήση wakeup διαθέτει μία παράμετρο, τη διεργασία που πρόκειται να ξυπνήσει. Εναλλακτικά, και οι δύο κλήσεις συντάσσονται με μία παράμετρο η ο-

30

Περιεχόμενα ΠΡΟΛΟΓΟΣ 25 1 ΕΙΣΑΓΩΓΗ 31

Περιεχόμενα ΠΡΟΛΟΓΟΣ 25 1 ΕΙΣΑΓΩΓΗ 31 Περιεχόμενα ΠΡΟΛΟΓΟΣ 25 1 ΕΙΣΑΓΩΓΗ 31 1.1 ΤΙ ΕΙΝΑΙ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ; 34 1.1.1 Το λειτουργικό σύστημα ως επεκτεταμένη μηχανή 34 1.1.2 Το λειτουργικό σύστημα ως διαχειριστής πόρων 36 1.2 Η ΙΣΤΟΡΙΑ ΤΩΝ

Διαβάστε περισσότερα

Περιεχόµενα ΠΡΟΛΟΓΟΣ 23

Περιεχόµενα ΠΡΟΛΟΓΟΣ 23 Περιεχόµενα ΠΡΟΛΟΓΟΣ 23 1 ΕΙΣΑΓΩΓΗ 27 1.1 ΤΙ ΕΙΝΑΙ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ; 30 1.1.1 Το λειτουργικό σύστηµα ως επεκτεταµένη µηχανή 30 1.1.2 Το λειτουργικό σύστηµα ως διαχειριστής πόρων 31 1.2 Η ΙΣΤΟΡΙΑ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός Αμοιβαίος αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του αμοιβαίου αποκλεισμού I. Προσεγγίσεις λογισμικού II. Υποστήριξη εκ μέρους του υλικού III. Σηματοφορείς 4. Κλασσικά

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά Συστήματα Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 4: Διεργασίες ΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση : Λυμένες Ασκήσεις Έστω ένα σύστημα μνήμης, στο οποίο έχουμε προσθέσει μια κρυφή μνήμη θυμάτων 6 θέσεων

Διαβάστε περισσότερα

Λειτουργικά συστήματα πραγματικού χρόνου

Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα 3.1 Η εξέλιξη των λειτουργικών συστηµάτων 3.2 Αρχιτεκτονική λειτουργικών συστηµάτων 3.3 Συντονισµός των δραστηριοτήτων του υπολογιστή 3.4 Χειρισµός ανταγωνισµού µεταξύ

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Ενότητα # 6: Αδιέξοδα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Λειτουργικά Συστήματα. Ενότητα # 6: Αδιέξοδα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Λειτουργικά Συστήματα Ενότητα # 6: Αδιέξοδα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του

Διαβάστε περισσότερα

Αδιέξοδα (Deadlocks)

Αδιέξοδα (Deadlocks) Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection

Διαβάστε περισσότερα

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Τεχνολογία Πολυμέσων Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

Διαβάστε περισσότερα

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

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

Συστήματα πολυμέσων. Εισαγωγή Υλικό συστημάτων πολυμέσων Λογισμικό συστημάτων πολυμέσων Συστήματα πραγματικού χρόνου Χρονοπρογραμματισμός

Συστήματα πολυμέσων. Εισαγωγή Υλικό συστημάτων πολυμέσων Λογισμικό συστημάτων πολυμέσων Συστήματα πραγματικού χρόνου Χρονοπρογραμματισμός Συστήματα πολυμέσων Εισαγωγή Υλικό συστημάτων πολυμέσων Λογισμικό συστημάτων πολυμέσων Συστήματα πραγματικού χρόνου Χρονοπρογραμματισμός Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 03-1 Εισαγωγή

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

ΠΕΡΙΕΧΟΜΕΝΑ. 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή στην Δομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6 1.3.1 Δομή

Διαβάστε περισσότερα

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

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση

Διαβάστε περισσότερα

Διεργασίες (Processes)

Διεργασίες (Processes) Διεργασία (process) ή καθήκον (task) Διεργασίες (Processes) στοιχειώδης οντότητα/δραστηριότητα υπολογισμού (processing entity/activity) εκτέλεση ενός προγράμματος ένα (κύριο) νήμα (thread)/ρεύμα ελέγχου/εκτέλεσης

Διαβάστε περισσότερα

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Μάθημα 4 ο Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Εισαγωγή Σκοπός του μαθήματος αυτού είναι να εξηγήσει την έννοια του κρίσιμου τμήματος σε μία διεργασία και να δείξει τη λύση για ένα απλό πρόβλημα

Διαβάστε περισσότερα

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Μάθημα: ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) 1 Συμβαίνει συχνά πολλές διεργασίες να ανταγωνίζονται για τον έλεγχο

Διαβάστε περισσότερα

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Αρχιτεκτονική Πλατφόρμας Μπορεί να μοντελοποιηθεί σαν ένα σύνολο από διασυνδεδεμένα κομμάτια: 1. Στοιχεία επεξεργασίας (processing

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του Λ.Σ.

Διαβάστε περισσότερα

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

ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΑΔΙΕΞΟΔΑ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΑΔΙΕΞΟΔΑ 2 ΠΟΡΟΙ Υπάρχουν δύο τύποι πόρων σε υπολογιστικά συστήματα: Προεκτοπίσιμοι πόροι

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Ενότητα # 11: Σχεδίαση λειτουργικών συστημάτων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Λειτουργικά Συστήματα. Ενότητα # 11: Σχεδίαση λειτουργικών συστημάτων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Λειτουργικά Συστήματα Ενότητα # 11: Σχεδίαση λειτουργικών συστημάτων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος Εισαγωγή στα Λειτουργικά συστήματα Ι Καθηγητής Κώστας Αναγνωστόπουλος Τι είναι Λειτουργικό Σύστημα Ένα πρόγραμμα ή συλλογή προγραμμάτων που ελέγχει και διαχειρίζεται το υλικό μιας υπολογιστικής μηχανής

Διαβάστε περισσότερα

Κεφάλαιο 3: Λειτουργικά Συστήµατα

Κεφάλαιο 3: Λειτουργικά Συστήµατα Κεφάλαιο 3: Λειτουργικά Συστήµατα B Μέρος Συντονισµός Δραστηριοτήτων Υπολογιστή Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Εισαγωγή Σήµερα θα περιγράψουµε πως ένα λειτουργικό

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Ενότητα # 2: Διεργασίες και Νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του

Διαβάστε περισσότερα

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

ΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΕΡΓΑΣΙΕΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΔΙΕΡΓΑΣΙΕΣ Διεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράμματος

Διαβάστε περισσότερα

Κεφάλαιο 3: Λειτουργικά Συστήματα

Κεφάλαιο 3: Λειτουργικά Συστήματα Κεφάλαιο 3: Λειτουργικά Συστήματα (από το βιβλίο του Brookshear) B Μέρος Συντονισμός Δραστηριοτήτων Υπολογιστή Εισαγωγή Σήμερα θα περιγράψουμε πως ένα λειτουργικό σύστημα συντονίζει την εκτέλεση Λογισμικού

Διαβάστε περισσότερα

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

Πληροφορική 2. Λειτουργικά Συστήματα Πληροφορική 2 Λειτουργικά Συστήματα 1 2 Λογισμικό Υπολογιστών Υπολογιστής Υλικό Λογισμικό Λειτουργικό Σύστημα Προγράμματα Εφαρμογών 3 Λειτουργικό Σύστημα (Operating System) Λειτουργικό Σύστημα (ΛΣ) είναι

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

Διαβάστε περισσότερα

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

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Ύλη του Μαθήµατος Μάθηµα: Λειτουργικά Συστήµατα ΙΙ UNIX Βιβλίο Μαθήµατος: α) Tanenbaum, A.:ΣύγχροναΛειτουργικάΣυστήµατα, 2ηΈκδοση, Εκδόσεις Κλειδάριθµος. β) Wrightson, K.,

Διαβάστε περισσότερα

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κρυφές Μνήμες (οργάνωση, λειτουργία και απόδοση) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Ιεραρχία συχνά και το

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling) Μάθημα 6 ο Χρονοδρομολόγηση (Scheduling) Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και τη λειτουργία της χρονοδρομολόγησης σε ένα Λειτουργικό Σύστημα. Θα μάθουμε: Να ορίζουμε τι είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Εικονική Μνήµη Κεφάλαιο 8 Υλικό και δοµές ελέγχου Οι αναφορές στην µνήµη υπολογίζονται δυναµικά κατά την εκτέλεση Ηδιεργασίαχωρίζεταισετµήµατα τα οποία δεν απαιτείται να καταλαµβάνουν συνεχόµενες θέσεις

Διαβάστε περισσότερα

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή

Διαβάστε περισσότερα

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

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κρυφές Μνήμες (οργάνωση, λειτουργία και απόδοση) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Για βελτίωση της απόδοσης

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα

Διαβάστε περισσότερα

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 7 «Διαχείριση Μνήμης» Διδάσκων: Δ. Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Κύρια Μνήμη 1. Εισαγωγή 2. Βασική διαχείριση μνήμης 3. Μνήμη και πολυπρογραμματισμός 4. Τμηματοποίηση

Διαβάστε περισσότερα

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο Για το μάθημα «Διαχείριση Λειτουργικών Συστημάτων» του ακαδημαϊκού έτους 2015 2016, το προτεινόμενο σύγγραμμα είναι το: Operating Systems: Internals

Διαβάστε περισσότερα

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKOI Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΙΠΕ Ο ΜΗΧΑΝΗΣ ΛΕΙΤΟΥΡΓΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ Γ. Τσιατούχας 6 ο Κεφάλαιο 1. Επίπεδο OSM 2. Εικονική μνήμη ιάρθρωση 3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση

Διαβάστε περισσότερα

2 Αποδοτική εργασία στα Windows Vista 103

2 Αποδοτική εργασία στα Windows Vista 103 Περιεχόμενα Οι συγγραφείς... 11 Εισαγωγή στα Windows Vista... 13 Οι εκδόσεις των Windows Vista...14 Ας ξεκινήσουμε!...18 Το πρόγραμμα πιστοποίησης επιχειρήσεων της Microsoft... 19 Πληροφορίες για νέους

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

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

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 6: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 6: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός Ενότητα # 6: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν

Διαβάστε περισσότερα

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

Εισαγωγή στην Πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Λειτουργικά συστήµατα, διεργασίες και δροµολόγηση Σύνδεση

Διαβάστε περισσότερα

Κινητά και Διάχυτα Συστήματα. Ενότητα # 10: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κινητά και Διάχυτα Συστήματα. Ενότητα # 10: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κινητά και Διάχυτα Συστήματα Ενότητα # 10: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Μνήμης Βασίλης Σακκάς 6/12/2013 1 Διαχείριση Μνήμης 1 Το τμήμα του Λ/Σ που διαχειρίζεται τη μνήμη λέγεται Διαχειριστής Μνήμης (Memory manager). Καθήκον του είναι

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

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

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Το Λ.Σ. είναι υπεύθυνο για την κατανομή των πόρων του συστήματος (επεξεργαστές, μνήμη, αποθηκευτικά μέσα και συσκευές εισόδου/εξόδου) στα διάφορα ανταγωνιζόμενα προγράμματα

Διαβάστε περισσότερα

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

Διαβάστε περισσότερα

Πανεπιστήµιο Θεσσαλίας

Πανεπιστήµιο Θεσσαλίας Πανεπιστήµιο Θεσσαλίας Τµήµα Πληροφορικής Ενότητα 8η: Συσκευές Ε/Ε - Αρτηρίες Άσκηση 1: Υπολογίστε το µέσο χρόνο ανάγνωσης ενός τµήµατος των 512 bytes σε µια µονάδα σκληρού δίσκου µε ταχύτητα περιστροφής

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

Διαβάστε περισσότερα

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου ΚΕΦΑΛΑΙΟ 1 Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου Υπολογιστικά συστήματα σχεδιάστηκαν για να καλύψουν συγκεκριμένες ανάγκες σε συγκεκριμένη χρονική στιγμή και βοηθούν στη συνολική πρόοδο της τεχνολογίας Φουκαράκη

Διαβάστε περισσότερα

Τεχνολογίες Κύριας Μνήμης

Τεχνολογίες Κύριας Μνήμης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κύρια Μνήμη

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

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

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Τι είναι το υλικό ενός υπολογιστικού συστήματος; Το σύνολο των ηλεκτρονικών και μηχανικών μερών του που έχουν

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 8 «Ιδεατή Μνήμη» Διδάσκων: Δ. Λιαροκαπης Διαφάνειες: Π. Χατζηδούκας Ιδεατή Μνήμη Οργάνωση. Εισαγωγή. Ιδεατές και πραγματικές διευθύνσεις. Λογική οργάνωση. Τμηματοποίηση

Διαβάστε περισσότερα

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο : 2. Α/Α Διάλεξης : 1 1. Τίτλος : Εισαγωγή στην Ψηφιακή Τεχνολογία 2. Μαθησιακοί Στόχοι : Λογικές Πύλες και η υλοποίησή τους με τρανζίστορ. Κατασκευή ολοκληρωμένων κυκλωμάτων. 3. Θέματα που καλύπτει : Λογικές

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Μάθημα: Λειτουργικά Συστήματα Συστήματα Αρχείων Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) Λειτουργικά Συστήματα 1 Αρχεία με Χαρτογράφηση

Διαβάστε περισσότερα

2.4 Κλασσικά Προβλήματα IPC

2.4 Κλασσικά Προβλήματα IPC 2.4 Κλασσικά Προβλήματα IPC 1 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { think; take_fork(i);/* πάρε αριστερό ξυλάκι */ take_fork(i+1

Διαβάστε περισσότερα

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (ΙI)

Οργάνωση Υπολογιστών (ΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (ΙI) (κύρια και κρυφή μνήμη) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

Διαβάστε περισσότερα

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

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός

Διαβάστε περισσότερα

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1 Εισαγωγή Υλισµικό Λογισµικό Αρχές σχεδίασης ιαφάνεια Κλιµάκωση Παρεχόµενες υπηρεσίες Μοντέλο πελάτη εξυπηρετητή Μοντέλο πελάτη εξυπηρετητή τριών επιπέδων Κατανοµή επεξεργασίας Κατανεµηµένα Συστήµατα 01-1

Διαβάστε περισσότερα

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

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 12 Σχεδιασμός Ανάπτυξη Λειτουργία Π.Σ. 1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1.1 Δυνατότητες Λειτουργικών Συστημάτων 1.1.1 Εισαγωγή Ο όρος Λειτουργικό Σύστημα (Operating System), εκφράζει το σύνολο των προγραμμάτων

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #2 2 Γενικά Στο Εργαστήριο αυτό θα αναλύσουμε τη χρήση της βασικής εντολής ελέγχου ροής

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

Διαβάστε περισσότερα