Νήματα με την χρήση των Posix Threads (pthreads)‏.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Νήματα στη Java Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία
Advertisements

Η επιστήμη των υπολογιστών
Λειτουργικά Συστήματα
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
1 Κλήση Απομακρυσμένων Διεργασιών (Remote Procedure Call - RPC) Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Λειτουργικό Σύστημα 2ο μέρος.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Message Passing Interface (MPI)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
1/12/2003Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
William Stallings Computer Organization and Architecture 7 th Edition Κεφάλαιο 16 Λειτουργία Μονάδας Ελέγχου.
Αδιέξοδο Μόνιμο μπλοκάρισμα ενός συνόλου διεργασιών που είτε συναγωνίζονται για πόρους του συστήματος είτε επικοινωνούν μεταξύ τους Δεν υπάρχει αποδοτική.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Σχεδίαση αλγορίθμων (2ο μέρος)
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
ΣΥΝΑΡΤΗΣΕΙΣ.
Message Passing Interface (MPI) Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων Αθήνα, Δεκέμβριος 2002.
Κατανεμημένα Συστήματα με Java
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
JAVA: Threads Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΗΥ-340 – Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Λειτουργικά Συστήματα
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Spring 2007 Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας 1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Virtual Machine.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Διεργασίες.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Λειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
1 Λειτουργικά Συστήματα Ενότητα 4 : Αρχιτεκτονικές ΛΣ Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Κατανεμημένα Συστήματα
The University of Adelaide, School of Computer Science
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
The University of Adelaide, School of Computer Science
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Το μοντέλο πελάτη - εξυπηρετητή
Διπλωματική Εργασία για το Μεταπτυχιακό Δίπλωμα Ειδίκευσης
Εισαγωγή στον Προγ/μό Υπολογιστών
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Processes.
ΔΙΕΡΓΑΣΙΕΣ.
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Μεταγράφημα παρουσίασης:

Νήματα με την χρήση των Posix Threads (pthreads)‏

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

pthreads API το pthreads API καθορίζεται από το POSIX (Portable Operating System for Information Exchange ) πρότυπο. οι συναρτήσεις του phtreadsAPI μπορούν να κατηγοριοποιηθούν χοντρικά σε δυο κύριες κατηγορίες  Χειρισμού νημάτων δημιουργία, καταστροφή...  αμοιβαίου αποκλεισμού (mutexes)‏ δημιουργία κλειδώματος, καταστροφή κλειδώματος,...  μεταβλητών συνθήκης (condition variables )

pthreads ΑPI ( βασικές κλήσεις χειρισμού νημάτων)‏ pthread_create:  δημιουργεί ένα καινούργιο νήμα. pthread_exit:  καλείται από το νήμα στον τερματισμό. pthread_join:  αναγκάζει το κυρίως πρόγραμμα που ξεκίνησε τα νήματα, να περιμένει μέχρι αυτά να τερματίσουν και να επιστρέψουν. pthread_yield:  παραδίδει τον επεξεργαστή για να εκτελεστεί ένα άλλο νήμα.

τυπικός κύκλος ζωής νημάτων main(...){... pthread_create(...);.... pthread_join(...);.... exit(0); } κυρίως πρόγραμμα void * thread1(){... pthread_exit(...); } thread 1 thread 2 void * thread2(){... pthread_exit(...); }

μοντέλο μνήμης νημάτων

δημιουργία νήματος pthread_create(pthread_t * th,pthread_attr_t *attr, void (*start_routine)(void *),void * arg);  pthread_t *t χειριστής του νήματος.  pthread_attr_t *attr επιπλέον χαρακτηριστικά για το νήμα. Με NULL προεπιλέγονται τα βασικά χαρακτηριστικά  void (*start_routine)(void *)‏ η ρουτίνα που αποτελεί το νήμα  void *arg τα ορίσματα της ρουτίνας που αποτελεί το νήμα

δημιουργία νήματος... η κλήση pthread_create αν είναι επιτυχημένη επιστρέφει ένα μοναδικό χαρακτηριστικό τύπου pthread_t για το νέο νήμα και η κλήση της ρουτίνας επιστρέφει 0. Σε περίπτωση λάθους η ρουτίνα επιστρέφει μη μηδενικό κωδικό λάθους. Επειδή στο όρισμα start_routine περνάμε μόνο την διεύθυνση της ρουτίνας-νήματος για τα ορίσματα που τυχόν έχει τα συγκεντρώνουμε σε μια struct και περνάμε το δείκτη σε αυτή στο όρισμα args.

τερματισμός νήματος pthread_exit(void * retval);  τερματίζει την εκτέλεση του νήματος που την καλεί  Παράλληλα στο όρισμα retval τοποθετούμε ένα δείκτη στα δεδομένα που πιθανόν θέλουμε να επιστρέψουμε στο πρόγραμμα που περιμένει στην pthread_join

αναμονή τερματισμού νημάτων pthread_join(pthread_t th, void ** thread_return)‏  Αναβάλει την εκτέλεση του νήματος που την καλεί μέχρι να επιστρέψει το νήμα με το αναγνωριστικό th.  Εαν το thread_return δεν είναι NULL τότε η τιμή που επιστρέφει το νήμα με το αναγνωριστικό th αποθηκεύεται στην περιοχή που δείχνει το thread_return

εθελοντική παράδοση του επεξεργαστή pthread_yield();  Το νήμα που την καλεί απελευθερώνει εθελοντικά τον επεξεργαστή μέχρι να του ξαναδοθεί από το λειτουργικό