Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1."— Μεταγράφημα παρουσίασης:

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

2  Διαχείριση εργασιών ◦ fork(), exit(), exec() (βλ 2 ο Φροντ.)  Επικοινωνία διεργασιών ◦ signals (βλ 2 ο Φροντ.) ◦ sockets και client/server, shared memory  Συγχρονισμός διεργασιών ◦ semaphores - 2 -

3  Θεωρούµε ότι: ◦ Μία διεργασία διαχειρίζεται τις κοινές πληροφορίες – την ονοµάζουµε εξυπηρετητή (server) ◦ Μια διεργασία ϑέλει να αποκτήσει πρόσβαση στις πληροφορίες – την ονοµάζουµε πελάτη (client) ◦ Όταν ο πελάτης ζητάει µια πληροφορία από τον εξυπηρετητή λέµε ότι κάνει µια αίτηση  Μια διεργασία-πελάτης µπορεί να κάνει αιτήσεις σε διαφορετικές διεργασίες-εξυπηρετητές  Μια διεργασία-εξυπηρετητής µπορεί να δέχεται αιτήσεις από διαφορετικές διεργασίες-πελάτες  Μια διεργασία µπορεί να είναι ταυτόχρονα πελάτης και εξυπηρέτητής  Το σχήµα µας επιτρέπει να υλοποιήσουµε ένα µεγάλο εύρος λειτουργιών  Απόδοση/ Ευελιξία  Αφαιρετικότητα - 3 -

4  Ο καθιερωµένος τρόπος επικοινωνίας είναι µε µηνύµατα  Ορίστηκε αρχικά για τα συστήµατα UNIX (Xerox PARC- 70s) αλλά πλέον υποστηρίζεται από όλα τα λειτουργικά συστήµατα (εφαρμογές: WWW, , Network printing κτλ)  Μοιάζει µε τον χειρισµό αρχείων – ένα κανάλι επικοινωνίας λειτουργεί σαν ένα αρχείο στο δίσκο ◦ Μια ενέργεια write µετατρέπεται σε send ◦ Μια ενέργεια read µετατρέπεται σε receive  Μπορεί να υλοποιήσει είτε σύγχρονες είτε ασύγχρονες µεταφορές δεδοµένων  Υποστηρίζει TCP και UDP ◦ UDP -- σαν ταχυδροµείο (σύντομα μυνήματα, ασύγχρονη επικοινωνία, μη αξιόπιστο, datagram sockets) ◦ TCP -- σαν κλήση σε τηλέφωνο (σύγχρονη και αξιόπιστη επικοινωνία, stream sockets) - 4 -

5  ∆ύο διεργασίες που εκτελούνται στην ίδια υπολογιστική µονάδα µπορούν να χρησιµοποιήσουν µια απλουστευµένη έκδοση των sockets, γνωστά και ως pipes ◦ Εύκολα µπορούµε να τα µετατρέψουµε σε socket που λειτουργούν σε TCP/IP δίκτυα  Το socket αποκτά την µορφή ενός εικονικού αρχείου  ΄Ενα socket name µπορεί να ‘ελέγχεται’ από το πολύ µια διεργασία  Μια διεργασία µπορεί να ‘ελέγχει’ πολλά socket names  Οι αποστολείς πρέπει να ξέρουν το όνοµα του socket στο οποίο ‘ακούει’ ο παραλήπτης ◦ ΄Οποια διεργασία γνωρίζει το όνοµα του socket µπορεί να στείλει µηνύµατα ◦ Συνήθως είναι γνωστό εκ των προτέρων - 5 -

6  Για να χειριστούµε ένα socket δουλεύουµε µε socket descriptors (σε αντιστοιχία με τα files descriptors)  Η αρχικοποίηση ενός socket descriptor (sd) γίνεται ως εξής: sd = socket(format, type, protocol); ◦ ∆ηµιουργεί ένα νέο sd, format: AF_UNIX (local socket) ή AF_INET(6) για network sockets με υποστήριξη ή όχι IPv6. type: πχ stream, datagram ή raw, protocol: πχ TCP ή UDP  Ο πελάτης για να ‘συνδεθεί’ µε τον εξυπηρέτη χρησιµοποιεί την κλήση συστήµατος connect connect(sd, address, length);  Η αποστολή µηνυµάτων γίνεται µε την χρήση της write write(sd, "hello", 5);  Ουσιαστικά δηλαδή συμπεριφερόμαστε στα sockets σαν κανονικά αρχεία

7  Ο εξυπηρέτης πρέπει να ‘συνδέσει’ το sd µε ένα local port του ΛΣ ως εξής: bind(sd, address, length); ◦ Το πεδίο address ορίζει το local port που ‘ακούει’ η διεργασία – δηλαδή το όνοµα του εικονικού αρχείου ◦ Το πεδίο length είναι το µήκος του πεδίου address  Για να δεχθεί µια νέα σύνδεση χρησιµοποιεί την κλήση συστήµατος listen ως εξής: listen(sd, qlength); ◦ Ο εξυπηρέτης δέχεται τις κλήσεις σειριακά – άρα οι κλήσεις τοποθετούνται σε µία ουρά έως ότου η διεργασία τις εξυπηρετήσει ◦ Η παράµετρος qlength ορίζει το µέγεθος της ουράς - 7 -

8 - 8 -

9 #include main() { int sd, ns, fromlen; struct sockaddr sockaddr; char buf[256]; sd = socket(AF_UNIX, SOCK_STREAM, 0); // bind name -- don’t include null char bind(sd, "sockname", sizeof("sockname")-1); // listen for new connections (blocks) listen(sd, 1);

10 ... for(;;) { // new connection established ns = accept(sd, &sockaddr, &fromlen); // wait for message (blocks) read(ns, buf, sizeof(buf)); printf("server read ’%s’\n, buf); // send message write(ns, "OK", 2); // close connection & wait for next close(ns); }

11 #include main() { int sd; char buf[256]; sd = socket(AF_UNIX, SOCK_STREAM, 0); // connect to name -- don’t include null char connect(sd, "sockname", sizeof("sockname")-1);

12 ... // send message write(sd, "hello", 5); // wait for message (blocks) read(sd, buf, sizeof(buf)); printf("client read ’%s’\n, buf); // close connection close(sd); exit(0); }

13  20 & 21: FTP  22: SSH  23: Telnet  25: SMTP ( )  53: DNS  80: HTTP (WWW)  110: POP3 κτλ «A port number is a 16-bit unsigned integer, thus ranging from 1 to (port number 0 is reserved and can't be used). A process associates its input or output channels via sockets (transport protocol, a port number and an address). This process is known as binding, and enables sending and receiving data via the network. The OS’s networking software has the task of transmitting outgoing data from all application ports onto the network, and forwarding arriving network packets to a process by matching the packet's IP address and port number. Only one process may bind to a specific IP address and port combination using the same transport protocol

14  Πρόβλημα του δείπνου των Φιλοσόφων (Dijkstra, 1965)  Deadlock  Starvation  Λύσεις: Resource hierarchy solution (Dijkstra’s original solution), Arbitary solutions (semaphors, Dijkstra 1965)  Δυαδικός semaphor=mutex


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google