Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

Download "Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας"

Transcript

1 Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 8: Νήματα και Παραλληλισμός Διεργασιών Δρ. Μηνάς Δασυγένης Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

3 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα στο Πανεπιστήμιο Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

4 Σκοπός της Ενότητας Η κατανόηση της σημασίας των νημάτων για την αύξηση της παραλληλίας. Η παρουσίαση της τεχνικής της υπερνημάτωσης. 4

5 Η βασική μονάδα χρήσης είναι η διεργασία Στα παραδοσιακά λειτουργικά συστήματα η «μονάδα χρήσης» της CPU είναι η διεργασία (process). Κάθε διεργασία είναι ένα εκτελούμενο πρόγραμμα που έχει το δικό του «χώρο»: ιδιωτική περιοχή διευθύνσεων, δικό της program counter, δικό της stack, δικούς της registers. Ο χώρος κάθε διεργασίας είναι προστατευμένος από τις υπόλοιπες διεργασίες του συστήματος. Κάθε διεργασία αποτελείται από ένα μοναδικό νήμα ελέγχου (thread of control) μια και έχει ένα program counter. 5

6 Υπάρχει ένα πρόβλημα αν έχουμε μόνο διεργασίες Έστω μία διεργασία file server η οποία: δέχεται κλήσεις και τις επεξεργάζεται προσπελαύνει το δίσκο, επεξεργάζεται τα δεδομένα (πχ τα συμπιέζει) και στέλνει απάντηση. Η προσπέλαση του δίσκου απαιτεί προσωρινή αναστολή του server και συνεπώς μείωση του throughput. Η αποδοτική υλοποίηση του server με δύο ανεξάρτητες διεργασίες δεν είναι δυνατή, διότι αυτές πρέπει να μοιράζονται μία ενδιάμεση κοινή μνήμη (buffer cache) η οποία προϋποθέτει κοινό χώρο διευθύνσεων. 6

7 Δύο είναι τα μοντέλα διεργασιών: (α) Μονονηματικό (β) Πολυνηματικό (1/2) a. Μονονηματικό: Ένα μόνο νήμα σε κάθε διεργασία. Διεργασία και νήμα έχουν κοινά: χώρο διευθύνσεων, μετρητή προγράμματος, καταχωρητές, στοίβα χρήστη και στοίβα πυρήνα. Η έννοια του νήματος ουσιαστικά δεν υφίσταται. 7

8 Δύο είναι τα μοντέλα διεργασιών: (α) Μονονηματικό (β) Πολυνηματικό (2/2) b. Πολυνηματικό: Ύπαρξη πολλών νημάτων σε κάθε διεργασία. Διεργασία και νήμα έχουν κοινά: χώρο διευθύνσεων, πόροι συστήματος. Κάθε νήμα έχει ατομικό: μετρητή προγράμματος, Καταχωρητές, στοίβα χρήστη και στοίβα πυρήνα. 8

9 Το πρόβλημα του διακομιστή αρχείων λύνεται με πολλαπλά νήματα Λύση στο προηγούμενο πρόβλημα δίνουν τα νήματα (threads). Για το λειτουργικό σύστημα το νήμα είναι το αφαιρετικό μοντέλο μίας δραστηριότητας. Μία διεργασία μπορεί να έχει πολλά νήματα ελέγχου (ή νήματα, ή lightweight processes (lwp)). Κάθε νήμα μίας διεργασίας έχει τα δικά του: program counter, Stack, Registers. Όλα τα νήματα μίας διεργασίας μοιράζονται: τον χώρο διευθύνσεων, τους πόρους συστήματος (πχ ανοιχτά αρχεία, semaphores, signals, child processes) της διεργασίας στην οποία περιέχονται. 9

10 Απεικόνιση διεργασίας & νήματος 10

11 Τα νήματα χρησιμοποιούνται ευρέως! Λειτουργικά συστήματα: Ένα kernel thread (νήμα πυρήνα) για κάθε διεργασία χρήστη. Επιστημονικές εφαρμογές: Ένα thread ανά CPU (καλύτερος παραλληλισμός). Κατανεμημένα συστήματα: Συγχρονισμός αιτήσεων διεργασιών. GUI: Ανταπόκριση στον χρήστη. 11

12 Τα νήματα μιας διεργασίας συνεργάζονται Γενικά ισχύει η αναλογία ότι ένα νήμα είναι για μία διεργασία, ότι μία διεργασία για όλο τον υπολογιστή. Όμως, τα νήματα μίας διεργασίας δεν είναι ανεξάρτητα διότι μοιράζονται τον ίδιο χώρο διευθύνσεων. Πχ: έχουν κοινές καθολικές μεταβλητές, ένα νήμα μπορεί να αλλάξει το stack pointer ενός άλλου. Η ανεξαρτησία δεν είναι ούτε εφικτή, ούτε απαραίτητη, μια και τα νήματα είναι πάντα συνεργαζόμενα και όχι ανταγωνιστικά. 12

13 Τι είναι το νήμα; (1/3) Τα νήματα διεργασιών έχουν: Ένα νήμα κατάστασης της εκτέλεσης. Μια στοίβα αποθήκευσης. Στατική αποθήκευση ανά νήμα τοπικών μεταβλητών. Προσπέλαση στη μνήμη και τους πόρους της διεργασίας, μαζί με όλα τα άλλα νήματα της διεργασίας. 13

14 Multithreading: Τι είναι το νήμα; (2/3) Εκτέλεση πολλών threads στον ίδιο χώρο. Σε μια χρονική στιγμή το πρόγραμμα έχει τόσες ροές εκτέλεσης, όσα και τα threads. (Ψευδο-ταυτοχρονισμός). Με τη χρήση multithreading: Καλύτερη απόδοση. Καλύτερη δομή. 14

15 Τι είναι το νήμα; (3/3) Παράδειγμα εφαρμογής multithreading. Web Browser: Scrolling. Downloading. Printing. =>Όλα μπορούν να γίνουν ταυτόχρονα (ή έτσι φαίνεται στο χρήστη). 15

16 Τα νήματα χρησιμοποιούνται όταν απαιτείται παράλληλη εκτέλεση Τα νήματα χρησιμοποιούνται ευρέως σε εφαρμογές όπου η εκτέλεση τους πραγματοποιείται παράλληλα ή ψευδοπαράλληλα. Όταν υπάρχει αίτημα για Ι/Ο, ένα νήμα μπορεί να περιμένει την ολοκλήρωση του αιτήματος ενώ άλλα εκτελούνται ταυτόχρονα. Αποφεύγεται η αναμονή άλλων αιτημάτων. 16

17 Παράδειγμα: Νήματα σε τυπική εφαρμογή γραφείου Σ ένα πρόγραμμα επεξεργασίας κειμένου υπάρχουν 3 νήματα: 1. Το πρώτο νήμα είναι υπεύθυνο για την αλληλεπίδραση με το χρήστη, καθώς δέχεται τις εντολές του χρήστη από το πληκτρολόγιο και το ποντίκι. 2. Το δεύτερο για την αναδιαμόρφωση του κειμένου στο παρασκήνιο εκτελεί ταχύτατους υπολογισμούς για τη μορφοποίηση του κειμένου. 3. Το τρίτο εκτελεί μια περιοδική αποθήκευση εφεδρικών δεδομένων (back up). Δρομολογείται από το λειτουργικό σύστημα και εκτελείται χωρίς να παρεμβαίνει στο έργο των υπολοίπων. Καταγράφει τα περιεχόμενα της μνήμης στο δίσκο έτσι ώστε να: Παρέχει προστασία απώλειας δεδομένων σε περίπτωση κατάρρευσης προγράμματος, συστήματος και διακοπής ηλεκτρικού ρεύματος. 17

18 Παράδειγμα: Νήματα σε διακομιστή Ένας διακομιστής εξυπηρετεί μια τοποθεσία του Παγκόσμιου Ιστού (World Wide Web) με την χρήση πολλαπλών νημάτων. 1. Οι αιτήσεις των πελατών για συγκεκριμένες σελίδες παραδίδονται από τον διεκπεραιωτή σε ανενεργά νήματα εργασίας. 2. Τα νήματα εργασίας ενεργοποιούνται και μεταβαίνουν από την μπλοκαρισμένη στην έτοιμη κατάσταση. 3. Όταν η ανάγνωση της σελίδας γίνεται από το δίσκο και όχι από τη κρυφή μνήμη, τότε το αντίστοιχο νήμα μπλοκάρεται και ο διεκπεραιωτής επιλέγει ένα άλλο νήμα για εκτέλεση. 4. Με την ικανοποίηση του αιτήματος το νήμα μπλοκάρεται και αναμένει μία νέα αίτηση προς εκτέλεση για να επανενεργοποιηθεί. Επιτυγχάνεται υψηλότερη απόδοση: η CPU αναγκαστικά θα παρέμενε ανενεργή όταν ο διεκπεραιωτής θα περίμενε την ολοκλήρωση της διαδικασίας ανάγνωσης από το δίσκο. 18

19 Παράδειγμα: Νήματα σε εφαρμογή υψηλών υπολογιστικών απαιτήσεων 19

20 Πλεονεκτήματα Νημάτων (1/7) Μικρό overhead δημιουργίας: το address space μίας νέας διεργασίας δημιουργείται από την αρχή (ή μέρος του κληρονομείται από την parent process), είναι πολύ δαπανηρό (size, initial virtual memory page faults, empty cache), αντίθετα ένα thread χρησιμοποιεί το address space της διεργασίας του, και η cache περιέχει «φρέσκα» δεδομένα. 20

21 Πλεονεκτήματα Νημάτων (2/7) Γρήγορη μετάβαση ελέγχου (switching) μεταξύ νημάτων: η μετάβαση ελέγχου και εκτέλεσης (CPU switching) από μία διεργασία σε μία άλλη είναι πολύ πιο χρονοβόρα από τη μετάβαση ελέγχου μεταξύ των νημάτων μίας διεργασίας, διότι τα τελευταία έχουν κοινό address space. Αποδοτικός διαμοιρασμός πόρων: ο διαμοιρασμός πόρων μεταξύ νημάτων μίας διεργασίας είναι πολύ πιο αποδοτικός λόγω κοινού address space. 21

22 Πλεονεκτήματα Νημάτων (3/7) Ο κοινός χώρος διευθύνσεων έχει ως αποτέλεσμα: Ίδιες καθολικές μεταβλητές. Πρόσβαση στα ίδια δεδομένα. Δεν απαιτείται προστασία μεταξύ των νημάτων. Ανήκουν σε ένα χρήστη. Σχεδιάζονται ώστε να συνεργάζονται και να είναι φιλικά μεταξύ τους. 22

23 Πλεονεκτήματα Νημάτων (4/7) Ο χρόνος δημιουργίας και τερματισμού ενός νήματος μιας υπάρχουσας διεργασίας είναι μικρότερος από τον αντίστοιχο μιας καινούργιας διεργασίας. Η επικοινωνία των εκτελέσιμων προγραμμάτων επιτυγχάνεται πιο αποδοτικά. Το μοντέλο προγραμματισμού είναι πολύ πιο απλό διότι όλα τα νήματα έχουν πρόσβαση στον ίδιο χώρο μνήμης. 23

24 Πλεονεκτήματα Νημάτων (5/7) Προσφέρουν συνδυασμό «παραλληλίας» (performance), σειριακής εκτέλεσης, και ανασταλτικών κλήσεων συστήματος (easy programming). Το πλεονέκτημα αυτό μπορεί να εξηγηθεί με ένα παράδειγμα διαφορετικών υλοποιήσεων ενός file server process: single-thread server process: χρησιμοποιείται 1 νήμα ελέγχου (σειριακή εκτέλεση) και ανασταλτικές κλήσεις για πρόσβαση στον δίσκο: απλός προγραμματισμός, χαμηλή απόδοση λόγω συχνής αναστολής. finite-state machine server process: χρησιμοποιείται 1 νήμα ελέγχου, και υποστηρίζεται «παραλληλία» μέσω μη- ανασταλτικών κλήσεων... (επόμενη διαφάνεια). 24

25 Πλεονεκτήματα Νημάτων (6/7) Ο server λειτουργεί σαν finite-state machine, το οποίο χρησιμοποιεί ένα event-queue για τις κλήσεις των clients και τις απαντήσεις από τον δίσκο, αν το επόμενο event είναι νέα αίτηση, την επεξεργάζεται (check permissions, cached data) και αν χρειαστεί κάνει κλήση για πρόσβαση στο δίσκο, μετά από κάθε τέτοια κλήση, ο server δεν αναστέλλεται, αλλά σώζει την κατάσταση της κλήσης του client, και παίρνει το επόμενο μήνυμα από το event queue. Αν αυτό είναι από το δίσκο, ανακτά την κατάσταση του client και συνεχίζει την επεξεργασία της αίτησης του: καλύτερη απόδοση, λόγω «παραλληλίας», δυσκολότερος προγραμματισμός με διαχείριση του event queue και client-state. 25

26 Πλεονεκτήματα Νημάτων (7/7) group-of-threads server process: υπάρχει ένα νήμα που λαμβάνει κλήσεις (ο dispatcher (διεκπεραιωτής)), υπάρχουν νήματα «εργάτες» (δημιουργημένα από την αρχή ή δυναμικά), ο dispatcher ελέγχει permissions και αναθέτει την κλήση σε ένα νήμα-εργάτη, κάθε νήμα εργάτης χρησιμοποιεί ανασταλτικές κλήσεις για να διαβάσει το δίσκο: ευκολία προγραμματισμού, υψηλή απόδοση, «παράλληλη» επεξεργασία κλήσεων. 26

27 Ο απλός κύκλος ζωής ενός νήματος (1/4) 27

28 Ο απλός κύκλος ζωής ενός νήματος (2/4) Ένα thread βρίσκεται σε κατάσταση not runnable όταν: Έχει ενεργοποιηθεί η μέθοδος sleep. Έχει καλέσει την μέθοδο wait μέχρι να ικανοποιηθεί μια κατάσταση. Έχει μπλοκάρει σε μια I/O κατάσταση. 28

29 Ο απλός κύκλος ζωής ενός νήματος (3/4) Η διεργασία δημιουργεί αυτόματα ένα νήμα εκτέλεσης. Το νήμα αυτό μπορεί να δημιουργήσει άλλα νήματα καθένα από τα οποία: ίδιο χώρο διευθύνσεων με το μητρικό, ανεξάρτητο περιεχόμενο καταχωρητή και στοίβα. Τα νέα νήματα εισέρχονται στην έτοιμη ουρά. 29

30 Μεταφορά από την εκτελούμενη στην έτοιμη κατάσταση Οικειοθελής παράδοση του ελέγχου της CPU σε κάποιο άλλο νήμα. Εφαρμογή του κατάλληλου αλγορίθμου δρομολόγησης, συνήθως ο εκ περιτροπής (Round Robin). Μεταφορά από την εκτελούμενη στην υπό αναστολή: το νήμα αναμένει ένα γεγονός, ο έλεγχος της CPU αποδίδεται σε άλλο νήμα που βρίσκεται στην έτοιμη κατάσταση. Η επιλογή του νήματος γίνεται με βάση τον αλγόριθμο δρομολόγησης. 30

31 Ο απλός κύκλος ζωής του νήματος (4/4) Μεταφορά από την υπό αναστολή στην έτοιμη: όταν ολοκληρωθεί το γεγονός το οποίο αναμένει. Τερματισμός νήματος. Ένα νήμα μπορεί να τερματιστεί: οικειοθελώς., από εξωτερικό γεγονός. Απελευθερώνεται το περιεχόμενο του καταχωρητή και της στοίβας. Με τον τερματισμό του τελευταίου νήματος τερματίζει και η αντίστοιχη διεργασία. Όταν μία διεργασία ανασταλεί τότε αναγκαστικά αναστέλλονται όλα τα νήματά της. 31

32 Χρονοδρομολόγηση νημάτων (1/2) Ένα thread κληρονομεί την προτεραιότητα του δημιουργού του. Ένα thread εκτελείται έως ότου: Ένα thread μεγαλύτερης προτεραιότητας βρεθεί σε κατάσταση runnable. Όταν κρεμάει ή τερματίζεται. Όταν τελειώσει ο χρόνος εκτέλεσης που του έχει δοθεί από το σύστημα. 32

33 Χρονοδρομολόγηση νημάτων (2/2) Αν δυο threads έχουν την ίδια προτεραιότητα, το σύστημα επιλέγει ποιο θα εκτελεστεί. Οι προσπάθειες διακοπής προς χαμηλότερης προτεραιότητας threads αγνοούνται! 33

34 Συγχρονισμός των νημάτων Υπάρχουν ασύγχρονα και μη threads. Τα ασύγχρονα εκτελούνται χωρίς να ενδιαφέρονται για την κατάσταση των άλλων threads. Μερικές φορές χρειάζεται η επίγνωση της κατάστασης άλλων threads. 34

35 Συγχρονισμός των νημάτων - Παράδειγμα Σε μια εφαρμογή ένα thread γράφει δεδομένα σε ένα αρχείο και ένα δεύτερο διαβάζει δεδομένα από το αρχείο. Είναι εμφανής η ανάγκη επικοινωνίας μεταξύ των δυο threads για να επιτευχθεί συγχρονιστικός και να αποφευχθούν ανεπιθύμητες καταστάσεις. 35

36 Συλλογές ή ομάδες νημάτων (1/2) Είναι μια συλλογή διαχείρισης threads διαθέσιμων για την εκτέλεση διαφόρων αποστολών. Παρέχουν: Βελτιωμένη απόδοση σε περίπτωση μεγάλου αριθμού αποστολών. Ένα μέσο δέσμευσης πηγών που εμπεριέχει threads που καταναλώνονται κατά την εκτέλεση μιας συλλογής αποστολών. 36

37 Συλλογές ή ομάδες νημάτων (2/2) Με την χρήση των thread pools δεν είναι απαραίτητος ο έλεγχος του κύκλου ζωής των threads. Ο προγραμματιστής μπορεί να επικεντρωθεί στην αποστολή των threads και όχι στους μηχανισμούς τους. 37

38 Συλλογές νημάτων Thread pools ή δυναμική δημιουργία; Η δημιουργία threads είναι ακριβή (αλλά πιο φθηνή από τη δημιουργία διεργασίας). Απόσβεση του κόστους δημιουργίας έρχεται μετά την διατήρηση του thread για αρκετές αιτήσεις. Μπορεί να δημιουργηθεί ένας αριθμός threads στον χρόνο εκκίνησης που προσδιορίζονται καθώς εισέρχονται οι αιτήσεις. 38

39 Οργάνωση πολυνηματικών διεργασιών - 1 ος τρόπος Ανάλογα με τις απαιτήσεις της εφαρμογής υπάρχουν 3 ευρέως χρησιμοποιούμενοι τρόποι για να οργανωθούν τα νήματα μίας διεργασίας server: (α τρόπος οργάνωσης) Dispatcher - worker model: εκτέλεση ίδιων νημάτωνεργατών, 1 dispatcher, πολλαπλά workers, ο dispatcher (α) συγκεντρώνει τα αιτήματα (β) αποφασίζει ποιο ελεύθερο νήμα θα επεξεργαστεί την αίτηση. 39

40 Οργάνωση πολυνηματικών διεργασιών - 2 ος τρόπος (β τρόπος οργάνωσης) Team model: δεν υπάρχει dispatcher, όλα τα νήματα λαμβάνουν όλες τις κλήσεις (αίσθηση ισοδυναμίας μεταξύ των νημάτων), κάθε νήμα εξειδικεύεται στην ικανοποίηση ορισμένου τύπου κλήσεων, παράλληλη επεξεργασία διαφορετικών τύπων αιτήσεων. Δίνει την δυνατότητα παράλληλης εκτέλεσης πολλών διαφορετικών αιτημάτων. 40

41 Οργάνωση πολυνηματικών διεργασιών - 3 ος τρόπος (3 τρόπος οργάνωσης) Pipeline model: υλοποιούν μοντέλα παραγωγούκαταναλωτή (ανάλογο με Unix pipe), η έξοδος ενός νήματος είναι η είσοδος ενός άλλου, η έξοδος του τελευταίου είναι η έξοδος της διεργασίας. 41

42 Σχεδίαση νημάτων στα κατανεμημένα ΛΣ - 1 ος τρόπος Thread per connection. Το thread συντονιστής ανιχνεύει καινούριο client και τον συνδέει με ένα καινούργιο thread. Το καινούριο thread αποκωδικοποιεί την αίτηση, καλεί τον server και περιμένει νέα αίτηση από τον client. 42

43 Thread per servant. Σχεδίαση νημάτων στα ΚΛΣ - 2 ος τρόπος Κάθε υπηρέτης έχει δικό του thread και δικιά του ουρά. Ο συντονιστής διαβάζει μια εισερχόμενη αίτηση και την προωθεί στην ουρά του κατάλληλου υπηρέτη. Ο υπηρέτης παίρνει αιτήσεις από την ουρά του και τις εκτελεί. 43

44 Σχεδίαση νημάτων στα ΚΛΣ - Σύνοψη Εναλλακτικές αρχιτεκτονικές νηματισμού server. 44

45 Σχεδίαση νημάτων (1/2) Πολυεπεξεργαστές: Το περιβάλλον εργασίας βρίσκεται στην κοινή μνήμη. Τα νήματα μπορούν να τρέχουν παράλληλα σε διαφορετικά CPUs. Χρειάζεται μόνο ο συγχρονισμός των προσβάσεων στην κοινή μνήμη. Περιβάλλοντα δικτύου: Μπορεί μια διεργασία στον υπολογιστή Χ να έχει ένα νήμα στον υπολογιστή Υ; Όχι, χωρίς το περιβάλλον εργασιών. Γιατί να νήματα αποτελούν πρόβλημα στα κατανεμημένα συστήματα; Διότι το μοντέλο server απαιτεί πολλαπλά αντίγραφα να τρέχουν τον ίδιο κώδικα. 45

46 Σχεδίαση νημάτων (2/2) Νήματα για το μοντέλο πελάτη/εξυπηρετητή. Κάθε πελάτης κάνει ένα αίτημα στον εξυπηρετητή. Ο εξυπηρετητής εκτελεί μια παρόμοια διαδικασία για όλες τις κλήσεις. η θεματική εναλλαγή, μπορεί να απαιτεί πάρα πολλούς κύκλους. Τα νήματα μειώνουν την επιβάρυνση. Ο προγραμματισμός του εξυπηρετητή, είναι ευκολότερος. 46

47 Μοντέλα αλληλεπίδρασης σε πολυ-υπολογιστές Τα περιβάλλοντα κατανεμημένου προγραμματισμού περιορίζουν όσον αφορά την αλληλεπίδραση των συνιστώμενων μερών. Τα RPC δημιουργούν ένα πιο γνώριμο περιβάλλον αλληλεπίδρασης. 47

48 Μοντέλα αλληλεπίδρασης Ένα κεντρικό πρόγραμμα συνήθως κατέχει ένα απλό νήμα ελέγχου, όταν περιορίζεται σε έναν χώρο μνήμης. Σε περίπτωση ταυτοχρονισμός τα νήματα επικοινωνούν με κοινόχρηστα δεδομένα. Για συγχρονισμό και αμοιβαίο αποκλεισμό χρησιμοποιούνται σημαφόροι και monitors. 48

49 Μοντέλα αλληλεπίδρασης σε Κ.Λ.Σ (1/2) Για Κατανεμημένα Συστήματα: Είναι πάντα πολυνηματικά. Τα RPC επιβάλλουν υπερβολική αστυνόμευση. Τα middleware (βιβλιοθήκες ΚΛΣ) για ανάπτυξη παράλληλων προγραμμάτων προτιμούν την ασύγχρονη μετάδοση δεδομένων. Αν το middleware δεν υποστηρίζει πάνω από έναν τρόπο αλληλεπίδρασης, θα πρέπει να τους υλοποιήσει ο προγραμματιστής με κίνδυνο λαθών και έλλειψης σαφήνειας. 49

50 Μοντέλα αλληλεπίδρασης σε Κ.Λ.Σ (2/2) Μοντέλο αλληλεπίδρασης. Τα στοιχεία επικοινωνούν μέσω των τερματισμών που αποκαλύπτουν τις διεπαφές τους. Η επικοινωνία μεταξύ δυο τερματισμών γίνεται με ανταλλαγή μηνυμάτων. Τα μηνύματα που ανταλλάσσονται ορίζουν ένα πρωτόκολλο επιπέδου εφαρμογής. 50

51 Νήματα POSIX (1/5) Μοντέλο διεργασίας. Το συχνότερο προγραμματιστικό μοντέλο για λειτουργικά συστήματα - παράγωγα UNIX. Η διεργασία αποτελείται από αρκετούς πόρους του συστήματος και είναι δρομολογούμενη οντότητα του συστήματος. Μια διεργασία ανά χώρο διευθύνσεων. Η διεπαφή ελέγχου διεργασιών προσφέρεται μέσω των κλήσεων συστήματος fork, exit, wait. 51

52 Νήματα POSIX (2/5) Πολυεπεξεργαστικό ή Κατανεμημένο σύστημα. Παράλληλη εκτέλεση διεργασιών και επικοινωνία μέσω IPC. Τα νήματα επιτρέπουν την εκτέλεση πολλών ενεργειών σε έναν χώρο διευθύνσεων. Συστήματα που υλοποιούν κάποιον πολυνηματικό μηχανισμό : POSIX, DCE, Mach c, Solaris. 52

53 Νήματα POSIX (3/5) Πρόβλημα η δυνατότητα εφαρμογής μόνο σε στενά συνδεδεμένες αρχιτεκτονικές. Επεκτείνονται μέχρι κάποιον αριθμό επεξεργαστών. Για περισσότερους επεξεργαστές, NORMA. Επικοινωνία με κάποιο είδος εσωτερικού δικτύου. 53

54 Νήματα POSIX (4/5) Για Κατανεμημένα Συστήματα υπάρχουν 2 προγραμματιστικές τάσεις. Ανταλλαγή μηνυμάτων: Ανάγκη επανασυγγραφής και αλλαγής της αλγοριθμικής δομής των προγραμμάτων. Διαμοιραζόμενη μνήμη: Εφαρμόζεται η αφαιρετικότητα μιας διαμοιραζόμενης μνήμης. 54

55 Νήματα POSIX (5/5) Συνήθως τα νήματα σε συστήματα Unix & Linux είναι POSIX threads ή αλλιώς pthreads. Τα pthreads είναι kernel space threads. Υπάρχουν και τα user level threads για τα οποία ο πυρήνας έχει πλήρη άγνοια. 55

56 Παράδειγμα Posix Threads (1/2) #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *print_message_function(void *ptr); void *get_message_function(void *ptr); void *print_message_function(void *ptr) { sleep(2); char *message; message = (char *) ptr; printf("%s \n", message); } 56

57 Παράδειγμα Posix Threads (2/2) main() { pthread_t thread1, thread2; char *message1 = "Thread 1"; char *message2 = "Thread 2"; int iret1, iret2; iret1 = pthread_create(&thread1, NULL, print_message_function, (void*) message1); iret2 = pthread_create(&thread2, NULL, print_message_function, (void*) message2); pthread_join(thread1, NULL); pthread_join(thread2, NULL); printf("thread 1 returns: %d\n",iret1); printf("thread 2 returns: %d\n",iret2); exit(0); } 57

58 Υλοποίηση Πακέτων Νημάτων (1/4) Υπάρχουν δύο προσεγγίσεις για την υλοποίηση ενός πακέτου νημάτων: στον χώρο του χρήστη (user-level), στον πυρήνα του λειτουργικού (kernel-level). 58

59 Υλοποίηση Πακέτων Νημάτων (2/4) Τα σημαντικότερα πλεονεκτήματα της υλοποίησης χώρουχρήστη είναι: ότι μπορεί να υλοποιηθεί επάνω από το υπάρχον λειτουργικό σύστημα, ακόμη και αν αυτό δεν υποστηρίζει πολυνηματισμό. Προσφέρει ευελιξία στην επιλογή αλγορίθμου χρονοπρογραμματισμού εκτέλεσης. Το context switching μεταξύ νημάτων είναι γρηγορότερο, διότι εκτελείται από το runtime system και όχι μέσω kernel traps. Προσφέρει επεκτασιμότητα σε μεγάλο αριθμό νημάτων, διότι οι πίνακες που περιέχουν τους καταχωρητές και τη στοίβα κάθε νήματος δεν πιάνουν χώρο στον πυρήνα. 59

60 Υλοποίηση Πακέτων Νημάτων (3/4) Ένα σημαντικό μειονέκτημα της υλοποίησης χώρου-χρήστη είναι ότι: Η απευθείας εκτέλεση από ένα νήμα ανασταλτικών κλήσεων πυρήνα (πχ διάβασμα από άδεια σωλήνωση) δεν είναι δυνατή. Ο λόγος έτσι θα σταματήσουν όλα τα νήματα της διεργασίας του, μια και ο πυρήνας θα αναστείλει την διεργασία και θα περάσει τον έλεγχο σε άλλη. Όμως είναι απαραίτητη για την ευκολία του προγραμματισμού! Μία μερική λύση (για μερικά λειτουργικά συστήματα) είναι η χρήση κώδικα «μανδύα» γύρω από την κλήση συστήματος μέσα στο νήμα, ώστε αυτή να γίνει μόνον αν δεν προκαλέσει αναστολή της διαδικασίας. 60

61 Υλοποίηση Πακέτων Νημάτων (4/4) Ένα άλλο σημαντικό μειονέκτημα της υλοποίησης χώρου-χρήστη είναι ότι: η χρήση χρονοπρογραμματισμού round-robin με time-slots δεν είναι δυνατή. Ο λόγος είναι ότι δεν υπάρχει clock interrupt εντός μίας διεργασίας. Αν λοιπόν ένα νήμα αρχίσει να εκτελείται, κανένα άλλο νήμα στη διεργασία αυτή δεν θα εκτελεστεί ποτέ (ούτε ο thread-scheduler), εκτός αν το πρώτο ελευθερώσει οικειοθελώς την CPU. Αντίθετα ο πυρήνας παίρνει περιοδικά τον έλεγχο (λόγω clockinterrupts) και μπορεί να εκτελεί τον thread-scheduler εγγυημένα. Μία λύση είναι η αίτηση από το runtime μίας τακτικής διακοπής χρονισμού για να ανακτά τον έλεγχο και να τρέχει τον threadscheduler (δουλεύει μόνον αν δεν ζητούν και τα νήματα διακοπές χρονισμού). 61

62 User level threads Η διαχείριση της εκτέλεσης των νημάτων μιας διεργασίας γίνεται μέσω του πίνακα νημάτων: είναι ένα πακέτο από ρουτίνες, είναι μοναδικός για κάθε διεργασία, περιέχει τα περιεχόμενα του μετρητή προγράμματος, των καταχωρητών του νήματος και τους δείκτες από τις στοίβες. Είναι κοινός για όλα τα νήματα μιας διεργασίας. 62

63 User level threads - Πλεονεκτήματα Τα νήματα επιτρέπουν σε κάθε διεργασία να χρησιμοποιεί διαφορετικό αλγόριθμο χρονοδρομολόγησης. Η διαχείριση του νήματος γίνεται μέσω του πίνακα νημάτων της διεργασίας χωρίς την παρεμβολή του πυρήνα. Οι διαδικασίες του συστήματος χρόνου εκτέλεσης και ο χρονοπρογραμματιστής είναι τοπικές διαδικασίες. Η επίκληση τους είναι πιο αποδοτική από την κλήση του πυρήνα. Εφαρμογές που απαιτούν μεγάλο αριθμό νημάτων εκτελούνται πιο αποδοτικά. Οι καταχωρητές και οι στοίβες δεσμεύουν χώρο στον πίνακα νημάτων της διεργασίας ο οποίος δεν βρίσκεται στον πυρήνα. Επιτρέπει την εκτέλεση των διεργασιών σε λειτουργικά συστήματα που δεν υποστηρίζουν νήματα. 63

64 User level threads - Μειονεκτήματα Όταν ένα νήμα εκτελεί μία κλήση συστήματος που προκαλεί αναστολή αναστέλλονται και τα υπόλοιπα νήματα της διεργασίας. Μόνο μία διεργασία ανατίθεται για εκτέλεση από τον πυρήνα ανά χρονική στιγμή σε έναν επεξεργαστή. Οι πολυνηματικές εφαρμογές δεν επωφελούνται από τα πλεονεκτήματα του πολυπρογραμματισμού. Όταν ένα νήμα εισέλθει στη CPU κανένα άλλο νήμα δε μπορεί να αποκτήσει τον έλεγχο της εκτός και αν αυτό παραδώσει τον έλεγχο οικειοθελώς. 64

65 (a) user level threads (b) kernel level threads 65

66 Kernel level threads Ο πυρήνας γνωρίζει την ύπαρξη των νημάτων και εκτελεί τη δρομολόγησή τους με βάση το νήμα. Όλες οι διεργασίες έχουν κοινό σύστημα χρόνου εκτέλεσης και πίνακα νημάτων. Ο πυρήνας έχει έναν πίνακα διεργασιών για την παρακολούθησή τους. Ο πίνακας νημάτων του πυρήνα διαχειρίζεται τα νήματα όλων των διεργασιών. Η δημιουργία και η καταστροφή των νημάτων πραγματοποιείται με μία κλήση στον πυρήνα, ο οποίος ενημερώνει τον πίνακα νημάτων. 66

67 Kernel level threads - πλεονεκτήματα Νήματα της ίδιας διεργασίας μπορούν να εκτελεστούν ταυτόχρονα σε διαφορετικούς επεξεργαστές Επωφελούμαστε από τα πλεονεκτήματα του πολυπρογραμματισμού. Όταν ένα νήμα μπλοκάρεται ο πυρήνας μπορεί να δρομολογήσει άλλο νήμα της ίδιας διεργασίας. 67

68 Kernel level threads - μειονεκτήματα Οι εναλλαγές των νημάτων για εκτέλεση μέσω του πυρήνα επιφέρουν μεγάλο κόστος. Η δημιουργία και καταστροφή των νημάτων επιφέρει μεγάλο κόστος. Μια λύση είναι η ανακύκλωση των νημάτων. Δεν καταστρέφονται οι δομές δεδομένων των νημάτων όταν αλλά σημαδεύονται ως μη εκτελέσιμα. Κατά τη δημιουργία ενός νέου νήματος δεσμεύονται οι ήδη υπάρχουσες δομές και επανενεργοποιείται ένα παλιό νήμα. Μειώνεται η επιβάρυνση του συστήματος. 68

69 User level or kernel level threads Υπάρχει σημαντική επιτάχυνση χρησιμοποιώντας νήματα στο χώρο του χρήστη απ ότι στο χώρο του πυρήνα. Εάν η εκτέλεση μιας εφαρμογής απαιτεί πολλές προσπελάσεις στον πυρήνα, τότε είναι πιο αποδοτική η υλοποίησή της στο χώρο του πυρήνα. 69

70 Νήματα χρήστη vs. Νήματα πυρήνα Νήματα χρήστη: Ο πυρήνας χρονοδρομολογεί τις διεργασίες. Οι διεργασίες χρονοδρομολογούν τα ανεξάρτητα νήματα. Επιτρέπει την προσαρμοσμένη χρονοδρομολόγηση των νημάτων: Πρέπει να γίνει στη διεργασία που χρονοδρομολογήθηκε από τον πυρήνα. Πρόβλημα: Πώς χρονοδρομολογούνται τα υπόλοιπα νήματα; Μόνο αν το τρέχων νήμα απελευθερώσει την CPU. Μερικά συστήματα δεν έχουν νήματα πυρήνα: Υπάρχουν πακέτα νημάτων για το UNIX. Νήματα πυρήνα: Ο πυρήνας χρονοδρομολογεί και διευθύνει τα νήματα. Όταν κάποιο νήμα αδρανοποιείται επιλέγει κάποιο άλλο. Ο πυρήνας μπορεί επίσης και να προεκχωρεί τα νήματα. Είτε από την ίδια είτε από διαφορετική διεργασία. Προσοχή στις θεματικές εναλλαγές. Οι εναλλαγές μεταξύ διεργασιών είναι επιβαρυντικές. Χρειάζεται η ταυτόχρονη χρονοδρομολόγηση των νημάτων από την ίδια διεργασία. 70

71 Νήματα χρήστη - Νήματα πυρήνα Νήματα χρήστη: καλές επιδόσεις Δεν υπάρχουν χρονοβόρες εναλλαγές μεταξύ χώρου χρήστη και πυρήνα. Νήματα πυρήνα: ευκολία στον προγραμματισμό. Δεν χρειάζονται no-blocking reads κτλ. 71

72 Yβριδικές υλοποιήσεις Έχουμε συνδυασμό πλεονεκτημάτων υλοποίησης νημάτων στο χώρο χρήστη και πυρήνα. Χρησιμοποιούνται νήματα επιπέδου πυρήνα αλλά και νήματα επιπέδου χρήστη. τα τελευταία πολυπλέκονται σε ένα ή σε όλα τα νήματα πυρήνα. ο πυρήνας μπορεί να διαχειρίζεται μόνο τα νήματα επιπέδου πυρήνα τα πολυπλεγμένα νήματα σχεδιάζονται, καταστρέφονται και χρονοπρογραμματίζονται όπως τα κοινά νήματα του επιπέδου του χρήστη σε σύστημα που δεν έχει δυνατότητες πολυνημάτωσης. Κάθε νήμα επιπέδου πυρήνα εξυπηρετεί εκ περιτροπής τα νήματα επιπέδου χρήστη. 72

73 Σχεδιαστικά Ζητήματα για Πακέτα Νημάτων Η υποστήριξη νημάτων σε ένα σύστημα γίνεται μέσω ενός συνόλου θεμελιωδών λειτουργιών (πχ κλήσεις σε βιβλιοθήκες), το οποίο αποκαλείται πακέτο νημάτων (threads package). Τα βασικά ζητήματα σχεδίασης ενός τέτοιου πακέτου είναι: δημιουργία νημάτων, τερματισμός νημάτων, συγχρονισμός νημάτων, χρονοπρογραμματισμός νημάτων, διαχείριση σημάτων. 73

74 Δημιουργία Νημάτων Τα νήματα μπορούν να δημιουργούνται: στατικά ή δυναμικά Στην στατική προσέγγιση: ο αριθμός νημάτων μίας διεργασίας είναι σταθερός για όλη τη ζωή της και καθορίζεται όταν γράφεται το πρόγραμμα ή κατά το compilation, κάθε νήμα έχει stack σταθερού μεγέθους. Στην δυναμική προσέγγιση: νέα νήματα δημιουργούνται κατά την εκτέλεση της διεργασίας, το μέγεθος του stack, το scheduling priority και άλλες παράμετροι καθορίζονται στην κλήση δημιουργίας του νέου νήματος, η κλήση επιστρέφει ένα thread identifier. 74

75 Δεν υπάρχει προστασία ανάμεσα στα νήματα (χρειάζεται όμως;) Δεν υπάρχει προστασία ανάμεσα στα νήματα. Υποθέτοντας ότι τα νήματα έχουν σχεδιαστεί για να συνεργάζονται: Έχουν πρόσβαση στα κοινά δεδομένα (global data). Race conditions. Εξαρτάται από την στρατηγική χρονοπρογραμματισμού των νημάτων: Μη προληπτικό: Το νήμα πρέπει οπωσδήποτε να παραχωρήσει την CPU. Προληπτικό: Μπορεί να προκύψουν race conditions. 75

76 Τερματισμός Νημάτων Ένα νήμα μπορεί να τερματίσει τον εαυτό του με ένα exit call ή να τερματιστεί από εξωτερικούς παράγοντες (πχ από τη διεργασία του με κατάλληλη κλήση και το thread id). Συχνά τα νήματα δεν τερματίζονται ποτέ, όπως για παράδειγμα σε περιπτώσεις στατικής δημιουργίας τους. 76

77 Συγχρονισμός νημάτων (1/3) Η χρήση νημάτων είναι δύσκολη γιατί: Παρουσιάζονται προβλήματα στον συγχρονισμό και στα locks. Deadlocks. 77

78 Συγχρονισμός νημάτων (2/3) Τα νήματα μίας διεργασίας μοιράζονται κοινό address space. Συνεπώς απαιτούνται μηχανισμοί αμοιβαίου αποκλεισμού σε περιπτώσεις ταυτόχρονης προσπάθειας χρήσης κοινόχρηστων πόρων. Χρησιμοποιούνται 2 μηχανισμοί: mutex variables, condition variables (μεταβλητές συνθήκης). 78

79 Συγχρονισμός νημάτων (3/3) Mutex: Ουσιαστικά είναι ένα δυαδικό semaphore. Στο πακέτο νημάτων της C: mutex_lock(mutexid). mutex_unlock(mutexid). non-blocking mutex: trylock. Μπορεί να προκύψουν deadlocks με το κλείδωμα των σηματοφόρων. Μεταβλητές συνθήκης: Χρήση για μεγάλες αναμονές. Χρησιμοποιώντας σήματα στις μεταβλητές συνθήκης μειώνουμε την πιθανότητα για deadlocks. condition_wait (conditionid, mutexid): Αίτημα queue στη conditionid. Μετά το mutex ξεκλειδώνεται. condition_signal(conditionid) Άν ένα νήμα είναι σε αναμονή για την συνθήκη conditionid, ξεκλειδώνεται. 79

80 Το πρόβλημα των global data Πρόβλημα μεταβλητών global: Οι μεταβλητές είναι κοινές σε όλα τα νήματα. Μεταβλητή errno στο Unix. Η C χρησιμοποιεί απλό buffer για κάθε stream: Τα νήματα μπορούν να γράφουν στο buffer ή να αλλάζουν το pointer χωρίς συνοχή. Λύση: Κάθε νήμα έχει τις δικές του private μεταβλητές: create_global( data1 ) Δημιουργεί τοπικό χώρο για την μεταβλητή. Τα υπόλοιπα νήματα καλούν την συνάρτηση create_global για να έχουν ξεχωριστό χώρο διευθύνσεων. set_global( data1 ) Γράφει στην τοπική διεύθυνση μνήμης. x = read_global( data1 ) Ανάγνωση δεδομένων από τοπική διεύθυνση. 80

81 Συγχρονισμός Νημάτων με mutex (1/2) Ένα mutex είναι σαν ένας δυαδικός σημαφόρος και βρίσκεται πάντα σε κατάσταση locked, ή unlocked. Ένα νήμα που θέλει να μπει σε critical region προσπαθεί να κάνει lock στο κατάλληλο mutex variable. Αν δεν είναι ήδη κλειδωμένο, μπαίνει στην κρίσιμη περιοχή. Αν είναι ήδη κλειδωμένο τότε: το νήμα μπλοκάρεται και μπαίνει σε ουρά περιμένοντας το ξεκλείδωμα του mutex, ή επιστρέφεται ένα failure status code, οπότε το νήμα αποφασίζει το ίδιο αν θα συνεχίσει την προσπάθεια ή αν θα κάνει κάποια άλλη επεξεργασία. 81

82 Συγχρονισμός Νημάτων με mutex (2/2) Συχνά υποστηρίζονται και οι δύο τρόποι. Αν προσπαθήσουν ταυτόχρονα δύο διαφορετικά νήματα να κάνουν lock στo ίδιο mutex, επιτυγχάνει μόνον το ένα. Μόλις ένα νήμα βγει από την κρίσιμη περιοχή κάνει unlock στο αντίστοιχο mutex. Η υλοποίηση των μεταβλητών mutex είναι εύκολη διότι έχουν μόνον δύο καταστάσεις. Όμως η χρησιμότητά τους περιορίζεται στην φύλαξη της εισόδου σε κρίσιμες περιοχές. Για γενικότερο συγχρονισμό χρησιμοποιούνται οι μεταβλητές συνθήκης. 82

83 Συγχρονισμός Νημάτων με Μεταβλητές Συνθήκης (1/2) Κάθε μεταβλητή συνθήκης (ΜΣ) συνδέεται με μια μεταβλητή mutex και αντανακλά την κατάστασή της. Οι δύο βασικές λειτουργίες σε μια ΜΣ είναι wait και signal. Όταν ένα νήμα εκτελέσει wait σε μία ΜΣ, το αντίστοιχο mutex γίνεται unlock, και το νήμα αναστέλλεται μέχρι κάποιο άλλο νήμα να εκτελέσει signal στην ΜΣ αυτή. Όταν ένα νήμα κάνει signal σε μία ΜΣ, το αντίστοιχο mutex γίνεται lock, και το νήμα που περίμενε συνεχίζει την εκτέλεσή του. 83

84 Συγχρονισμός Νημάτων με Μεταβλητές Συνθήκης (2/2) Οι ΜΣ χρησιμοποιούνται ευρέως από συνεργαζόμενα νήματα τύπου producer-consumer. Στο μοντέλο αυτό ο producer τροφοδοτεί τον consumer με δεδομένα, μέσω ενός buffer ορισμένου μεγέθους. Ο producer ελέγχει αν το buffer είναι γεμάτο. Αν είναι, κάνει wait σε μία ΜΣ nonfull, αλλιώς βάζει δεδομένα και κάνει signal σε μία ΜΣ nonempty. Ο consumer ελέγχει αν το buffer είναι άδειο. Αν είναι, κάνει wait στην ΜΣ nonempty, αλλιώς παίρνει δεδομένα και κάνει signal στην ΜΣ nonfull. 84

85 Διαχείριση νημάτων Τα σήματα παρέχουν διακοπές και αποκλεισμό. Οι κοινές καθολικές μεταβλητές προκαλούν πρόβλημα στην διαχείριση τους επειδή τροποποιούνται με κάθε πρόσβαση που γίνεται σε αυτές από άλλα νήματα. Μια λύση είναι: η δημιουργία ενός νήματος που θα χειρίζεται τις διακοπές αυτές μέσα στην κάθε διεργασία, και αναθέτουμε σε κάθε νήμα ιδιωτικές καθολικές μεταβλητές για την αποθήκευση των καταστάσεων αμοιβαίου αποκλεισμού. 85

86 Χρονοπρογραμματισμός Νημάτων Συνήθως τα πακέτα νημάτων δίνουν την δυνατότητα καθορισμού αλγορίθμου χρονοπρογραμματισμού εκτέλεσής των νημάτων. Οι πιο συνηθισμένοι μηχανισμοί είναι: priority assignment: κάθε νήμα έχει τη δική του προτεραιότητα και το επόμενο νήμα που εκτελείται είναι αυτό με την υψηλότερη. Υποστηρίζεται preemptive και nonpreemptive λειτουργία. dynamic time quantum size: απλό round robin, όπου το time-slot εκτέλεσης του νήματος είναι μεταβλητό. Χρησιμοποιείται όταν ο αριθμός CPU s είναι μεγαλύτερος από τον αριθμό νημάτων. handoff scheduling: κάθε νήμα καθορίζει το επόμενο νήμα στο οποίο θα περάσει ο έλεγχος. 86

87 Ο προγραμματισμός με νήματα είναι δύσκολος Δύσκολο debugging λόγω εξαρτήσεων χρόνου και δεδομένων. Δε μπορούν να σχεδιαστούν ανεξάρτητα modules (σπάει η αφαιρετικότητα). Δε μπορούν να δουλέψουν τα callbacks µε locks. 87

88 Hyperthreading (υπερνημάτωση) 88

89 Hyper threading στους επεξεργαστές (1/2) Τεχνολογία της Intel επεξεργαστές Pentium4. Δημιουργείται ένα virtual σύστημα με δυο επεξεργαστές άνισης ταχύτητας. Είναι χρήσιμο µε: Multithreading εφαρµογές. Διαφορετικά threads που χρησιμοποιούν διαφορετικό μέρος της CPU. 89

90 Yπερ-νημάτωση (Hyperthreading) Παρουσιάζει στο λογισμικό 2 λογικούς επεξεργαστές, ακόμα και όταν μόνο ένας φυσικός επεξεργαστής είναι παρών. Διπλασιάζει ουσιαστικά τον αριθμό των επεξεργαστών που αναγνωρίζει το λειτουργικό σύστημα. Το λειτουργικό σύστημα αναγνωρίζει 2 επεξεργαστές επειδή ένας επεξεργαστής HT έχει 2 σύνολα αρχιτεκτονικών πόρων. Όμως τεχνικά είναι μόνο ένας επεξεργαστής επειδή οι υπολογιστικοί πόροι δεν διπλασιάζονται. 90

91 Yπερ-νημάτωση (HT) Διαμοιρασμός πόρων: Οι λογικοί επεξεργαστές μοιράζονται τις μονάδες εκτέλεσης. Μία επιτάχυνση γίνεται αντιληπτή μόνο όταν ένα νήμα είναι σε θέση να εκμεταλλευτεί τις μονάδες εκτέλεσης που αφέθηκαν ελεύθερες από το άλλο νήμα. Για παράδειγμα όταν ένα νήμα υπολογίζει ακέραιους, και το άλλο πραγματικούς αριθμούς, τότε είναι σίγουρο ότι θα επιτύχουν την μέγιστη χρήση των υπολογιστικών πόρων της CPU. Διαχωρισμός πόρων: Η CPU έχει πόρους που είναι στατικά κατατετμημένες μεταξύ των νημάτων, όπως οι ουρές μ-op, ουρές load-store, re-order buffers, κτλ. Αυτοί οι πόροι μπορούν να κατανεμηθούν σε ένα λογικό επεξεργαστή όταν η υπερνημάτωση είναι απενεργοποιημένη, αλλά μοιράζονται 50/50 όταν είναι ενεργοποιημένη. 91

92 ΗΤ στον Intel Atom Ο Atom παρουσιάζει μια καινούργια αρχιτεκτονική m (marchitecture (mobile)) χαμηλών ενεργειακών απαιτήσεων. Μία από τις αξιοσημείωτες αλλαγές που έχουν ως αποτέλεσμα δραστική μείωση της ενεργειακής κατανάλωσης είναι η αφαίρεση της εκτέλεσης εντολών εκτός σειράς. Μία CPU που εκτελεί εντολές εκτός σειράς μπορεί να κρατάει τις μονάδες εκτέλεσής του απασχολημένες. Σαν αποτέλεσμα ο Atom έχει πολύ μεγαλύτερη αύξηση επιδόσεων με την υπερνημάτωση από τους P4, ή τους Core i7. 92

93 Οφέλη: Hyper threading στους επεξεργαστές (2/2) Μικρότερο overhead λειτουργικού συστήματος. Η αλληλεπίδραση ανάμεσα σε εφαρμογές και client μπορεί να αλλάξει την απόδοση και των δύο. 93

94 Τέλος Ενότητας 94

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 8: Νήματα και Παραλληλισμός Διεργασιών Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

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

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

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

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

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

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

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

Ε-85: Ειδικά Θέµατα Λογισµικού

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

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

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

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

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

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

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

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

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

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

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

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

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

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

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

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

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

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

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

Εισαγωγικά & Βασικές Έννοιες Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

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

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

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

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

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

Διεργασίες και Νήματα (2/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα

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

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

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

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

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

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

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

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)

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

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

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

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

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 2: Διεργασίες και Νήματα Διαδικαστικά 2 Γραφτήκατε στη λίστα; Σχηματίστε ομάδες (για το project)! Στο προηγούμενο επεισόδιο 3 Τι είναι λειτουργικό; Γενιές ΛΣ Βασικές

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 3: Διεργασίες. Καταστάσεις Διεργασιών. PCB. Νήματα. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες» 1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο

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

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

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Εισαγωγή H κεντρική μονάδα επεξεργασίας (ΚΜΕ) και η κύρια μνήμη αποτελούν τα βασικά δομικά στοιχεία ενός υπολογιστικού συστήματος. Η πρώτη εκτελεί εντολές χειρισμού δεδομένων

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

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

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

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Κεντρικής Μονάδας Επεξεργασίας (CPU) Βασίλης Σακκάς 4/12/2013 1 Xρονοδρομολόγηση Διεργασιών 1 Η χρονοδρομολόγηση σε ένα Λ/Σ αποφασίζει ποια διεργασία θα χρησιμοποιεί

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

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

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

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

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

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1 ΕΠΛ222: Λειτουργικά Συστήματα (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Operating Systems: Internals and Design Principles, 8/E, William Stallings) Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος

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

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

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

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

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1 Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Μονονηματική / πολυνηματική εκτέλεση Μονονηματικό μοντέλο εκτέλεσης (συμβατικό) Οι εντολές του κώδικα εκτελούνται σειριακά Ένα μοναδικό νήμα εκτέλεσης (execution

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Η χρήση του χρόνου Μ.Στεφανιδάκης Συστήματα πραγματικού χρόνου: ελεγκτής και ελεγχόμενο σύστημα real-time system

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

Προγραμματισμός Ταυτόχρονος Προγραμματισμός Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο

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

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

Λειτουργικά Συστήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Λειτουργικά Συστήματα Ενότητα 3: Διεργασίες. Καταστάσεις Διεργασιών. PCB. Νήματα. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

Σκελετός Παρουσίασης Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Σκελετός

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

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

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

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

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

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

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

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

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

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

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

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

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ 2. Σκοποί και Λειτουργίες των ΛΣ Λειτουργικά Συστήματα Η/Υ I. Προστασία του υλικού II. Επικοινωνία με τον χρήστη III. Διαχείριση, αξιοποίηση και έλεγχος πόρων IV. Ικανότητα και ευκολία εξέλιξης Κεφάλαιο

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 2β: Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

ΜΑΘΗΜΑ: Υπολογιστικά Νέφη

ΜΑΘΗΜΑ: Υπολογιστικά Νέφη Comment [h1]: Παράδειγμ α: https://ocp.teiath.gr/modules/ exercise/exercise_result.php?course=pey101&eurid=16 9 ΜΑΘΗΜΑ: Υπολογιστικά Νέφη ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 5: Αδιέξοδα Συγχρονισμός στον Πραγματικό Κόσμο Χρειάζεται οποτεδήποτε > 1 χρήστης πόρου Λίγο πολύ οι ίδιες λύσεις με τον πραγματικό κόσμο: κλείδωμα (στo WC), χρονοπρογραμματισμός

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 13: Ταυτόχρονος Προγραμματισμός Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν

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

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες Το μάθημα ΛΣ Πραγματικού Χρόνου Θεωρητικό υπόβαθρο Αρχές Προγραμματισμού Παραδείγματα ΛΣ Εργασίες

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

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

Περιγραφή και Έλεγχος ιεργασιών Περιγραφή και Έλεγχος ιεργασιών Περίληψη ιεργασίες Πολυπρογραµµατισµός Καταστάσεις ιεργασιών Περιγραφή διεργασιών στο ΛΣ Έλεγχος διεργασιών Το ΛΣ Linux 1 ιεργασία (process) ιεργασία είναι κάθε πρόγραµµα

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:10 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στην Πληροφορική & τον Προγραμματισμό Ενότητα 2 η : Λειτουργία Η/Υ Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Διοίκησης Επιχειρήσεων

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

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

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ Καθ. Παπαδάκη Αν. Λειτουργικά Συστήματα 1 Περιγραφή Διεργασίας Στους υπολογιστές που έχουν μια μόνο ΚΜΕ, σε κάθε χρονική στιγμή μπορεί να εκτελείται μια μόνο εντολή γλώσσας

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Δομή Λειτουργικών Συστημάτων Βασίλης Σακκάς 20/11/2013 1 Δομή ενός Λ/Σ -1 Μονολιθικά συστήματα (monolithic systems) Λειτουργικά συστήματα με ανυπαρξία δομής: "η μεγάλη ακαταστασία"

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

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

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

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

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Χρονοδρομολογητής Κυκλικής Επαναφοράς Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 4 η Εργαστηριακή Άσκηση: Χρονοδρομολογητής Κυκλικής Επαναφοράς Λειτουργικά Συστήματα Υπολογιστών

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

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

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

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

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση Εργαστηριακή Άσκηση Οι Αλγόριθμοι Χρονοπρογραμματισμού First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Επιμέλεια: Βασίλης Τσακανίκας Περιεχόμενα Αλγόριθμοι

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις Υλικό από: Κ Διαμαντάρας, Λειτουργικά Συστήματα, Τμήμα Πληροφορικής ΤΕΙΘ Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1 Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:03 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

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

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Δομημένος Προγραμματισμός Ενότητα 5(γ): Εργαστηριακή Άσκηση Αναπλ. Καθηγητής: Κωνσταντίνος Στεργίου Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Πολυπύρηνοι επεξεργαστές Multicore processors Πολυπύρηνοι επεξεργαστές Multicore processors 1 Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας

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

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1 Νήµατα ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων Κατανεµηµένα Συστήµατα 10-1 ιεργασίεςκαι νήµατα ιεργασία 1 Μνήµη ιεργασία 2 Μνήµη ιεργασία 3 Μνήµη Λειτουργικό Σύστηµα

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

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

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

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες Μ.Στεφανιδάκης Το μάθημα ΛΣ Πραγματικού Χρόνου Θεωρητικό υπόβαθρο Αρχές Προγραμματισμού Παραδείγματα

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

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

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

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