Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Νήματα στη Java Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
Το υλικο του Υπολογιστη
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Message Passing Interface (MPI)
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΜΑΘ-3122/106 Προγραμματισμός
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
1/12/2003Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
3. Αρχιτεκτονικές Λ.Σ. Μονολιθικά συστήματα
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 11 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
Π ΑΡΑΛΛΗΛΗ / ΚΑΤΑΝΕΜΗΜΕΝΗ ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ Εισαγωγή στο OpenMP.
Λειτουργικά συστήματα ΙΙ
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Σχεδίαση αλγορίθμων (2ο μέρος)
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Message Passing Interface (MPI) Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων Αθήνα, Δεκέμβριος 2002.
Κατανεμημένα Συστήματα με Java
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
JAVA: Threads Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Διεργασίες Λειτουργικά Συστήματα. Λειτουργικά Συστήματα/ Slide 2 Η Έννοια της Διεργασίας * Διεργασία (Process) – ο μηχανισμός εκτέλεσης ενός προγράμματος.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
Λειτουργικά Συστήματα
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Διεργασίες.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Νήματα με την χρήση των Posix Threads (pthreads)‏.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Λειτουργικά Συστήματα
Η Κεντρική Μονάδα Συστήματος Εισαγωγή στην Πληροφορκή 1 Η κεντρική μονάδα του συστήματος (base unit ή system unit) αποτελεί τον πυρήνα ενός υπολογιστή.
1 Λειτουργικά Συστήματα Ενότητα 4 : Αρχιτεκτονικές ΛΣ Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
A’ ΕΠΑ.Λ. Εφαρμογές Πληροφορικής Γεωργιλά Χιονία 1.
Λειτουργικά Συστήματα
Κατανεμημένα Συστήματα
The University of Adelaide, School of Computer Science
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Διπλωματική Εργασία για το Μεταπτυχιακό Δίπλωμα Ειδίκευσης
Εισαγωγή στον Προγ/μό Υπολογιστών
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
H/Y Υλικό Λογισμικό Συστήματος Εφαρμογών. H/Y Υλικό Λογισμικό Συστήματος Εφαρμογών.
Processes.
ΔΙΕΡΓΑΣΙΕΣ.
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Μεταγράφημα παρουσίασης:

Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά: Ένα χώρο διευθύνσεων Συμφραζόμενα της KME (CPU context)… ή νήμα ελέγχου (thread of control) Σε πολυεπεξεργαστικά συστήματα θα είχε νόημα για μια διεργασία να έχει πολλά νήματα ελέγχου Η κλήση fork ενός νήματος παράγει νέο νήμα και όχι μνήμη Πολλαπλά νήματα ελέγχου θα μπορούσαν να τρέχουν στον ίδιο χώρο μνήμης ακόμη και σε μονοεπεξεργαστικά συστήματα

Νήματα Κάθε νήμα μοιράζεται με μηδέν ή περισσότερα νήματα το χώρο διευθύνσεων μιας διεργασίας Τα νήματα έχουν το δικό τους: PC, SP, κατάσταση καταχωρητών, στοίβα Μπορούμε να δούμε μια παραδοσιακή διεργασία ως ένα χώρο διευθύνσεων μνήμης με ένα μοναδικό νήμα

Μοναδικό νήμα σε μία διεργασία

Πολλαπλά νήματα σε ένα χώρο διευθύνσεων

Τί είναι ένα νήμα; Ένα νήμα εκτελεί ένα ρεύμα από εντολές Είναι μια αφαίρεση για τη ροή ελέγχου Πρακτικά, είναι μια κατάσταση KME και μια στοίβα Του ανατίθεται μια KME από τον χρονοπρογραμματιστή Εκτελείται στα συμφραζόμενα ενός χώρου διευθύνσεων

Περίληψη της ιδιωτικής, ανά νήμα, κατάστασης Τι ορίζει την κατάσταση μιας συγκεκριμένης ροής ελέγχου σε ένα εκτελούμενο πρόγραμμα: Στοίβα (τοπικές παράμετροι) Δείκτης στοίβας Καταχωρητές Ιδιότητες χρονοπρογραμματισμού (π.χ. προτεραιότητα)

Διαμοιραζόμενη κατάσταση μεταξύ νημάτων Τι σχετίζεται με το στιγμιότυπο ενός εκτελούμενου προγράμματος: UID, GID, PID Χώρος διευθύνσεων Κώδικας Δεδομένα (εκτός στοίβας σφαιρικές μεταβλητές) Σωρός (δυναμικά δεδομένα) Ανοιχτά αρχεία, υποδοχές, κλειδώματα Αλλαγές που γίνονται από ένα νήμα στη διαμοιραζόμενη κατάσταση είναι ορατές από τα άλλα (απαιτείται συγχρονισμός)

Πώς προγραμματίζουμε με χρήση νημάτων; Χωρίζουμε το πρόγραμμα σε ρουτίνες για να εκτελούνται παράλληλα Αληθινός ή ψεύδο-παραλληλισμός (διαφύλλωση) Εναλλακτικές στρατηγικές για εκτέλεση πολλαπλών ρουτινών

Γιατί προγραμματισμός με νήματα; Χρησιμοποιούνται πολλαπλές ΚΜΕ παράλληλα Μικρό κόστος δημιουργίας/καταστροφής νημάτων Επικάλυψη υπολογισμών και μπλοκαρίσματος σε μονή ΚΜΕ Μπλοκάρισμα λόγω Ε/Ε Υπολογισμοί και επικοινωνία Ταχύτερη εκτέλεση εφαρμογής (όταν υπάρχει και πολλή χρήση Ε/Ε)

Ένας επεξεργαστής κειμένου με τρία νήματα Χρήση νημάτων Ένας επεξεργαστής κειμένου με τρία νήματα

Διεργασίες εναντίον νημάτων - παράδειγμα Μια διεργασία παγκόσμιου ιστού HTTPD GET / HTTP/1.0 δίσκος

Διεργασίες εναντίον νημάτων - παράδειγμα Μια διεργασία παγκόσμιου ιστού Γιατί δεν είναι καλή σχεδίαση διακομιστή ιστού; HTTPD GET / HTTP/1.0 δίσκος

Διεργασίες εναντίον νημάτων - παράδειγμα Μια διεργασία παγκόσμιου ιστού HTTPD HTTPD GET / HTTP/1.0 δίσκος

Διεργασίες εναντίον νημάτων - παράδειγμα Μια διεργασία παγκόσμιου ιστού HTTPD GET / HTTP/1.0 GET / HTTP/1.0 δίσκος

Διεργασίες εναντίον νημάτων - παράδειγμα Μια διεργασία παγκόσμιου ιστού HTTPD GET / HTTP/1.0 GET / HTTP/1.0 GET / HTTP/1.0 δίσκος GET / HTTP/1.0

Νήματα σε έναν διακομιστή ιστού Ένας πολυνηματικός διακομιστής ιστού

Χρήση νημάτων Χονδρικό περίγραμμα του κώδικα της προηγούμενης διαφάνειας Νήμα διεκπεραιωτή Νήμα εργασίας

Επιλογές δόμησης συστήματος Τρεις τρόποι να δομηθεί ένας διακομιστής

Κοινά μοντέλα προγραμματισμού νημάτων Διαχειριστή/εργάτη Ο διαχειριστής χειρίζεται την Ε/Ε και αναθέτει δουλειά στους εργάτες Οι εργάτες μπορούν να δημιουργούνται δυναμικά ή να παρέχονται από μια δεξαμενή νημάτων Διοχέτευση Κάθε νήμα χειρίζεται διαφορετικό στάδιο μιας γραμμής συναρμολόγησης Τα νήματα παραδίδουν δουλειά το ένα στο άλλο σε μια σχέση παραγωγού-καταναλωτή

Πώς μοιάζει ένα τυπικό πολυνηματικό API; Στάνταρ νήματα POSIX (Pthreads) Το πρώτο νήμα υπάρχει στη main(), τυπικά δημιουργεί τα άλλα

Χρησιμοποιώντας τις συναρτήσεις create, join και exit

Παράδειγμα με Pthreads #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { printf("\n%d: Hello World!\n", threadid); pthread_exit(NULL); } int main (int argc, char *argv[]) pthread_t threads[NUM_THREADS]; int rc, t; for(t=0; t<NUM_THREADS; t++) printf("Creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t); if (rc) printf("ERROR; return code from pthread_create() is %d\n", rc); exit(-1); Έξοδος προγράμματος Creating thread 0 Creating thread 1 0: Hello World! 1: Hello World! Creating thread 2 Creating thread 3 2: Hello World! 3: Hello World! Creating thread 4 4: Hello World!

Υπέρ και κατά των νημάτων Υπέρ: Επικάλυψη Ε/Ε με υπολογισμούς Φθηνότερες μεταγωγές περιβάλλοντος Καλύτερη αντιστοίχιση σε πολυεπεξεργαστές διαμοιραζόμενης μνήμης Κατά: Πιθανές αλληλεπιδράσεις νημάτων Πολυπλοκότητα αποσφαλμάτωσης Πολυπλοκότητα πολυνηματικού προγραμματισμού Προς τα πίσω συμβατότητα με υπάρχοντα κώδικα

Νήματα επιπέδου χρήστη Πολλαπλοί ιδεατοί απαριθμητές προγράμματος πάνω από έναν πραγματικό με προνομιούχο ή μή κώδικα Τα νήματα μπορούν να υλοποιηθούν στο επίπεδο του Λ.Σ. ή του χρήστη Υλοποιήσεις επιπέδου χρήστη: Ο χρονοπρογραμματιστής τρέχει ως κώδικας χρήστη (βιβλιοθήκη νημάτων) Διαχειρίζεται συμφραζόμενα νημάτων στο χώρο χρήστη Το υποκείμενο Λ.Σ. βλέπει μόνο μια παραδοσιακή διεργασία από πάνω.

Νήματα επιπέδου χρήστη Ο κώδικας μεταγωγής μεταξύ νημάτων είναι στο χώρο χρήστη

Νήματα επιπέδου χρήστη Πλεονεκτήματα: Οικονομική μεταγωγή περιβάλλοντος μεταξύ νημάτων της ίδιας διεργασίας Κλήση διαδικασίας και όχι συστήματος Πολιτική χρονοδρομολόγησης προγραμματιζόμενη από το χρήστη Μειονεκτήματα: Πώς χειριζόμαστε τις ανασταλτικές κλήσεις συστήματος; Πώς επικαλύπτουμε υπολογισμούς και Ε/Ε;

Νήματα επιπέδου πυρήνα Ο κώδικας μεταγωγής μεταξύ νημάτων είναι στον πυρήνα

Υβριδική υλοποίηση