Σύνοψη 3 ης ιάλεξης. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων.

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

Download "Σύνοψη 3 ης ιάλεξης. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων."

Transcript

1 Σύνοψη 3 ης ιάλεξης Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης Τετάρτη, 18 Μαρτίου, 2009 Αίθουσα ΑΠ7 Κατανεµηµένα Συστήµατα ΙΙ Επικοινωνία ιεργασιών µέσω TCP/IP Sockets στη JAVA Κλήση Αποµακρυσµένων ιαδικασιών Κατανεµηµένα Αντικείµενα Κατανεµηµένα Αντικείµενα Τεχνολογίες Υλοποίησης Ενδιάµεσα Λογισµικά Remote Method Invocation -- RMI Σύνοψη Μαθήµατος Σύνοψη Μαθήµατος Βιβλιογραφία Επόµενη ιάλεξη Γενικά ίκτυα TCP/IP Μοντέλα Κατανεµηµένων Συστηµάτων Σύνολο Υπολογιστικών Μονάδων Σύνολο ιεργασιών ίκτυο Επικοινωνίας Αποτυπώνουν σε µεγάλο ϐαθµό τις πραγµατικές συνθήκες Υπάρχουν σηµαντικά τεχνικά ϑέµατα που παραλείπονται Ετερογένεια Υλικού: Οι Υπολογιστικές Μονάδες δεν έχουν τα ίδια τεχνικά χαρακτηριστικά Ετερογένεια Λογισµικού: Οι ιεργασίες εκτελούνται σε διαφορετικό Λειτουργικό Σύστηµα Ετερογένεια ικτύου: ιαφορετικές Τεχνολογίες Εστιάζουµε στα κατανεµηµένα συστήµατα όπου το δίκτυο επικοινωνίας υλοποιεί το πρωτόκολλο TCP/IP Μεγάλη οµάδα δικτύων Τοπικά δίκτυα Ethernet Ευρυζωνικά δίκτυα ADSL Ασύρµατα δίκτυα WLAN ιαδίκτυο -- Internet Η αρχιτεκτονική TCP/IP περιγράφει πέντε επίπεδα Οι διαφορετικές τεχνολογίες υλικού κρύβονται από τα χαµηλότερα επίπεδα Οι διαφορετικές τεχνολογίες λογισµικού κρύβονται από τα υψηλότερα επίπεδα

2 Επικοινωνία ιεργασιών Θεωρητικό Μοντέλο Τύποι Επικοινωνίας (1) Σύγχρονη επικοινωνία Η ανταλλαγή µηνυµάτων µεταξύ των διεργασιών υποστηρίζεται από δύο λειτουργίες: send, receive Ορίζονται σύµφωνα µε τον προορισµό και τον τύπο των µηνυµάτων Η επικοινωνία (ανταλλαγή δεδοµένων) διεξάγετε ως εξής: Μια διεργασία (αποστολέας) στέλνει ένα µήνυµα (ακολουθία bytes) σε κάποιο προορισµό (παραλήπτης) Κάποια άλλη διεργασία στον προορισµό παραλαµβάνει το µήνυµα Οι δύο διεργασίες συγχρονίζονται σε κάθε µήνυµα Η εντολή send ακινητοποιεί την ϱοή εκτέλεσης (blocking operation) έως ότου η αντίστοιχη εντολή receive εκτελεστεί Η εντολή receive ακινητοποιεί την ϱοή εκτέλεσης (blocking operation) έως ότου παραληφθεί ένα µήνυµα Ασύγχρονη επικοινωνία Η εντολή send δεν ακινητοποιεί την ϱοή εκτέλεσης (non-blocking operation). Η ϱοή εκτέλεσης συνεχίζει παράλληλα µε την αποστολή του µηνύµατος Η εντολή receive έχει δύο εκδοχές: 1. blocking receive -- ακινητοποιεί την ϱοή εκτέλεσης (όπως πριν) 2. non-blocking receive -- δεν ακινητοποιεί την ϱοή εκτέλεσης, αν δεν υπάρχει µήνυµα τερµατίζει (επιστρέφοντας null) Τύποι Επικοινωνίας (2) Αξιοπιστία Μεταβατική (Transient) Η πιο συνηθισµένη µορφή επικοινωνίας Υπάρχει η ιδέα της σύνδεσης, όπως στην τηλεφωνία Τα µηνύµατα παραµένουν στο σύστηµα όσο ο αποστολέας και ο παραλήπτης είναι ενεργοί (δηλ. οι διεργασίες εκτελούνται) εν προσφέρει διαχείριση σφαλµάτων Εµµένουσα (Persistent) Τα µηνύµατα παραµένουν στο σύστηµα έως ότου παραδοθούν στον παραλήπτη Ο αποστολέας µπορεί να τερµατίσει µετά την αποστολή µηνυµάτων Ο παραλήπτης λαµβάνει τα µηνύµατα όταν ενεργοποιηθεί Επιβαρύνει τις διεργασίες του συστήµατος Αξιόπιστη παράδοση το σύστηµα προσφέρει εγγύηση παράδοσης µηνυµάτων υπό την παρουσία ενός συγκεκριµένου αριθµού σφαλµάτων (εκ των προτέρων ορισµένο) Αναξιόπιστη παράδοση το σύστηµα δεν προσφέρει καµία εγγύηση παράδοσης µηνυµάτων υπό την παρουσία σφαλµάτων (έστω και µόνο ένα) Εγκυρότητα τα µηνύµατα παραδίδονται αναλλοίωτα (δεν έχει αλλάξει το περιεχόµενο τους) και µία και µόνο µία ϕορά (δεν γίνονται πολλαπλές παραδόσεις) Μερικές εφαρµογές απαιτούν τα µηνύµατα να παραδίδονται µε την ίδια σειρά µε την οποία στάλθηκαν Η παράδοση των µηνυµάτων εκτός σειράς ϑεωρείτε σφάλµα (αποτυχηµένη αποστολή)

3 Sockets στη JAVA Ο καθιεροµένος τρόπος επικοινωνίας µε µηνύµατα Μπορεί να υλοποιήσει είτε σύγχρονες είτε ασύγχρονες µεταφορές δεδοµένων Είναι η βασικότερη τεχνολογία υλοποίησης Χαµηλότερο επίπεδο από τις υπόλοιπες τεχνολογίες, π.χ. RMI, CORBA Χαρακτηρίζεται ως η assembly του TCP/IP Σε αναλογία µε την assembly -- τα προγράµµατα που ϐασίζονται στα Sockets προσφέρουν καλύτερες επιδόσεις ως προς την ταχύτητα συνδεσης, µετάδοσης, κλπ. Προσφερουν δεν είναι όµως πάντα έτσι Μερικά προγράµµατα σε assembly χρησιµοποιούν όση µνήµη χρειάζεται ένα πρόγραµµα σε άλλη γλώσσα και είναι εξίσου αργά (ή σχεδόν το ίδιο) Με τον ίδιο τρόπο ένα πρόγραµµα που χρησιµοποιεί απέυθίας Sockets µπορεί να έχει τις ίδιες επιδώσεις µε ένα πρόγραµµα RMI Θέµατα Σχεδιασµού µε Sockets Ακόµα και αν δεν είµαστε ϐέβαιοι για τα πλεονεκτήµατα των Sockets -- µπορούµε να εκτιµήσουµε το κόστος Η υλοποίηση µε Sockets είναι σχεδόν πάντα πιό δύσκολη και έχει µεγαλύτερο κόστος σε σχέση µε τις τεχνολογίες υψηλότερου επιπέδου Αν δεν µεταφέρουµε απλά στοιχεία (ASCII) Αν χρειάζεται να αντιµετωπίσουµε πολλά σφάλµατα Αν πρέπει να χρησιµοποιεί πολλαπλούς servers Αν υπάρχουν απαιτήσεις σε ασφάλεια / κρυπτογραφεία Ο κεντρικός στόχος δεν είναι µια αποδοτική υλοποίηση Μπορεί να επιτευχθεί µε την χρήση ισχυρότερων µηχανηµάτων Ο στόχος είναι να καλύψουµε τις προδιαγραφές Βελτίωση στην απόδοση δεν γίνεται ποτέ εκ των προτέρων Η κλάση URL Αν ϑέλουµε να µεταφέρουµε δεδοµένα προς µία κατεύθυνση, µπορούµε να χρησιµοποιήσουµε το προτώκολλο HTTP public URL(String url) throws MalformedURLException URL up = new URL(" boolean equals(object x) -- ελέγχει την ισότητα µεταξύ αντικειµένων URL String gethost() -- επιστρέφει το κοµµάτι που αντιστοιχεί στο host -- String getfile() -- επιστρέφει το κοµµάτι που αντιστοιχεί στη σελίδα -- index.html int getport() -- επιστρέφει το κοµµάτι που αντιστοιχεί στην πόρτα/θύρα InputStream openstream() -- επιστρέφει µια ϱοή που αντιστοιχεί στη σελίδα Η κλάση InetAddress Αντιπροσωπεύει την διεύθυνση ενός υπολογιστή Χρησιµοποιήτε από τις κλάσεις Socket και DatagramPacket Η κλάση δεν έχει constructor -- προσφέρει 3 static µεθόδους InetAddress getlocalhost() -- η διεύθυνση του τοπικού µηχανήµατος InetAddress getbyname(string host) -- η διεύθυνση του µηχανήµατος host getbyname(" InetAddress [] getallbyname(string host) -- ένα πίνακα µε όλες τις διεύθυνσεις του µηχανήµατος host στην περίπτωση που έχει πολλαπλές συνδέσεις Ολες οι µεθόδοι δηµιουργούν ένα UnknownHostException αν η διεύθυνση δεν είναι σωστή

4 Η κλάση Socket Η κλάση ServerSocket Μια µονάδα συνδεδεµένη στο ιαδίκτυο έχει ένα σύνολο από local ports -- ένας προορισµός µηνυµάτων στο εσωτερικό της υπολογιστικής µονάδας, ορίζεται από έναν ακέραιο Η κλάση socket συνδέετε σε µία port και προσφέρει µεθόδους για την αποστολή/παραλλαβή µηνυµάτων προς/από την αποµακρυσµένη µονάδα Socket(String host, int port) Socket(InetAddress address, int port) Εφόσον δηµιουργηθεί το αντικείµενο, µε τη µέθοδο getinputstream() δηµιουργούµε ένα αντικείµενο τύπου InputStream Με τη µέθοδο getoutputstream() δηµιουργούµε ένα αντικείµενο τύπου OutputStream Η κλάση Socket υλοποιεί µία local port και προσφέρει µεθόδους για την αποστολή/παραλλαβή µηνυµάτων ServerSocket(int port) Αν η local port είναι δεσµευµένη δηµιουργήται ένα IOException Οταν µια αποµακρύσµένη µονάδα επιχυρίσει να συνδεθεί η local port η µέθοδος accept() δηµιουργεί ένα αντικείµενο Socket Μέσω του νέου αντικειµένου Socket πραγµατοποιείτε η επικοινωνία µε την αποµακρυσµένη µονάδα Επικοινωνία µε Sockets Επεκτείνουµε την συνιστόσα Socket για να µπορούµε να µεταφέρουµε αντικείµενα (SuperSocket) Χρησιµοποιούµε τις συνιστόσες ObjectInputStream και ObjectOutputStream για την σειριοποίηση των αντικειµένων Για την αποφυγή προβληµάτων µε την µεταφορά αντικειµένων µέσω ενός Socket κάνουµε µια ακόµα µετατροπή Χρησιµοποιούµε τις συνιστόσες ByteInputStream και ByteOutputStream για την µετάδοση των (σειριοποιηµένων) αντικειµένων υπο την µορφή ϱεύµατος από byte Συνιστώσα SuperSocket public class SuperSocket { Socket m_sock; DataInputStream m_in; DataOutputStream m_out; public SuperSocket(String host, int port) throws UnknownHostException, IOException { this(new Socket(host, port)); public SuperSocket(Socket s) throws UnknownHostException, IOException { m_sock = s; m_in=new DataInputStream(m_sock.getInputStream()) m_out=new DataOutputStream(m_sock.getOutputStream

5 Συνιστώσα SuperSocket public void writevector(vector x) throws IOException { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bytes); out.writeobject(x); byte [] buffer = bytes.tobytearray(); out.close(); m_out.writeint(buffer.length); m_out.write(buffer); Συνιστώσα SuperSocket public Vector readvector() throws IOException, ClassNotFoundException { int n = m_in.readint(); byte [] buffer = new byte[n]; theinput.read(buffer); ByteArrayInputStream bytes = new ByteArrayInputStream(buffer); ObjectInputStream in = new ObjectInputStream(bytes); Object x = in.readobject(); in.close(); return (Vector) x; Παράδειγµα Sockets στη JAVA Υλοποιούµε τον εξυπηρέτη µε ένα µόνο νήµα Για να µπορέσουµε να εξυπηρετήσουµε πολλούς χρήστες ταυτόχρονα, η επέκταση είναι σχετικά εύκολη Για κάθε νέα σύνδεση, ο εξυπηρέτης αναθέτει ένα νέο αντικείµενο SuperSocket Τα στοιχεία της αίτησης στέλνονται υπό την µορφή ενός διανύσµατος από αντικείµενα Η µέθοδος processrequest επεξεργάζεται το διάνυσµα για να εξυπηρετήση την αίτηση του πελάτη Η απάντηση του Εξυπηρέτη είναι (επίσης) υπό την µορφή ενός διανύσµατος από αντικείµενα Συνιστώσα Server public class Server { public static final int PORT = 1234; Connection theconnection; ServerSocket thesocket; SuperSocket theclient; public Server() { try { thesocket = new ServerSocket(PORT); while (true) { System.err.println("Server is ready."); Socket s = thesocket.accept(); theclient = new SuperSocket(s); processrequest(); catch (Exception ex) { /*... */

6 Συνιστώσα Server public void processrequest() { try { Vector v = theclient.readvector(); String opcode = (String) v.elementat(0); Vector out = null; if (opcode.equals("search Flights")) out = searchflights(); else if (opcode.equals("search Seats")) out = searchseats(v); else if (opcode.equals("book Seat")) out = bookseat(v); else System.err.println("Ignored request"); if (out!= null) theclient.writevector(out); theclient.close(); catch (Exception ex) { /*... */ Συνιστώσα Server public Vector searchflights() { Vector out = new Vector(); try { Flight [] flights = Flight.getFlightsFromDB(); for (int i = 0; i < flights.length; i++) { String s = flights[i].packasstring(); out.addelement(s); catch (Exception ex) { /*... */ return out; Συνιστώσα RemoteClient Υλοποιούµε τον πελάτη χρησιµοποιόντας συνιστόσες του SWING Μπορούµε να εµφανίσουµε τα ίδια στοιχεία µε διαφορετικούς τρόπους (thin/thick clients) Υλοποίηση ως Applet Χρήση HTML, Flash, Για κάθε αίτηση του χρήστη, ο πελάτης συνδέετε µε τον Εξυπηρέτη και στέλνει ένα διάνυσµα από αντικείµενα που περιγράφουν την αίτηση Ο Πελάτης δεν γνωρίζει πως εκτελείτε η αίτηση public void searchflights() { try { theresults.settext(""); thesocket = new SuperSocket(HOST, PORT); thesocket.getsocket().setsotimeout(timeout); Vector v = new Vector(); v.addelement("search Flights"); thesocket.writevector(v); v = thesocket.readvector(); thesocket.close(); for (int i = 0; i < v.size(); i++) { String s = (String) v.elementat(i); theresults.append(s + "\n"); catch (Exception ex) { /*... */

7 Κλήση Αποµακρυσµένων ιαδικασιών RPC (1) Κλήση Αποµακρυσµένων ιαδικασιών RPC (2) Ακολουθεί το σχήµα επικοινωνίας Request-Reply Μοντέλο Πελάτη - Εξυπηρέτη Ειδικά προσαρµοσµένο και ενσωµατωµένο στο επίπεδο της γλώσσας προγραµµατισµού Ο προγραµµατιστής χειρίζεται την αποµακρυσµένη κλήση ως µια απλή κλήση µιας τοπικής διαδικασίας εν εµπλέκεται σε ϑέµατα αίτησης/απάντησης Με µεγάλη ευκολία µια τοπική διαδικασία µπορεί να µετατραπεί σε αποµακρυσµένη ιαφάνεια πρόσβασης Ευκολία χρήσης Γρήγορη ανάπτυξη εφαρµογών Λιγότερα λάθη Κατά την µεταγλώττιση του προγράµµατος, εισάγεται µια σειρά λειτουργιών που υλοποιούν την υποκείµενη επικοινωνία Το Ενδιάµεσο Λογισµικό Επικοινωνίας ενσωµατώνεται στην εφαρµογή RPC Runtime -- Το ενδιάµεσο λογισµικό που υλοποιεί το πρωτόκολλο request-reply ως προς την ανταλλαγή αιτήσεων και απαντήσεων Client Stub -- Το ενδιάµεσο επίπεδο σύνδεσης του κώδικα της διεργασίας του πελάτη µε το RPC Runtime ηµιουργεί τις αιτήσεις σύµφωνα µε τις παραµέτρους της κλήσης της διαδικασίας αποστολή µέσω δικτύου Επεξεργάζεται τις απαντήσεις του εξυπηρέτη και επιστέφει τις αντίστοιχες µεταβλητές παραλαβή µέσω δικτύου Κλήση Αποµακρυσµένων ιαδικασιών RPC (3) Παράδειγµα Αποµακρυσµένης Κλήσης ιαδικασίας Server Stub -- Το ενδιάµεσο επίπεδο σύνδεσης του κώδικα της διεργασίας του εξυπηρέτη µε το RPC Runtime Επεξεργάζεται την αίτηση και καλεί την διαδικασία µε τις δοσµένες παραµέτρους παραλαβή µέσω δικτύου ηµιουργεί τις απαντήσεις σύµφωνα µε τις τιµές που επιστρέφει η διαδικασία αποστολή µέσω δικτύου Το RPC Runtime προσφέρεται από την γλώσσα προγραµµατισµού Τα Client και Server Stubs παράγονται αυτόµατα µέσω ειδικών εργαλείων (stub generators) µε ϐάση τον κώδικα των διεργασιών πελάτη - εξυπηρέτη Η αποµακρυσµένη κλήση υλοποιείτε µε 2 κλήσεις: Μια κλήση στο Client Stub Μια κλήση στο Server Stub 1. (Πελάτης) Τοπική Κλήση 2. (Client Stub) Πακετάρισµα παραµέτρων 3. (Λειτουργικό) Αποστολή αίτησης 4. (Λειτουργικό) Παραλαβή αίτησης 5. (Server Stub) Ξεπακετάρισµα 6. (Εξυπηρέτης) Εκτέλεση διαδικασίας 7. (Server Stub) Πακετάρισµα απάντησης 8. (Λειτουργικό) Αποστολή απάντησης 9. (Λειτουργικό) Παραλαβή απάντησης 10. (Client Stub) Ξεπακετάρισµα 11. (Πελάτης) Επιστροφή από Κλήση Ροή Εκτέλεσης

8 Υποστήριξη ιαφορετικών Γλωσσών (1) Υποστήριξη ιαφορετικών Γλωσσών (2) υνατότητα χρήσης διαφορετικής γλώσσας προγραµµατισµού για την διεργασία πελάτη και την διεργασία εξυπηρέτη Ετερογένεια υλικού εν υπάρχει κοινή γλώσσα (π.χ. διεργασία πελάτη είναι ενσωµατωµένη σε συσκευή περιορισµένων δυνατοτήτων) Σχεδιαστικοί λόγοι Χρήση διαφορετικής γλώσσας για το επίπεδο της διεπαφής µε τον χρήστη (διεργασία πελάτη) και το επίπεδο της επεξεργασίας (διεργασία εξυπηρέτη) Γλώσσα Ορισµού ιεπαφών IDL Τυποποιηµένη περιγραφή των παραµέτρων των διαδικασιών Ανεξάρτητη από την γλώσσα προγραµµατισµού Ανεξάρτητη από το λειτουργικό σύστηµα / υλικό Οι γλώσσες προγραµµατισµού υποστηρίζουν την IDL προσφέροντας προσαρµοστές (adapters) µέσω των οποίων κατασκευάζονται τα client και server stubs που συνδέουν τον υπόλοιπο κώδικα µε τον ενδιάµεσο λογισµικό επικοινωνίας Κατά την εκτέλεση του κώδικα IDL παράγεται ο κώδικας για την γλώσσα προγραµµατισµού που επιθυµούµε να χρησιµοποιήσουµε Ο κώδικας της διεργασίας (πελάτη ή εξυπηρέτη) αφού µεταγλωττιστεί, συνδέεται (linking) µε τα client και server stubs που δηµιούργησε η IDL Η IDL υποστηρίζεται από όλα τα διαδεδοµένα λειτουργικά συστήµατα Sun XDR -- για το SunOS DCE IDL -- για SunOS, Windows, Linux, Mac,... ιευθέτηση Παραµέτρων -- Marshaling (1) Η µεταφορά των παραµέτρων κλήσης µιας διαδικασίας είναι απλή όταν πρόκειται για έναν ακέραιο για ένα string? Πως µεταφέρονται σύνθετοι τύποι µεταβλητών; πίνακας, λίστα, διάνυσµα,... Ακόµα και για του ακέραιους δεν είναι ξεκάθαρο 1. Pentium -- αποστολή {5, JILL 2. SPARC -- διαβάζει λάθος ακέραιο και σωστό string 3. SPARC -- µε αντιστροφή bytes διαβάζει σωστό ακέραιο αλλά ανάποδο string ιευθέτηση Παραµέτρων -- Marshaling (2) Οι διαφορετικές αρχιτεκτονικές χειρίζονται διαφορετικά τις µεταβλητές Κατά την µεταφορά πρέπει να υπάρχει ενηµέρωση για τον τύπο της µεταβλητής Συµφωνία για την µορφή των τύπων µεταβλητών Παρόµοιος τρόπος µε Java Serialization εν µπορούµε να µεταφέρουµε δείκτες Ολες οι µεταβλητές µεταφέρονται κατά τιµή (by value)

9 Κατανεµηµένο Περιβάλλον Επεξεργασίας DCE Παράδειγµα Χρήσης DCE Παράδειγµα Χρήσης DCE Υλοποίηση του Συστήµατος Αποµακρυσµένης Κλήσης ιαδικασίας Αρχικά σχεδιάστηκε για κατανεµηµένα συστήµατα ϐασισµένα στο Unix Πλέον υποστηρίζει διαφορετικά λειτουργικά συστήµατα: Unix, Windows, Mac,... Χρησιµοποιεί ένα κλασικό µοντέλο πελάτη-εξυπηρέτη οι διαθέσιµες υπηρεσίες παρέχονται είτε από το ίδιο το DCE είτε από ξεχωριστές εφαρµογές Υποστηρίζει εγγυήσεις at-most-once και at-least-once Ανοιχτός ικτυακός Υπολογισµός ONC Παράδειγµα Χρήσης ONC (1) Παράδειγµα Χρήσης ONC Υλοποίηση του Συστήµατος Αποµακρυσµένης Κλήσης ιαδικασίας Σχεδιάστηκε για το Sun OS Γνωστό και ως Sun RPC Αντικαταστήθηκε από το DCE που είναι συµβατό και µε άλλα λειτουργικά Απλός τρόπος χρήσης ενδιάµεσο λογισµικό Οι λειτουργίες RPC υλοποιούνται ως ξεχωριστή ϐιβλιοθήκη

10 Παράδειγµα Χρήσης ONC (2) demo.x #in struct add3_params{ int i, j, k; ; program DEMO { version DEMOVERS1 { int ADD3(add3_params) = 1; int MYABS(int) = 2; = 1; = 0x c; Παράδειγµα Χρήσης ONC (3) demo.h #include <rpc/rpc.h> struct add3_params{ int i, j, k; ; typedef struct add3_params add3_params; #define DEMO ((unsigned long)(0x c)) #define DEMOVERS1 ((unsigned long)(1)) #define ADD3 ((unsigned long)(1)) extern int * add3_1(); #define MYABS ((unsigned long)(2)) extern int * myabs_1(); extern int demo_1_freeresult(); extern bool_t xdr_add3_params(); Παράδειγµα Χρήσης ONC (4) demo_funcs.x #include "demo.h" int *add3_1(add3_params *in) { static int result; result = in->i + in->j + in->k; return &result; int *myabs_1(int *in) { static int result; result = (*in < 0)? -*in : *in; return &result; Παράδειγµα Χρήσης ONC (5) demo_main.x (1) #include <stdio.h> #include "demo.h" main(int argc, char *argv[]) { CLIENT *cl; int abs_arg *result1, *result2; add3_params add3_arg; if ((cl = clnt_create(" ", DEMO, DEMOVERS1 "tcp")) == NULL) { clnt_pcreateerror(" "); exit(1);

11 Παράδειγµα Χρήσης ONC (6) Παράδειγµα Χρήσης ONC (7) demo_main.x (2) demo_main.x (3) add3_arg.i = argv[1]; add3_arg.j = argv[2]; add3_arg.k = argv[3]; result1 = add3_1(&add3_arg, cl); if (result == null) { clnt_perror(cl, " "); exit(2); printf("sum is %d\n", *result1); result2 = myabs_1(*result1, cl); if (result == null) { clnt_perror(cl, " "); exit(3); printf("abs value is %d\n", *result2); xdr_free(xdr_int, result1); xdr_free(xdr_int, result2); ιαφάνεια Πρόσβασης (1) ιαφάνεια Πρόσβασης (2) Η υπολογιστική µονάδα όπου εκτελείτε η διεργασία του εξυπηρέτη δεν έχει σταθερή διεύθυνση στο δίκτυο (IP address) ή δεν είναι εκ των προτέρων γνωστή Binding -- Ο πελάτης πρέπει να εντοπίσει και να συνδεθεί µε τον εξυπηρέτη δυναµικά κατά την διάρκεια της εκτέλεσης Η υλοποίηση της διαδικασίας εντοπισµού και σύνδεσης συνήθως γίνεται µε την χρήση µιας υπηρεσίας καταλόγου εναλλακτικά µπορεί να υλοποιηθεί κάποια µέθοδος ανακάλυψης / εντοπισµού Η υπηρεσία εντοπισµού δεν είναι κρυµµένη από το ενδιάµεσο λογισµικό επικοινωνίας π.χ. χρησιµοποιούνται ειδικές κλήσεις µέσω των οποίων γίνεται το binding εν επιτυγχάνεται πλήρης διαφάνεια τοποθεσίας και πρόσβασης σε επίπεδο εφαρµογής Σε επίπεδο προγραµµατισµού δεν µπορούµε να περάσουµε ως παράµετρο έναν δείκτη σε µία ϑέση µνήµης Μια αποµακρυσµένη κλήση µπορεί να αποτύχει λόγω παρουσίας σφαλµάτων στην επικοινωνία, στον εξυπηρέτη, σφάλµατος binding, κλπ. Είναι απαραίτητο να οριστούν κατάλληλες συµβάσεις για την επιστροφή κωδικών σφάλµατος Ερχεται σε αντίθεση µε την επιθυµία να υπάρχει διαφάνεια πρόσβασης Μια αποµακρυσµένη κλήση διαδικασίας µοιάζει µε τοπική κλήση δεν είναι όµως ακριβώς ίδια

12 ιαφάνεια Πρόσβασης (3) Απόδοση Παράδειγµα Εντοπισµού Εξυπηρέτη στο DCE Η κλήση µιας τοπικής, κενής, διαδικασίας (null invocation) χωρίς παραµέτρους: Λιγότερο από 1µs Η κλήση µιας αποµακρυσµένης, κενής, διαδικασίας (null invocation) χωρίς παραµέτρους, µεταξύ δύο υπολογιστών που είναι συνδεδεµένοι από ένα δίκτυο: Για απ ευθείας σύνδεση των υπολογιστών µε την χρήση Ethernet 100 Mbps -- 1ms 10k ϕορές περισσότερο! Καθυστέρηση προκύπτει και από το ενδιάµεσο λογισµικό επικοινωνίας (π.χ. πακετάρισµα, δηµιουργία αίτησης, κλπ.) Καθυστέρηση προκύπτει και από το λειτουργικό σύστηµα (π.χ. πρωτόκολλα µεταφοράς, αντιγραφή παραµέτρων, κλπ.) Σύνοψη 3 ης ιάλεξης Εισαγωγικά (1) Κατανεµηµένα Συστήµατα ΙΙ Επικοινωνία ιεργασιών µέσω TCP/IP Sockets στη JAVA Κλήση Αποµακρυσµένων ιαδικασιών Κατανεµηµένα Αντικείµενα Κατανεµηµένα Αντικείµενα Τεχνολογίες Υλοποίησης Ενδιάµεσα Λογισµικά Remote Method Invocation -- RMI Σύνοψη Μαθήµατος Σύνοψη Μαθήµατος Βιβλιογραφία Επόµενη ιάλεξη Ενα αντικείµενο χαρακτηρίζεται κατανεµηµένο όταν οι µέθοδοι του µπορούν να κληθούν εξ αποστάσεως παρόµοιο τρόπο µε την κλήση αποµακρυσµένων διαδικασιών Σε τοπικό επίπεδο, οι δείκτες στο κατανεµηµένο αντικείµενο απεικονίζονται τοπικά από ένα ειδικό, εξουσιοδοτηµένο αντικείµενο από το οποίο γίνονται οι κλήσεις (proxy/stub) Μια αναφορά σε ένα κατανεµηµένο αντικείµενο µπορεί να χρησιµοποιηθεί ως παράµετρος στην κλήση µιας αποµακρυσµένης διαδικασίας Ο εξυπηρέτης ϑα δηµιουργήσει ένα τοπικό, εξουσιοδοτηµένο αντικείµενο (proxy) σύµφωνα µε τον δείκτη στο κατανεµηµένο αντικείµενο

13 Εισαγωγικά (2) Για κάθε αντικείµενο υπάρχει ένα αντικείµενο σκελετού (skeleton object) Για κάθε αποµακρυσµένη αναφορά υπάρχει ένα αντικείµενο εξουσιοδότης (proxy object) Το αντικείµενο εξουσιοδότης αντιστοιχεί στο client stub Το αντικείµενο σκελετού αντιστοιχεί στο server stub Η χρήση των µεθόδων του κατανεµειµένου αντικείµενου γίνεται µέσω του RM runtime Εξουσιοδοτηµένο αντικείµενο Κλήση διαδικασίας Κύκλος Ζωής Κατανεµηµένων Αντικειµένων Ενα κατανεµηµένο αντικείµενο δηµιουργείτε από την κλάση που το ορίζει µε την πρώτη αναφορά ίδιος τρόπος µε τα απλά, τοπικά, αντικείµενα Η µονάδα που δηµιούργησε το αντικείµενο είναι υπεύθυνη για την διαχείριση του Κάθε αποµακρυσµένη διεργασία που επιθυµεί να χρησιµοποιήσει το αντικείµενο, πρέπει να επικοινωνήσει µε την µονάδα που το δηµιούργησε (διαχειριστή) Η µονάδα διαχειριστής κρατάει δείκτες προς τις διεργασίες που έχουν Ϲητήσει πρόσβαση στο κατανεµηµένο αντικείµενο Ορισµένοι µηχανισµοί περισυλλογής άχρηστων αντικείµενων (Garbage Collection) ακολουθούν την ίδια τακτική Οταν ένα αντικείµενο δεν έχει κανένα δείκτη προς κάποια διεργασία, ϑεωρείτε άχρηστο και περισυλλέγεται ηµιουργία, Καταχώρηση, Αναζήτηση Αποµάκρυνση Αντικειµένων Μία διεργασία εξυπηρέτης δηµιουργεί το πρώτο αντικείµενο σύµφωνα µε την κλάση που το ορίζει Καταχωρεί τα στοιχεία του αντικειµένου (και της κλάσης που το ορίζει) σε µια υπηρεσία καταλόγου σύµφωνα µε ένα όνοµα Οταν µια διεργασία πελάτης ϑελήσει να χρησιµοποιήσει το κατανεµηµένο αντικείµενο, το αναζητά µέσω της υπηρεσίας καταλόγου µε ϐάση το όνοµα Η αναζήτηση επιστρέφει πληροφορίες για την τοποθεσία της κλάσης του αντικειµένου, την ύπαρξη ή όχι αντικειµένου Ενα αντικείµενο µπορεί να µην χρησιµοποιηθεί για µεγάλο χρονικό διάστηµα για λόγους εξοικονόµησης πόρων, το σύστηµα αποµακρύνει τα ανενεργά αντικείµενα σε δευτερεύουσα µονάδα αποθήκευσης Οταν µια διεργασία χρησιµοποιήσει τον τοπικό εξουσιοδότη (proxy) το σύστηµα επαναφέρει το αντικείµενο στην πρωτεύουσα µονάδα αποθήκευσης (επαναφορά) Η αποµάκρυνση και επαναφορά αντιστοιχεί στην λογική διαχείρισης σελίδων εικονικής µνήµης

14 Περισυλλογή Αντικειµένων Το σύστηµα (εξυπηρέτης) που δηµιούργησε το κατανεµηµένο αντικείµενο A, διατηρεί ένα διάνυσµα A.v Οταν µια διεργασία p (πελάτης) δηµιουργήσει έναν τοπικό εξουσιοδότη (proxy) για το κατανεµηµένο αντικείµενο Το σύστηµα εξυπηρέτης προσθέτει την p στο A.v Οταν µια διεργασία p (πελάτης) περισυλλέξει τον τοπικό εξουσιοδότη (proxy) -- δεν υπάρχει καµία (τοπική) αναφορά Το σύστηµα εξυπηρέτης αφαιρεί την p από το A.v Αν ένα αντικείµενο έχει κενό διάνυσµα για ορισµένο χρονικό διάστηµα το σύστηµα ϑεωρεί ότι δεν χρησιµοποιείτε: το αντικείµενο περισυλλέγεται

15

16

17

18

19 Τεχνολογίες Java RMI Αυστηρά για Java Ο κώδικας proxy µπορεί να δηµιουργηθεί εκ των προτέρων για τους πελάτες DCOM / COM+ Corba Υποστηρίζει διαφορετικές γλώσσες Απευθύνεται στα Windows* Υποστηρίζει διαφορετικές γλώσσες Υλοποιείται σε όλα τα λειτουργικά Πλούσια λειτουργικότητα ιαφορετικοί στόχοι διαφορετικές τεχνικές ανάπτυξης Υλοποίηση Κατανεµηµένων Αντικείµενων (1) Η κλάση που περιγράφει ένα κατανεµηµένο αντικείµενο υλοποιεί µία διεπαφή (interface Remote) ή/και επεκτείνει µια ϐασική κλάση (class RemoteObject) Η επέκταση της διεπαφής και ϐασικής κλάσης επιτρέπει στο σύστηµα εκτέλεσης να ανακαλύψει δυναµικά αν το συγκεκριµένο αντικείµενο είναι τοπικό ή κατανεµηµένο Η γλώσσα προγραµµατισµού δηµιουργεί αυτόµατα την κλάση εξουσιοδότη και την κλάση σκελετό Παρόµοιος τρόπος µε IDL Οι κλάσεις εξουσιοδότη και σκελετού αποθηκεύονται σε κάποιο διακοµιστή αρχείων για να είναι προσβάσιµα από τις αποµακρυσµένα µονάδες µέσω δικτύου Υλοποίηση Κατανεµηµένων Αντικείµενων (2) Παράδειγµα Υλοποίησης

20 Η υλοποίηση µε RMI είναι σχεδόν πάντα πιο εύκολη και έχει µικρότερο κόστος σε σχέση µε κάποια υλοποίηση σε Sockets Η µετατροπή των δεδοµένων (προς µεταφορά) γίνεται εξολοκλήρου µε την χρήση της RMI Αν δεν µεταφέρουµε απλά στοιχεία (ASCII) µειώνουµε αρκετά τον απαραίτητο κώδικα Μπορούµε να επικοινωνήσουµε µε µεγαλύτερη ευκολία όταν παρεµβάλλονται firewalls -- η σύνδεση µπορεί να γίνει µέσω πρωτοκόλλου http Η µεταφορά λειτουργιών από τον πελάτη στον εξυπηρέτη είναι πολύ πιο εύκολη Ο κεντρικός στόχος δεν είναι µια αποδοτική υλοποίηση Η υλοποίηση µε RMI είναι ορισµένα αρνητικά στοιχεία Η χρήση του JAVA Serialization απαιτεί µνήµη (δηµιουργία νέων προσωρινών αντικειµένων) και επεξεργαστική ισχύ (µετατροπή δεδοµένων) Η τεχνολογία RMI ανήκει στην SUN -- η εξέλιξη της, η ϐελτίωση των υπάρχοντων λειτουργιών, η υποστήριξη εξαρτάται από την SUN Είναι αποκλειστικά για JAVA -- υπάρχουν τρόποι να ξεπεραστεί το πρόβληµα µε την χρήση της ϐιβλιοθήκης JNI Παρ ολα αυτά είναι πιο απλή από την CORBA Συντοµότερος χρόνος υλοποίησης Μπορεί να επιτευχθεί µε την χρήση ισχυρότερων µηχανηµάτων Βελτίωση στην απόδοση δεν γίνεται ποτέ εκ των προτέρων Απλό παράδειγµα χρήσης RMI Το αντικείµενο ϐρίσκετε στο µηχάνηµα URL addr = new URL("rmi:// Βασιζόµαστε στο πρωτόκολλο rmi και όχι στο http Απευθυνόµαστε στον κατάλογο της RMI (registry) του τοπικού µηχανήµατος Server server = (Server) Naming.lookup(addr); Η µέθοδος µας επιστρέφει µια αναφορά στο αντικείµενο που αναζητούµε, µε συγκεκριµένο τύπο στο παράδειγµα το αντικείµενο είναι τύπου Server Μόλις ϐρεθεί µια αναφορά, χρησιµοποιούµε το αντικείµενο σαν να ήταν ένα κανονικό τοπικό αντικείµενο float mark = server.getmymark(am); Μοναδική διαφορά η µέθοδος getmymark() µπορεί να δηµιουργήσει ένα σφάλµα τύπου RemoteException Παράδειγµα RMI 1 Υλοποιούµε τρεις συναλλαγές µεταξύ Πελάτη-Εξυπηρέτη (δύο υψηλότερα επίπεδα) Αναζήτηση Πτήσεων επιστρέφει όλες τις πτήσεις που υπάρχουν στη ϐάση δεδοµένων Αναζήτηση Θέσεων επιστρέφει όλες τις κρατήσεις που αφορούν ένα συγκεκριµένο πελάτη Κράτηση ϑέσης υποθέτουµε ότι η πτήση και ο πελάτης υπάρχουν ήδη στους πίνακες της ϐάσης δεδοµένων (για χάριν ευκολίας)

21 Οι συνιστώσες λογισµικού για την υλοποίηση σε RMI δεν είναι πολύ διαφορετικές από αυτές που χρησιµοποιούν Sockets Η ϐασική διαφορά είναι η απουσία των µεθόδων που προετοιµάζουν τα δεδοµένα για αποστολή δηλ. η συνιστώσα SuperSocket Το πρώτο ϐασικό ϐήµα είναι να καταχωρίσουµε στην RMI τις µεθόδους που ϑα προσφέρει ο εξυπηρέτης Βασιζόµαστε στο interface της RMI Remote Το επεκτείνουµε ορίζοντας το ServerInterface Ολες οι µέθοδοι του interface µπορεί να δηµιουργήσουν ένα σφάλµα τύπου RemoteException import java.rmi.*; import java.sql.sqlexception; public interface ServerInterface extends Remote { public Flight [] searchflights() throws RemoteException, SQLException ; public Reservation [] searchseats( String passenger_no) throws RemoteException, SQLException ; public void bookseat(string flight_no, String passenger_no, String res_no) throws RemoteException, SQLException, FlightBookedException ; Οι δύο πρώτες µέθοδοι επιστρέφουν ένα πίνακα στην Java οι πίνακες είναι αντικείµενα τα οποία µπορούν να σειριοποιηθούν Η συνιστώσα Server επεκτείνει την UnicastRemoteObject Εποµένως η RMI ϑα περάσει τις τιµές των αντικειµένων και όχι αναφορές σε αυτά Αν πολλοί πελάτες Ϲητήσουν το ίδιο αντικείµενο Flight ϑα πάρουν διαφορετικά αντίγραφα αντί για µια αναφορά στο ίδιο αντικείµενο Αν για κάποιο λόγο ϑέλουµε να περάσουµε αναφορές σε ένα αντικείµενο µπορούµε να χρησιµοποιήσουµε την µέθοδο exportobject που ορίζει η συνιστώσα UnicastRemoteObject import java.rmi.*; import java.rmi.server.*; import java.sql.*; public class Server extends UnicastRemoteObject implements ServerInterface { static final String SERVERNAME = "ARServer"; static final String DB = "jdbc:odbc:airline"; static final String USER = ""; static final String PASSWORD = ""; Connection theconnection; public Server() throws Exception { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); theconnection = DriverManager.getConnection(DB, USER, PASSWORD)

22 public static void main(string [] args) { System.setSecurityManager(new RMISecurityManager()); try { Server server = new Server(); Naming.rebind(SERVERNAME, server); System.out.println("Server ready."); catch (Exception ex) { ex.printstacktrace(); public Flight [] searchflights() throws RemoteException, SQLException { Flight [] flights = Flight.getFlights(theConnection); return flights; public Reservation [] searchseats(string passenger_no throws RemoteException, SQLException { Reservation [] res = Reservation.getPassenger( theconnection, passenger_no); return res; public void bookseat(string flight_no, String passenger_no, String res_no) throws RemoteException, SQLException, FlightBookedException { Reservation res = new Reservation( theconnection, res_no, flight_no,passenger_no); res.dbwrite(theconnection); Εκτέλεση RMI Server ηµιουργήστε ένα ϕάκελο και τοποθετήστε όλα τον κώδικα της υλοποίησης και την ϐάση δεδοµένων (airline.mdb) Ρυθµίστε τον οδηγό ODBC Κάντε compile τον κώδικα: javac *.java ηλώστε την συνιστώσα Server στον τοπικό κατάλογο της RMI: rmic Server Ξεκινήστε τον τοπικό κατάλογο της RMI: start rmiregistry Ξεκινήστε τον Εξυπηρέτη: java Server Υλοποιούµε τον πελάτη χρησιµοποιώντας συνιστώσες του SWING Μπορούµε να εµφανίσουµε τα ίδια στοιχεία µε διαφορετικούς τρόπους (thin/thick clients) Υλοποίηση ως ανεξάρτητη εφαρµογή Υλοποίηση ως Applet Χρήση HTML, Flash, Ο Πελάτης δεν γνωρίζει πως εκτελείτε η αίτηση Η υλοποίηση του επιπέδου µε RMI είναι (σαφώς) ποιο απλή από την αντίστοιχη που χρησιµοποιεί Sockets

23 import java.rmi.*; import java.awt.*; import java.awt.event.*; public class RemoteClient extends Frame { public static final String URL = "rmi:// /arserver"; ServerInterface theserver; Button thesearchflights = new Button("Search Flights");... TextField theflightno = new TextField();... TextArea theresults = new TextArea(); public static void main(string [] args) { new RemoteClient(); public RemoteClient() { super("airline Reservation System (Remote Client)... setsize(600, 400); setvisible(true); try { theserver = (ServerInterface) Naming.lookup(URL); catch (Exception ex) { ex.printstacktrace(); public void searchflights() throws Exception { theresults.settext(""); Flight [] flights = theserver.searchflights(); for (int i = 0; i < flights.length; i++) { theresults.append(flights[i] + "\n"); public void searchseats() throws Exception { theresults.settext(""); Reservation [] seats = theserver.searchseats(thepassengerno.gettext()); for (int i = 0; i < seats.length; i++) { theresults.append(seats[i] + "\n"); public void bookseat() throws Exception { theresults.settext(""); theserver.bookseat(theflightno.gettext(), thepassengerno.gettext(), thereservationno.gettext()); public void actionperformed(actionevent evt) { try { String cmd = evt.getactioncommand(); if (cmd.equals("search Flights")) searchflights(); else if (cmd.equals("search Seats")) searchseats(); else if (cmd.equals("book Seat")) bookseat(); catch (Exception ex) { ex.printstacktrace();

24 Εκτέλεση RMI Client Παράδειγµα RMI 2 package compute; Εφόσον ο server τρέχει Ξεκινήστε τον Πελάτη: java RemoteClient import java.rmi.remote; import java.rmi.remoteexception; public interface Compute extends Remote { <T> T executetask(task<t> t) throws RemoteException; public interface Task<T> { T execute(); package engine; public class ComputeEngine implements Compute { public ComputeEngine() { super(); public <T> T executetask(task<t> t) { return t.execute();... public static void main(string[] args) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); try { String name = "Compute"; Compute engine = new ComputeEngine(); Compute stub = (Compute) UnicastRemoteObject.exportObject(engine, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind(name, stub); System.out.println("ComputeEngine bound"); catch (Exception e) { System.err.println("ComputeEngine exception:"); e.printstacktrace();

25 package client; public class ComputePi { public static void main(string args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); try { String name = "Compute"; Registry reg = LocateRegistry.getRegistry(args[0]); Compute comp = (Compute) reg.lookup(name); Pi task = new Pi(Integer.parseInt(args[1])); BigDecimal pi = comp.executetask(task); System.out.println(pi); catch (Exception e) { System.err.println("ComputePi exception:"); e.printstacktrace(); package client; public class Pi implements Task<BigDecimal>, Serializable private static final long serialversionuid = 227L; /** constants used in pi computation */ private static final BigDecimal FOUR = BigDecimal.valueOf(4); /** rounding mode to use during pi computation */ private static final int roundingmode = BigDecimal.ROUND_HALF_EVEN; /** digits of precision after the decimal point */ private final int digits; /** * Construct a task to calculate pi to * the specified precision. */ public Pi(int digits) { this.digits = digits; /** * Calculate pi. */ public BigDecimal execute() { return computepi(digits); /** * Compute the value of pi to the specified number of * digits after the decimal point. The value is * computed using Machin s formula: * * pi/4 = 4*arctan(1/5) - arctan(1/239) * * and a power series expansion of arctan(x) to * sufficient precision. */ public static BigDecimal computepi(int digits) {...

26 /** * Compute the value, in radians, of the arctangent of * the inverse of the supplied integer to the specified * number of digits after the decimal point. The value * is computed using the power series expansion for the * arc tangent: * * arctan(x) = x - (xˆ3)/3 + (xˆ5)/5 - (xˆ7)/7 + * (xˆ9)/9... */ public static BigDecimal arctan(int inversex, int scale) {... > mkdir /public_html/classes > javac compute/compute.java compute/task.java > jar cvf compute.jar compute/*.class added manifest adding: compute/compute.class(in = 307) (out= 201)(deflat adding: compute/task.class(in = 217) (out= 149)(deflated > javac -cp /public_html/classes/compute.jar engine/computeengine.java > mkdir /public_html/classes/client > javac -cp /public_html/classes/compute.jar client/computepi.java client/pi.java > rmiregistry & > java -cp /src:/ /public_html/classes/compute.jar -Djava.rmi.server.codebase= beeblebrox/classes/compute.jar -Djava.rmi.server.hostname=zaphod -Djava.security.policy=server.policy engine.computeengine java -cp /src: /public_html/classes/compute.jar -Djava.rmi.server.codebase= perfect/classes/ -Djava.security.policy=client.policy client.computepi zaphod 45

27 Server Policy grant codebase "file:/home/beeblebrox/src/" { permission java.security.allpermission; ; Client Policy grant codebase "file:/home/perfect/src/" { permission java.security.allpermission; ; Σύνοψη 3 ης ιάλεξης Σύνοψη ιάλεξης Κατανεµηµένα Συστήµατα ΙΙ Επικοινωνία ιεργασιών µέσω TCP/IP Sockets στη JAVA Κλήση Αποµακρυσµένων ιαδικασιών Κατανεµηµένα Αντικείµενα Κατανεµηµένα Αντικείµενα Τεχνολογίες Υλοποίησης Ενδιάµεσα Λογισµικά Remote Method Invocation -- RMI Σύνοψη Μαθήµατος Σύνοψη Μαθήµατος Βιβλιογραφία Επόµενη ιάλεξη Επικοινωνία ιεργασιών µέσω TCP/IP Τύποι Επικοινωνίας Sockets σε JAVA Sockets Κατανεµηµένα Αντικείµενα Θέµατα Σχεδιασµού JAVA RMI

28 Βιβλιογραφία Tutorials Βιβλίο Distributed Systems, Concepts and Design" (G.Coulouris, J.Dollimore, T.Kindberg) 1. Κεφάλαιο 4: Interprocess Communication 2. Κεφάλαιο 5: Distributed Objects and Remote Invocation Βιβλίο Distributed Systems: Principles and Paradigms" (A.Tanenbaum, M.Steen) 1. Κεφάλαιο 2: Communication -- Μόνο 2.1, 2.2, 2.3 Βιβλίο Κατανεµηµένα Συστήµατα µε Java (Ι.Κ.Κάβουρας, Ι.Ζ.Μήλης, Γ.Β.Ξυλωµένος, Α.Α.Ρουκουνάκη) 1. Κεφάλαιο 7: Επικοινωνία µέσω δικτύου 2. Κεφάλαιο 8: ικτύωση στην Java 3. Κεφάλαιο 16: Κατανεµηµένα αντικείµενα Trail: Custom Networking networking/index.html Trail: Custom Networking index.html Επόµενη ιάλεξη SUN SPOT

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης Τρίτη, 15 Μαΐου, 2007 Αίθουσα ΑΠ7 Μελετάµε ένα κατανεµηµένο σύστηµα για την

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

Σύνοψη 6 ης ιάλεξης. Εισαγωγικά (2)

Σύνοψη 6 ης ιάλεξης. Εισαγωγικά (2) Σύνοψη 6 ης ιάλεξης Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης Τετάρτη, 7 Μαΐου, 2008 Αίθουσα ΑΠ7 Κατανεµηµένα Συστήµατα

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

Σύνοψη 5 ης ιάλεξης. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων.

Σύνοψη 5 ης ιάλεξης. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Σύνοψη 5 ης ιάλεξης Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης Τετάρτη, 16 Απριλίου, 2008 Αίθουσα ΑΠ7 Κατανεµηµένα Συστήµατα

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

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Remote Method Invocation (RMI) Εισαγωγή Η αποµακρυσµένη επίκληση µεθόδων (RMI), επιτρέπει σε

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002

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

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 18 Οκτωβρίου 2006 Η εργασία είχε σαν στόχο να δημιουργηθεί ένα κατανεμημένο σύστημα ελέγχου συσκευών μιας κουζίνας.συγκεκριμένα

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 23: Εισαγωγή στην Δικτύωση (Networking) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διευθύνσεις και Θύρες - Sockets και ServerSockets Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής

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

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1 ικτύωσησε Java ιευθύνσεις IP Υποδοχές ρεύµατος Σειριακοποίηση αντικειµένων Υποδοχές δεδοµενογραφηµάτων Υποδοχές πολυεκποµπής Οµοιόµορφοι Εντοπιστές Πόρων Κατανεµηµένα Συστήµατα 08-1 Υποδοχές σε C ικτύωσησε

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

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης 14. Δικτύωση με Java Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δημιουργείτε έναν ελάχιστο εξυπηρέτη TCP/IP σε Java Να δημιουργείτε έναν ελάχιστο εξυπηρετούμενο TCP/IP σε Java Να κατανοείτε πώς υλοποιούνται

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

Αποµακρυσµένη κλήση διαδικασιών

Αποµακρυσµένη κλήση διαδικασιών Αποµακρυσµένηκλήση διαδικασιών Τοπική κλήση διαδικασιών Αποµακρυσµένη κλήση διαδικασιών Μεταβίβαση παραµέτρων Πρωτόκολλα επικοινωνίας Αντιγραφή µηνυµάτων Προδιαγραφές διαδικασιών RPC στο σύστηµα DCE Κατανεµηµένα

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

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης Τρίτη, 22 Μαΐου, 2007 Αίθουσα ΑΠ7 Μελετάµε ένα κατανεµηµένο σύστηµα για την

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

Απομακρυσμένα αντικείμενα (Remote Objects) Κατανεμημένα Συστήματα 1

Απομακρυσμένα αντικείμενα (Remote Objects) Κατανεμημένα Συστήματα 1 Απομακρυσμένα αντικείμενα (Remote Objects) Κατανεμημένα Συστήματα 1 llis@inf.uth.gr Απομακρυσμένα αντικείμενα Οι μέθοδοι τους μπορεί να κληθούν απομακρυσμένα στο πνεύμα των RPCs Οι τοπικές αναφορές σε

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

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία -RPC 1 Υλοποίηση RPC Προκειμένου να επιτευχθεί διαφάνεια στην κλήση RPC,

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

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net Εργαστήριο Java Lab11 Αντικείµενο: Δίκτυα Πακέτο java.net H Java παρέχει ένα σύνολο από ενσωµατωµένες δυνατότητες για δηµιουργία εφαρµογών στο Internet ή σε τοπικά δίκτυα. H Java παρέχει τα stream sockets

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

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Γενικά Η αρχιτεκτονική ανάπτυξης τους πληροφοριακού συστήµατος Γραµµατεία 2000 υποσύστηµα διαχείρισης προσωπικού

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

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

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

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

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

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

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

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

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

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

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

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

HY335 4ο Φροντιστήριο

HY335 4ο Φροντιστήριο HY335 4ο Φροντιστήριο Δημιουργία ενός τοπικού δικτύου και επίδειξη προγραμμάτων τύπου client / server για TCP και UDP Fontas Fafoutis Ilias Tsompanidis Δημιουργία

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

Σύστηµα Java RMI. Κατανεµηµένα Συστήµατα 17-1

Σύστηµα Java RMI. Κατανεµηµένα Συστήµατα 17-1 Σύστηµα Java RMI οµή συστήµατος Μεταβίβαση παραµέτρων Μοντέλα επικοινωνίας Αναφορές αντικειµένων Ονόµατα αντικειµένων ιαχείριση αντικειµένων Υλοποίηση συστηµάτων Java RMI Κατανεµηµένα Συστήµατα 17-1 οµήσυστήµατος

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

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

2η Προγραµµατιστική Εργασία

2η Προγραµµατιστική Εργασία Προγραµµατισµός ικτύων (Ε-01) 2η Προγραµµατιστική Εργασία Επέκταση ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση παράλληλου εξυπηρετητή πρωτοκόλλου µεταφοράς αρχείων ιδάσκων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

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

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

B. Ενσωμάτωση Ιθαγενών Μεθόδων B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26 Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.: 43 Άσκηση 3 Μια αξιόπιστη multicast υπηρεσία επιτρέπει σε έναν

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

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

Εισαγωγή στον Κατανεμημένο Προγραμματισμό Εισαγωγή στον Κατανεμημένο Προγραμματισμό Περιεχόμενα Βασικές γνώσεις υποδοχών δικτύων Ιστορία του κατανεμημένου προγραμματισμού Εξέλιξη των πλαισίων ανάπτυξης επιχειρηματικών εφαρμογών Βασικές γνώσεις

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή

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

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Πλωτάρχης Γ. ΚΑΤΣΗΣ ΠΝ Γιατί χρησιµοποιούµε δίκτυα? Δίκτυο Σύνολο Η/Υ και συσκευών Συνδεδεµένα µε κάποιο µέσο Stand-alone

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

Δοκιμή και Αποσφαλμάτωση Testing and Debugging Δοκιμή και Αποσφαλμάτωση Testing and Debugging XVI-1 Ο μεταγλωττιστής εντοπίζει τα συντακτικά λάθη ενός προγράμματος. Δεν είναι όμως σε θέση να εντοπίσει λάθη στη λογική του προγράμματος. δεδομένα πρόγραμμα

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java Java Media Framework Ηβιβλιοθήκη JMF Εγκαθίσταται επιπρόσθετα στη Java Αναπαραγωγή πολυµέσων Αποστολή και λήψη πολυµέσων σε πραγµατικό χρόνο Γραφικά αντικείµενα

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

6. Εξαιρέσεις στη γλώσσα Java

6. Εξαιρέσεις στη γλώσσα Java 6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις

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

Structuring Components Specifications using Dependencies among the Runtime Environments

Structuring Components Specifications using Dependencies among the Runtime Environments Vol. 99 No. 72 SS99-7 [ ] 1999 5 21 17 923-1292 1-1 : 0761-51-1262 : 0761-51-1360 : kaiya@jaist.ac.jp ochimizu@jaist.ac.jp Java RMI RMI / Java Z Structuring Components Specifications using Dependencies

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

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1 Βασικά Θέματα Επικοινωνίας Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Πρωτόκολλο επικοινωνίας Η/Υ Προσδιορίζει τους κανόνες που διέπουν την επικοινωνία ανάμεσα στα εμπλεκόμενα μέρη τα μηνύματα και (εν μέρει)

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

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που 7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

Μοντέλο Σύγχρονου ικτύου. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Μοντέλο Σύγχρονου ικτύου. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Μοντέλο Σύγχρονου ικτύου Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης ευτέρα, Νοεµβρίου, 0 Αίθουσα Β Μία συλλογή υπολογιστικών

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

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

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

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

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

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview Εργαστήριο Λειτουργικών Συστημάτων Minix Overview Σύνοψη 5ης ιάλεξης Λειτουργικό Σύστημα Minix Οργάνωση του Λειτουργικού Συστήματος Οργάνωση πηγαίου κώδικα Minix recompilation Σύνοψη Μαθήματος Σύνοψη Μαθήματος

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

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

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

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

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο 2005-06. Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο 2005-06. Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 «Κατανεµηµένα Συστήµατα Αρχείων (1/2)» ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Σύστηµα αρχείων Αποθήκευση, προσπέλαση και διαχείριση δεδοµένων

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

Σύστηµα CORBA. Κατανεµηµένα Συστήµατα 18-1

Σύστηµα CORBA. Κατανεµηµένα Συστήµατα 18-1 Σύστηµα CORBA οµή συστήµατος Μεταβίβαση παραµέτρων Μοντέλα επικοινωνίας υναµικές κλήσεις Αναφορές αντικειµένων Ονόµατα αντικειµένων ιαχείριση αντικειµένων Υλοποίηση συστηµάτων CORBA Κατανεµηµένα Συστήµατα

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

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο Πανεπιστήµιο Αιγαίου Τµήµα Μηχανικών Πληροφοριακών & Επικοινωνιακών Συστηµάτων Πρόγραµµα Προπτυχιακών Σπουδών Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο Κατανεµηµένος Προγραµµατισµός

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

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

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα

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

7.2 Τεχνολογία TCP/IP

7.2 Τεχνολογία TCP/IP 7.2 Τεχνολογία TCP/IP Ερωτήσεις 1. Πώς χρησιµοποιείται σήµερα ο όρος TCP/IP; ε ποια πρωτόκολλα αναφέρεται και γιατί έχει επικρατήσει αυτή η ονοµασία; 2. Ποια ανάγκη οδήγησε στην επικράτηση της τεχνολογίας

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1 Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών

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

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Java Sockets, Threads, Ασκήσεις Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων SOCKETS 2 Διαδιεργασιακή επικοινωνία με Sockets

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

ιαχείριση Πληροφοριών στο ιαδίκτυο

ιαχείριση Πληροφοριών στο ιαδίκτυο ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 3) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α 1 ΤΕΧΝΙΚΕΣ ΠΡΟΔΙΑΓΡΑΦΕΣ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α 1.1 ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ Το λειτουργικό σύστημα θα πρέπει να είναι Windows XP, 2000 και 2003. Ο λογαριασμός χρήστη του υπολογιστή, θα πρέπει να έχει πλήρη

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

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

Βασικά της γλώσσας JAVA

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

11β Δομικά πρότυπα σχεδίασης

11β Δομικά πρότυπα σχεδίασης 11β Δομικά πρότυπα σχεδίασης Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Δομικά πρότυπα

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

ΚΕΦΑΛΑΙΟ Web Services

ΚΕΦΑΛΑΙΟ Web Services ΚΕΦΑΛΑΙΟ Web Services Προϋποθέσεις εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Κεφάλαιο έκδοση 4.51e build 458 ή νεότερο 2. Internet Information Server (IIS) version 6 ή νεότερος 3. Σε κάποιον υπολογιστή

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

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

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ File Transfer Protocol Πρωτόκολλο Μεταφοράς Αρχείων Χρησιμοποιείται σε δίκτυα τα οποία υποστηρίζουν το πρωτόκολλο TCP/IP (όπως internet ή intranet). Ο FTP client μπορεί

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

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

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

Γενικά. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Βασικοί Ορισµοί

Γενικά. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Βασικοί Ορισµοί Γενικά Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Ιωάννης Χατζηγιαννάκης ευτέρα, 24 Σεπτεµβρίου, 2012 Αίθουσα Β3 Σκοπός του µαθήµατος: Κατανόηση

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που 1 Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω: 3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται

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

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

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

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

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ

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

Χαρακτηρισµός Κατανεµηµένων Συστηµάτων

Χαρακτηρισµός Κατανεµηµένων Συστηµάτων Εισαγωγή Χαρακτηρισµός Κατανεµηµένων Συστηµάτων Μαρία Ι. Ανδρέου ΗΜΥ417, ΗΜΥ 663 Κατανεµηµένα Συστήµατα Χειµερινό Εξάµηνο 2006-2007 Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Κύπρου

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

Κατανεµηµένασυστήµατα αρχείων

Κατανεµηµένασυστήµατα αρχείων Κατανεµηµένασυστήµατα αρχείων Θέµατα σχεδίασης ιεπαφή υπηρεσίας αρχείων και ευρετηρίων Ονόµατα και αναγνωριστικά Οργάνωση εξυπηρετητών Σηµασιολογία (κατα)µερισµού αρχείων Ενταµίευση αρχείων Συνέπεια συστήµατος

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

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

Κεφάλαιο 1. Νήματα (Threads). Time Sharing Κεφάλαιο 1. Νήματα (Threads). Time Sharing Η επεξεργαστική ισχύς είναι ένας πόρος περιορισμένος (ιδιαίτερα στις προηγούμενες δεκαετίες) ο οποίος θέλουμε να εξυπηρετεί ταυτόχρονα πολλές εργασίες. Στους

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Αντικείμενο: Αρχεία Πακέτο java.io Πακέτο java.io.zip Στην Java δεν υπάρχει η έννοια των εγγραφών μέσα σε ένα αρχείο. Ο προγραμματιστής πρέπει να κατασκευάσει το αρχείο κατάλληλα έτσι ώστε

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές

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

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

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

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

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης Φροντιστήριο Α' Κατανεμημένα Συστήματα 2011-2012 Επιμέλεια: Μπούτσης Ιωάννης mpoutsis@aueb.gr Outline Επικοινωνία μέσω Java Sockets(υποδοχές) Παραλληλοποιημένος κώδικας: Threads(νήματα) Παραδείγματα Εισαγωγή

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,

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

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Ηυιοθέτησητης τεχνολογίαςκαι αρχιτεκτονικής TCP/IP δεν έρχεται σε σύγκρουσηµε το µοντέλο του OSI και αυτό γιατί και τα δυο συστήµατααναπτύχθηκαν συγχρόνως. Παρόλα αυτά, υπάρχουν ορισµένες ουσιώδεις διαφορές

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

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

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

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

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006) exercise 6new_10 12/5/2008 12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006) 12.6.1. Περιγραφή Θεωρήστε την γραφική διεπαφή της αριθµοµηχανής των MS Windows. Μια παρόµοια διεπαφή (δες

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα Αντικειµενοστραφής Προγραµµατισµός Αντικείµενα Ιεραρχία κλάσεων. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του this και του super Αντικειµενοστραφής

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