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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Υλοποίηση Συστήματος Ψηφοφορίας με τη χρήση Java RMI
Advertisements

Λειτουργικά Συστήματα
Λειτουργικά Συστήματα
Λειτουργικό Σύστημα 2ο μέρος.
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Message Passing Interface (MPI)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Η ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΧΡΗΣΤΗ ΑΠ’ ΤΟΝ Η/Υ ΤΟΜΕΑΣ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Δ.ΙΕΚ ΠΑΤΡΑΣ.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Message Passing Interface (MPI) Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων Αθήνα, Δεκέμβριος 2002.
Κατανεμημένα Συστήματα με Java
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
RPC Vs RMI Άλκης Γεωργόπουλος Αλέξανδρος Καρακασίδης Γεωργία Καστίδου Γεωργία Κολωνιάρη Αναστάσιος Κοντογιώργης Ηλίας Λεοντιάδης Μαρία Παπαφώτη Γιάννης.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
JAVA: Threads Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Τεχνολογία TCP/IP TCP/IP internet είναι ένα οποιοδήποτε δίκτυο το οποίο χρησιμοποιεί τα πρωτόκολλα TCP/IP. Διαδίκτυο (Internet) είναι το μεγαλύτερο δίκτυο.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Tomcat Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
Λειτουργικά Συστήματα
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Διεργασίες.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Νήματα με την χρήση των Posix Threads (pthreads)‏.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Κωνσταντίνος Αντωνής © 2014Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Ομοιόμορφη Αποδοτική Διαχείριση του Ταυτοχρονισμού των Εξυπηρετητών 1.
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ.
Κινητά και Διάχυτα Συστήματα Ενότητα # 3: Νήματα και ταυτοχρονισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
Προγραμματισμός συστήματος και Προηγμένα Λειτουργικά
Δικτυακός Προγραμματισμός (Θ)
Οντοκεντρικός Προγραμματισμός
Κατανεμημένα Συστήματα
Συγχρονισμός Διεργασιών
Κλάσεις και αντικείμενα
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ)
Γιώργος Θάνος Παρασκευή 5 Δεκεμβρίου 2008
Ομοιόμορφη Αποδοτική Διαχείριση του Ταυτοχρονισμού των Εξυπηρετητών
Το μοντέλο πελάτη - εξυπηρετητή
Διπλωματική Εργασία για το Μεταπτυχιακό Δίπλωμα Ειδίκευσης
Εισαγωγή στον Προγ/μό Υπολογιστών
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
ΔΙΕΡΓΑΣΙΕΣ.
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Εξαιρέσεις [Exceptions]
Μεταγράφημα παρουσίασης:

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

Περιεχόμενα Τι είναι τα νήματα Χαρακτηριστικά Νημάτων Σχέση Νημάτων – Διεργασιών Υλοποίηση Νημάτων στην Java Demo

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

Χαρακτηριστικά Νημάτων Ένα νήμα μπορεί να έχει ανεξάρτητη ροή ελέγχου, και να είναι προγραμματίσιμο γιατί διατηρεί: Στοίβα Ιδιότητες χρονοπρογραμματισμού (όπως προτεραιότητα) Σύνολο σημάτων σε αναμονή και σε διακοπή Δεδομένα των νημάτων.

Διαμοιρασμός των πόρων (Αποτελέσματα) Οι αλλαγές που πραγματοποιούνται από ένα νήμα στους διαμοιραζόμενους πόρους (όπως, για παράδειγμα, το κλείσιμο ενός αρχείου), είναι ορατές από όλα τα άλλα νήματα. Δύο δείκτες που έχουν την ίδια τιμή αναφέρονται στο ίδιο δεδομένο. Είναι δυνατή η ανάγνωση και η εγγραφή στην ίδια θέση μνήμης.

Χαρακτηριστικά Νημάτων

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

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

Χαρακτηριστικά μία διεργασίας

Σχέση Νημάτων και Διεργασιών Δυο διαφορετικά νήματα μέσα σε ένα πρόγραμμα έχουν τη δυνατότητα πρόσβασης σε κάποιο αντικείμενο του προγράμματος ενώ δυο διαφορετικές διεργασίες συνήθως βλέπουν διαφορετικά αντίγραφα του ίδιου αντικειμένου. Σε μία διεργασία μπορούν να ανήκουν πολλά νήματα. H δημιουργία των νημάτων γίνεται γρηγορότερα από τη δημιουργία των διεργασιών ( αν και η atlantis.cs.uoi.gr βέβαια έχει άλλη άποψη!!!).

Σχέση Νημάτων και Διεργασιών Η δημιουργία διεργασιών είναι πιο «ακριβή» από άποψη χώρου, διότι ή μνήμη του πατέρα αντιγράφεται στο παιδί. Η επικοινωνία μεταξύ των διεργασιών είναι πιο χρονοβόρα από την επικοινωνία μεταξύ των νημάτων.

Σχέση Νημάτων και Διεργασιών

Νημάτα μέσα σε Διεργασίες Η δημιουργία διεργασιών είναι πιο «ακριβή» από άποψη χώρου, διότι ή μνήμη του πατέρα αντιγράφεται στο παιδί. Η επικοινωνία μεταξύ των διεργασιών είναι πιο χρονοβόρα από την επικοινωνία μεταξύ των νημάτων. Η εναλλαγή νημάτων μέσα στην ίδια διεργασία είναι φθηνότερη από την εναλλαγή διεργασιών, οι οποίες ανήκουν σε διαφορετικές διεργασίες.

Νημάτα μέσα σε Διεργασίες Τα νήματα μέσα στις διεργασίες μπορεί να μοιράζονται δεδομένα και πηγές αποδοτικά σε σύγκριση όταν βρίσκονται σε διαφορετικές διεργασίες. Τα νήματα σε μια διεργασία δεν είναι προστατευμένα μεταξύ τους.

Νήματα στην Java

Τρόποι για την υλοποίηση νέων νημάτων εκτέλεσης Πρώτος τρόπος Δημιουργείται μια νέα κλάση η οποία υλοποιεί τη διαπροσωπεία Runnable Στη κλάση αυτή δηλώνεται μια μέθοδος run η οποία υλοποιεί τη νέα εργασία Παράδειγμα: class CountingJob implements Runnable { private int counter; public CountingJob (int c) { counter = c; } public void run( ) { while(true) System.out.println(counter++); }

Τρόποι για την υλοποίηση νέων νημάτων εκτέλεσης Παράδειγμα: class CountingJob extends Thread { private int counter; public CountingJob (int c) { counter = c; start(); } public void run( ) { while(true) System.out.println(counter++); Δεύτερος τρόπος Δημιουργείται μια νέα υποκλάση της κλάσης Thread Στη υποκλάση αυτή δηλώνεται μια μέθοδος run η οποία υλοποιεί τη νέα εργασία

Χειρισμός Νημάτων στην JAVA Εκκίνηση και τον τερματισμός της εκτέλεσης ενός νήματος Μέθοδοι: start() και stop() Προσωρινή παύση της εκτέλεσης ενός νήματος και την επανεκκίνηση της Μέθοδοι:suspend και resume Καθυστέρηση ενός νήματος εκτέλεσης κατά n milliseconds. sleep(n)

Χειρισμός Νημάτων στην JAVA Χαρακτηρισμός νήματος ως Δαίμονα Μέθοδος: setDaemon(Boolean x) Καθορισμό της προτεραιότητας εκτέλεσης του νήματος Μέθοδος: setPriority Παραχωρήση από ένα νήμα του χρόνου υπολογισμού που του έχει δοθεί Μέθοδος: yield Επιστροφή του τρέχοντος νήματος εκτέλεσης Μέθοδος: currentThread

Μηχανισμός για το συγχρονισμό των νημάτων εκτέλεσης Μηχανισμός για το συγχρονισμό των νημάτων εκτέλεσης Η Java παρέχει έναν αρκετά απλό και εύχρηστο μηχανισμό για το συγχρονισμό των νημάτων εκτέλεσης. Ο μηχανισμός αυτός βασίζεται στην έννοια του κλειδώματος Προκειμένου να επιτευχθεί αποκλειστική πρόσβαση σε ένα σύνολο μεθόδων ενός αντικειμένου, αυτές δηλώνονται ως synchronized

Μηχανισμός για το συγχρονισμό των νημάτων εκτέλεσης Μηχανισμός για το συγχρονισμό των νημάτων εκτέλεσης Η Java παρέχει τη δυνατότητα συγχρονισμού με τις μεθόδους wait και notify της κλάσης Object. Οι κλήσεις σε αυτές τις μεθόδους πραγματοποιούνται σχεδόν πάντα μέσα από συγχρονισμένες μεθόδους ή τμήματα κώδικα.

Threads και RMI Η ταυτόχρονη χρήση Threads και RMI για την υλοποίηση client – server μοντέλου με το συμβατικό τρόπο δεν είναι δυνατή. Παρόλα αυτά, τα Threads μπορούν να χρησιμοποιηθούν για τη παράλληλη εκτέλεση άλλων εργασιών.

Γιατί όχι RMI και Threads μαζί Το RMI από μόνο του υποστηρίζει το serializable interface. Αυτό σημαίνει ότι: για κάθε εισερχόμενη σύνδεση, δημιουργεί ένα νέο νήμα το οποίο το συσχετίζει και με ένα αντικείμενο Όλα τα αντικείμενα αυτά, τα οποία πλέον εκτελούνται παράλληλα, μπαίνουν σε μία ουρά, και φράσσονται και συγχρονίζονται αυτόματα από το RMI χωρίς την επέμβαση του προγραμματιστή.

Γιατί όχι RMI και Threads μαζί Το RMIRegistry αναλαμβάνει να αναμένει για συνδέσεις Σε αντίθεση με τη C, στη Java τα νήματα αναλαμβάνουν τις λειτουργίες ενός αντικειμένου και όχι ξεχωριστών συναρτήσεων

Πιθανή Λύση Το RMI αναμένει να ακούσει για αιτήσεις, και στη συνέχεια δημιουργεί νήματα, τα οποία να εκτελούν εργασίες ως ένα ξεχωριστό αντικείμενο το καθένα. Ο συγχρονισμός θα γίνεται με τις κλήσεις συγχρονισμού των νημάτων

Θα λειτουργούσε αυτή η λύση; Όχι, γιατί καθώς όλες οι αιτήσεις, περνώντας μέσα από το RMI θα σειριοποιούνταν, οπότε η χρήση τέτοιων δομών δε θα προσέφερε ουσιαστικά τίποτα.

Αναφορές Αλέξανδρος Καρακασίδης, «Πολυνηματικός Προσομοιωτής Ασύρματου τοπικού δικτύου ΙΕΕΕ 802.11», Διπλωματική Εργασία, Τμήμα Πληροφορικής, Πανεπιστήμιο Ιωαννίνων, Μάρτιος 2002. Σοφοκλής Εφραιμίδης, Αντώνης Καβάρνος, Τάσος Κουτουμάνος, Βασίλης Παπαδήμος, Νίκος Παπασπύρου, Γιάννης Πατινιωτάκης, Κλειώ Σγουροπούλου, Εισαγωγή στη Γλώσσα Προγραμματισμού Java. Αndrew S. Tanenbaum and Maarten Van Steen, "Distributed Systems: Principles and Paradigms", Prentice Hall, 2002

ΤΕΛΟΣ