Προγραµµατισµός ικτύων Ε-01

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

Download "Προγραµµατισµός ικτύων Ε-01"

Transcript

1 Προγραµµατισµός ικτύων Ε-01 7η ιάλεξη ιδάσκων: Νίκος Ντάρµος [ Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων

2 Στο σηµερινό µάθηµα... Βασικές και προχωρηµένες αρχιτεκτονικές εξυπηρετητών.. Επιλογές υποδοχών. Προχωρηµένες τεχνικές Ε/Ε.

3 Εξυπηρέτηση πολλαπλών αιτήσεων Βασικές και προχωρηµένες αρχιτεκτονικές εξυπηρετητών

4 ιάρθρωση Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονη εξυπηρέτηση πολλαπλών αιτήσεων. Ταυτόχρονη υποστήριξη πολλαπλών πρωτοκόλλων. Ταυτόχρονη υποστήριξη πολλαπλών υπηρεσιών. Σχεδιάζοντας αποδοτικούς εξυπηρετητές.

5 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Εξυπηρέτηση πολλαπλών αιτήσεων

6 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονη εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Ποια είναι η «καλύτερη» αρχιτεκτονική; ιεργασίες; Νήµατα; Γεγονότα; Υβρίδια; Πως ορίζεται η «καλύτερη»; Γρηγορότερη στην απόκριση; Με µικρότερες απαιτήσεις εύρους Ϲώνης δικτύου ή/και υπολογιστικών πόρων; Ευκολότερη στην υλοποίηση; Σταθερότερη υπό ϕόρτο; Καλύτερα κλιµακώσιµη;...

7 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονη εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Επαναληπτικοί (iterative) εξυπηρετητές Μόνο ένα νήµα/διεργασία εξυπηρέτησης. Οι αιτήσεις επεξεργάζονται σειριακά. + Πολύ απλή υλοποίηση: δεν χρειάζεται συγχρονισµός, διαχείριση σηµάτων, διαχείριση διεργασιών,... + Χρήσιµοι όταν η χρονική διάρκεια επεξεργασίας των αιτήσεων είναι περιορισµένη (π.χ. υπηρεσία daytime). Προβληµατικοί όταν ο ϱυθµός άφιξης πελατών είναι µεγάλος σε σχέση µε το χρόνο εξυπηρέτησης. Ο χρόνος εξυπηρέτησης δεν εξαρτάται µόνο από τον εξυπηρετητή. Καθυστερήσεις λόγω Ε/Ε, δικτύου και κλήσεων που µποκάρουν. Καθυστερήσεις λόγω ϕόρτου συστήµατος. Καθυστερήσεις λόγω κακής σχεδίασης του πελάτη. Κάθε πελάτης «πληρώνει» την καθυστέρηση των προηγούµενων από αυτόν. Κίνδυνος για λιµοκτονία, livelocks ή επιθέσεις τύπου Denial of Service (DoS) αν ο τερµατισµός της σύνδεσης εξαρτάται από τον πελάτη. Παράδειγµα: ένας πελάτης συνδέεται, ο εξυπηρετητής περιµένει τα δεδοµένα της αίτησής του, αλλά αυτός δεν τα στέλνει ποτέ ή τα στέλνει µε αργό ϱυθµό.

8 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονη εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Για «ποιοτική» εξυπηρέτηση ή πιο πολύπλοκες συνθήκες, απαιτείται ταυτοχρονισµός. ιακρίνουµε τις εξής περιπτώσεις: Ταυτόχρονοι εξυπηρετητές. Μία διεργασία για κάθε αίτηση. Ενα νήµα για κάθε αίτηση. Επαναληπτικοί εξυπηρετητές (πολλές αιτήσεις εξυπηρετούνται από ένα νήµα). Με χρήση non-blocking Ε/Ε και έλεγχο ετοιµότητας (level-triggered). Με χρήση non-blocking Ε/Ε και έλεγχο αλλαγών (edge-triggered). Με ασύγχρονη Ε/Ε και ειδοποιήσεις ολοκλήρωσης. Προεκχώρηση διεργασιών (µία διεργασία ανά πελάτη). Χωρίς συγχρονισµό για κλήση της accept(2). Με χρήση συγχρονισµού για κλήση της accept(2). Με µεταφορά των file descriptors ανάµεσα στις διεργασίες. Προεκχώρηση νηµάτων (ένα νήµα ανά πελάτη). Με κλήση της accept(2) σε κάθε νήµα. Με ένα κεντρικό νήµα να καλεί accept(2). Υβριδικές λύσεις µε δυναµική εναλλαγή ανάµεσα σε επαναληπτική, ταυτόχρονη και προεκχωρηµένη εξυπηρέτηση.

9 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Ταυτόχρονοι εξυπηρετητές

10 Ταυτόχρονοι εξυπηρετητές Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Μία διεργασία ανά αίτηση: Συνδεσµοστραφής επικοινωνία Βασική ιδέα: Υπάρχει µία ϐασική διεργασία η οποία καλεί accept(2) σε έναν ατέρµονο ϐρόχο. Για κάθε νέο πελάτη, η ϐασική διεργασία δηµιουργεί µία νέα µε fork(2). Η αρχική διεργασία κλείνει τον descriptor που επέστρεψε η accept(2). Κατόπιν συνεχίζει στο ϐρόχο της. Η νέα διεργασία κλείνει τον descriptor στον οποίο έρχονται νέες αιτήσεις, εξυπηρετεί τον νέο πελάτη µέσω του descriptor που επέστρεψε η accept(2) και τερµατίζει. 1 int sd, cd, pid; 2 sd = socket(/*... */); 3 bind(sd, /*... */); 4 listen(sd, /*... */); 5 while (1) { 6 cd = accept(sd, /*... */); 7 if ((pid = fork())) { // Father 8 close(cd); // Close client sd 9 /*... */ // Housekeeping 10 } else { // Child 11 close(sd); // Close listening sd 12 /*... */ // Process request 13 close(cd); // Close client sd 14 return 0; // Terminate 15 } 16 }

11 Ταυτόχρονοι εξυπηρετητές Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Μία διεργασία ανά αίτηση: Ασυνδεσµική επικοινωνία Βασική ιδέα: Υπάρχει µία ϐασική διεργασία η οποία διαβάζει τις αιτήσεις των πελατών σε έναν ατέρµονο ϐρόχο. Για κάθε νέο πελάτη, η ϐασική διεργασία δηµιουργεί µία νέα µε fork(2). Η αρχική διεργασία συνεχίζει στο ϐρόχο της. Η νέα διεργασία κλείνει τον descriptor στον οποίο έρχονται νέες αιτήσεις, επεξεργάζεται την αίτηση του πελάτη και τερµατίζει. Αν πρέπει να στείλει δεδοµένα στον πελάτη δηµιουργεί ένα νέο socket. 1 int sd, pid; 2 char buf[datagramsize]; 3 sd = socket(/*... */); 4 bind(sd, /*... */); 5 while (1) { 6 recvfrom(sd, buf, /*... */); 7 if (!(pid = fork())) { // Child 8 close(sd); 9 sd = socket(/*... */); 10 /*... */ 11 sendto(sd, /*... */); 12 close(sd); 13 return 0; 14 } 15 }

12 Ταυτόχρονοι εξυπηρετητές Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Μία διεργασία ανά αίτηση Πλεονεκτήµατα: + Εύκολη υλοποίηση. + (Ψευδο-)παράλληλη εξυπηρέτηση πελατών. + ιαχωρισµός πελατών. Μειονεκτήµατα: Η fork(2) είναι χρονοβόρα. Ανω όριο στο πλήθος διεργασιών-παιδιών. Κακή απόδοση όσο αυξάνονται οι διεργασίες λόγω context switching. Απαιτεί έλεγχο κατάστασης (SIGCHLD) για τις διεργασίες παιδιά.

13 Ταυτόχρονοι εξυπηρετητές Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Ενα νήµα ανά αίτηση Η ίδια ϐασική ιδέα όπως και µε µία διεργασία ανά αίτηση. Υπάρχει µία ϐασική διεργασία/νήµα που καλεί accept(2) ή διαβάζει τα δεδοµένα των πελατών. Για κάθε νέο πελάτη, το ϐασικό νήµα δηµιουργεί ένα νέο νήµα το οποίο ϑα αναλάβει την εξυπηρέτηση της αίτησης. Προσοχή: Ολα τα νήµατα µοιράζονται τον ίδιο file descriptor table και τις ίδιες καθολικές µεταβλητές! Το αρχικό νήµα δεν κλείνει το socket που επέστρεψε η accept(2). Το νέο νήµα δεν κλείνει το socket στο οποίο περιµένει νέους πελάτες το ϐασικό νήµα. Απαιτείται συγχρονισµός για πρόσβαση σε κοινούς πόρους. 1 void* my_thr(void *arg) { 2 int cd = *((int*)arg); 3 /*... */ // Process request 4 close(cd); 5 return NULL; 6 } 7 int main() { 8 int sd, cd, pid; 9 sd = socket(/*... */); 10 bind(sd, /*... */); 11 listen(sd, /*... */); 12 while (1) { 13 cd = accept(sd, /*... */); 14 pthread_create(/*... */, my_thr, (void *)&cd); 15 } 16 }

14 Ταυτόχρονοι εξυπηρετητές Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Ενα νήµα ανά αίτηση Πλεονεκτήµατα: + Εύκολη υλοποίηση. + (Ψευδο-)παράλληλη εξυπηρέτηση πελατών. + ιαχωρισµός πελατών. + εν έχει το κόστος της fork(2). + Πολλές ϕορές αποδοτικότερη απο την πιο αποδοτική αρχιτεκτονική προεκχώρησης διεργασιών. Μειονεκτήµατα: Ανω όριο στο πλήθος νηµάτων. Κακή απόδοση όσο αυξάνονται τα νήµατα λόγω context switching. Απαιτεί έλεγχο κατάστασης νηµάτων. Απαιτεί συγχρονισµό για πρόσβαση σε κοινές µεταβλητές ή κοινούς πόρους και πρόβλεψη αποφυγής λιµοκτονίας και αδιεξόδων. Πολλά συστήµατα δεν έχουν πλήρη ή καλή υποστήριξη για νήµατα.

15 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Προχωρηµένοι επαναληπτικοί εξυπηρετητές

16 Εξυπηρέτηση πολλαπλών αιτήσεων Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Πολυπλεξία Ε/Ε Βασική ιδέα: Υπάρχει µία διεργασία/ένα νήµα εκτέλεσης. Κάθε Ε/Ε είναι ασύγχρονη/non-blocking. Η διεργασία πολυπλέκει τις προσβάσεις Ε/Ε και την εξυπηρέτηση πελατών. Πλεονεκτήµατα: Με χρήση non-blocking Ε/Ε και έλεγχο ετοιµότητας (level-triggered): select(2), pselect(2), poll(2), /dev/poll, epoll(4), kqueue(2). Με χρήση non-blocking Ε/Ε και έλεγχο αλλαγών (edge-triggered): epoll(4), kqueue(2), SIGIO. Με ασύγχρονη Ε/Ε και ειδοποιήσεις ολοκλήρωσης: epoll(4), kqueue(2), Solaris event ports. + (Ψευδο-)παράλληλη εξυπηρέτηση πελατών. + εν έχει το κόστος της fork(2) ή του context switching. + εν απαιτεί συγχρονισµό ή έλεγχο κατάστασης νηµάτων/διεργασιών παιδιών. + Ευκολότερη αποσφαλµάτωση. Μειονεκτήµατα: εν ενδείκνυται αν η εξυπηρέτηση αιτήσεων είναι χρονοβόρα. Αυξηµένη πολυπλοκότητα σχεδίασης για παραπάνω από ϐασικές περιπτώσεις. Εκµεταλλεύεται µόνο έναν επεξεργαστικό πυρήνα. Μη πλήρης ή καλή υποστήριξη ασύγχρονης/non-blocking Ε/Ε από κάποια συστήµατα.

17 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων

18 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Βασική ιδέα: Μία ϐασική διεργασία δηµιουργεί αρχικά έναν αριθµό από νέες διεργασίες. Σε κάθε νεό πελάτη ανατίθεται και µία τέτοια διεργασία παιδί. Πλεονεκτήµατα: + (Ψευδο-)παράλληλη εξυπηρέτηση πελατών. + Γλιτώνει το κόστος της fork(2) πέρα από το αρχικό στάδιο. Μειονεκτήµατα: Η αρχική διεργασία πρέπει να επιλέξει εξαρχής έναν αριθµό διεργασιών που ϑα δηµιουργήσει. ιαφορετικά η αρχική διεργασία πρέπει να παρακολουθεί το ϕόρτο των διεργασιών παιδιών και να δηµιουργεί νέες ή να τερµατίζει υπάρχουσες αν υπερφορτώνονται ή υποχρησιµοποιούνται αντίστοιχα. ιακρίνονται οι εξής περιπτώσεις: Χωρίς συγχρονισµό για κλήση της accept(2). Με συγχρονισµό για κλήση της accept(2). Με µεταφορά των file descriptors ανάµεσα στις διεργασίες.

19 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Χωρίς συγχρονισµό για κλήση της accept(2) Βασική ιδέα. Η ϐασική διεργασία δηµιουργεί ένα socket στο οποίο έρχονται νέες αιτήσεις, καθώς και έναν αριθµό από διεργασίες παιδιά. Κατόπιν απλά περιµένει. Κάθε διεργασία παιδί καλεί accept(2) στο socket που δηµιούργησε η αρχική διεργασία. Αν έρθει νέος πελάτης στο socket αυτό, όλες οι διεργασίες ϑα «ξυπνήσουν», όµως µόνο µία ϑα συνεχίσει την εκτέλεση ενώ οι υπόλοιπες ϑα µπλοκάρουν και πάλι. 1 int sd, cd, i, pid[numchildren]; 2 sd = socket(/*... */); 3 bind(sd, /*... */); 4 listen(sd, /*... */); 5 for (i = 0; i < NUMCHILDREN; i++) { 6 if (!(pid[i] = fork())) { // Child 7 while (1) { // Forever... 8 cd = accept(sd, /*... */); 9 /*... */ // Process request 10 close(cd); // Close client sd 11 } 12 } 13 } 14 /* Wait doing nothing... */

20 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Χωρίς συγχρονισµό για κλήση της accept(2) Πλεονεκτήµατα: + Απλούστερη υλοποίηση εξυπηρετητή µε προεκχώρηση διεργασιών. Μειονεκτήµατα: Πρόβληµα «thundering herd»: για κάθε εισερχόµενη αίτηση ο πυρήνας του λειτουργικού πρέπει να ξεµπλοκάρει όλες τις διεργασίες παιδιά. Προσοχή: αν καλέσουµε select(2) για το αρχικό socket δηµιουργούνται συγκρούσεις! εν υποστηρίζεται από όλα τα συστήµατα. Λύση: Συγχρονισµός για κλήση της accept(2). Μπορεί να γίνει είτε µε ϐάση κλασσικές τεχνικές (π.χ. file locking) είτε µε σηµαφόρους (απλούς ή νηµατικούς).

21 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Με µεταφορά των file descriptors ανάµεσα στις διεργασίες Βασική ιδέα: Η ϐασική διεργασία δηµιουργεί ένα socket στο οποίο έρχονται νέες αιτήσεις, καθώς και έναν αριθµό από διεργασίες παιδιά και pipes ή socketpairs για να µπορεί να επικοινωνεί µαζί τους. Η ϐασική διεργασία καλεί accept(2) και κατόπιν µεταφέρει τον επιστρεφόµενο file descriptor σε κάποια διεργασία παιδί. Πλεονεκτήµατα: + εν απαιτεί συγχρονισµό για κλήση της accept(2). + εν υποφέρει από το πρόβληµα thundering herd. Μειονεκτήµατα: Απαιτεί η αρχική διεργασία να διατηρεί πληροφορίες κατάστασεις για τις διεργασίες παιδιά (π.χ. ποιες εξυπηρετούν πελάτες, ποιες είναι ανενεργές, κτλ.) Απαιτεί µία µέθοδο για αποστολή file descriptors στις διεργασίες παιδιά.

22 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση νηµάτων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Η ίδια σχεδιαστική αρχή προεκχώρησης διεργασιών επεξεργασίας πελατών µπορεί να εφαρµοστεί και για νήµατα. Με κλήση της accept(2) σε κάθε νήµα Ιδιες σχεδιαστικές αρχές µε τις αρχιτεκτονικές ταυτόχρονης εξυπηρέτησης µε προεκχώρηση διεργασιών και συγχρονισµό στην κλήση της accept(2), µε χρήση νηµατικών σηµαφόρων. Με ένα κεντρικό νήµα να καλεί την accept(2). Πλεονεκτήµατα: Ιδιες σχεδιαστικές αρχές µε τις αρχιτεκτονικές ταυτόχρονης εξυπηρέτησης µε προεκχώρηση διεργασιών και µεταφορά των descriptors. Καθώς τα νήµατα µοιράζονται τον χώρο µνήµης και τον πίνακα των file descriptors της διεργασίας, δεν απαιτείται pipe ή socketpair για µεταφορά των descriptors. + Σαφώς πιο γρήγορες και πιο απλές στην υλοποίηση από τις αρχιτεκτονικές πολλαπλών διεργασιών. Μειονεκτήµατα: Απαιτεί συγχρονισµό για πρόσβαση σε κοινές µεταβλητές ή κοινούς πόρους και πρόβλεψη αποφυγής λιµοκτονίας και αδιεξόδων. Οχι πάντα κατάλληλη, ανάλογα µε το µοντέλο εξυπηρέτησης.

23 Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Υβριδικές αρχιτεκτονικές

24 Υβριδικές αρχιτεκτονικές Εξυπηρέτηση πολλαπλών αιτήσεων Ταυτόχρονοι εξυπηρετητές Προχωρηµένοι επαναληπτικοί εξυπηρετητές Ταυτόχρονοι εξυπηρετητές µε προεκχώρηση διεργασιών/νηµάτων Υβριδικές αρχιτεκτονικές Μπορούµε να συνδυάσουµε τις προηγούµενες αρχιτεκτονικές για να καταπολεµήσουµε τα αρνητικά τους; Επαναληπτικοί εξυπηρετητές γρηγορότεροι για µονοεπεξεργαστικά συστήµατα. Ταυτόχρονοι εξυπηρετητές κλιµακώσιµοι σε πολλούς επεξεργαστικούς πυρήνες. Και ϐέβαια! Με υβριδικές αρχιτεκτονικές. υναµική εναλλαγή ανάµεσα σε διάφορες σχεδιάσεις Ταυτόχρονη χρήση γεγονότων και διεργασιών/νηµάτων Παράγοντες που επηρεάζουν την επιλογή: Χρόνος επεξεργασίας αιτηµάτων. Χρόνος Ε/Ε (από το δίκτυο, από το δίσκο, κτλ) Κόστος του context switching. Ορια που επιβάλλονται από το λογισµικό ή το υλικό. Γενικότερος υπολογιστικός ϕόρτος του εξυπηρετητή. Παραδείγµατα υβριδικής σχεδίασης: Εστω κλασσικός επαναληπτικός εξυπηρετητής µε πολυπλεξία Ε/Ε. Για κάθε αίτηµα πελάτη, ϑέτουµε ένα χρονικό όριο. Αν η επεξεργασία υπερβεί το όριο αυτό, δηµιουργούµε µία διεργασία ή ένα νήµα να συνεχίσει την εξυπηρέτηση. Εστω κλασσικός ταυτόχρονος εξυπηρετητής µε προεχκώρηση διεργασιών/νηµάτων. ιαµοιράζουµε το ϕόρτο στις διεργασίες/νήµατα, καθεµιά από τις οποίες εκτελεί επαναληπτικό αλγόριθµο µε πολυπλεξία Ε/Ε.

25 Εξυπηρέτηση πολλαπλών αιτήσεων

26 Εξυπηρέτηση πολλαπλών αιτήσεων Είδαµε ότι µπορούµε να εξυπηρετούµε πολλαπλούς πελάτες ταυτόχρονα. Ερώτηση: Μπορούµε να χρησιµοποιούµε πολλαπλά πρωτόκολλα (π.χ. TCP, UDP, SCTP,...) στον ίδιο εξυπηρετητή; Απάντηση: Φυσικά! Με πολλαπλά sockets να δέχονται εισερχόµενες αιτήσεις και πολυπλεξία τους µε χρήση των select(2), poll(2),... 1 int tcp_sd, udp_sd, sel; 2 fd_set fds; 3 tcp_sd = socket(af_inet, SOCK_STREAM, 0); 4 bind(tcp_sd, /*... */); 5 listen(tcp_sd, /*... */); 6 udp_sd = socket(af_inet, SOCK_DGREAM, 0); 7 bind(udp_sd, /*... */); 8 while (1) { 9 FD_ZERO(&fds); 10 FD_SET(tcp_sd, &fds); 11 FD_SET(udp_sd, &fds); 12 sel = select(max(tcp_sd, udp_sd) + 1, & fds, NULL, NULL, NULL); 13 if (sel > 0) { 14 if (FD_ISSET(tcp_sd, &fds)) { 15 cd = accept(tcp_sd, /*... */); 16 /*... */ 17 } else if (FD_ISSET(udp_sd, &fds)) { 18 recvfrom(udp_sd, buf, /*... */); 19 /*... */ 20 } 21 } 22 }

27 Εξυπηρέτηση πολλαπλών αιτήσεων

28 Εξυπηρέτηση πολλαπλών αιτήσεων Ερώτηση: Μπορούµε να εξυπηρετούµε πολλαπλές υπηρεσίες (π.χ. HTTP, SMTP,...) µε τον ίδιο εξυπηρετητή; Απάντηση: Φυσικά! Με πολλαπλά sockets να δέχονται εισερχόµενες αιτήσεις και πολυπλεξία τους µε χρήση των select(2), poll(2),... 1 int http_sd, smtp_sd, sel; 2 fd_set fds; 3 http_sd = socket(af_inet, SOCK_STREAM, 0); 4 bind(http_sd, /*... */); 5 listen(http_sd, /*... */); 6 smtp_sd = socket(af_inet, SOCK_STREAM, 0); 7 bind(smtp_sd, /*... */); 8 listen(smtp_sd, /*... */); 9 while (1) { 10 FD_ZERO(&fds); 11 FD_SET(http_sd, &fds); 12 FD_SET(smtp_sd, &fds); 13 sel = select(max(http_sd, smtp_sd) + 1, & fds, NULL, NULL, NULL); 14 if (sel > 0) { 15 if (FD_ISSET(http_sd, &fds)) { 16 cd = accept(http_sd, /*... */); 17 /*... */ 18 } else if (FD_ISSET(smtp_sd, &fds)) { 19 cd = accept(smtp_sd, /*... */); 20 /*... */ 21 } 22 } 23 }

29 Εξυπηρέτηση πολλαπλών αιτήσεων

30 Εισαγωγή Εξυπηρέτηση πολλαπλών αιτήσεων Κύριοι παράγοντες που επηρεάζουν την απόδοση ενός εξυπηρετητή: Context switching. Καθυστέρηση στην Ε/Ε. Αντιγραφή δεδοµένων από/προς τον πυρήνα/συναρτήσεις/διεργασίες/νήµατα. Συµφόρηση συγχρονισµού. έσµευση/απελευθέρωση µνήµης.

31 Εξυπηρέτηση πολλαπλών αιτήσεων Context switching Ο #1 λόγος κακής απόδοσης δικτυακών εξυπηρετητών και ο #1 στόχος επιθέσεων τύπου Denial of Service (DoS). Πρόβληµα: το σύστηµα σπαταλά περισσότερο χρόνο στην εναλλαγή διεργασιών/νηµάτων απ ότι στην εκτέλεση του κώδικά τους. Ακραία περίπτωση: το σύστηµα δε µπορεί να δηµιουργήσει άλλες διεργασίες/νήµατα, µε αποτέλεσµα διάφορες υπηρεσίες να καταρρέουν! Ιδανική περίπτωση: τόσες διεργασίες/νήµατα όσοι και οι επεξεργαστικοί πυρήνες. Καθυστέρηση Ε/Ε Γνωστό πρόβληµα απόδοσης. Προκύπτει τόσο στο δίκτυο (αργές συνδέσεις, απώλεια πακέτων, αργοί πελάτες/εξυπηρετητές,...) όσο και σε τοπικό επίπεδο (Ε/Ε από/προς το δίσκο ή περιφερειακές συσκευές). Στις περισσότερες περιπτώσεις µπορεί να «κρυφτεί» µε χρήση non-blocking ή ασύγχρονης Ε/Ε.

32 Εξυπηρέτηση πολλαπλών αιτήσεων Αντιγραφή δεδοµένων Πολλές ϕορές δηµιουργούµε αντίγραφα δεδοµένων στη µνήµη. Αντιγραφή δεδοµένων στο stack σε κλήσεις συναρτήσεων. Αντιγραφή τιµών επιστροφής συναρτήσεων για διατήρησή τους. Αντιγραφή δεδοµένων από/προς τον πυρήνα του λειτουργικού. Η αντιγραφή δεδοµένων πρέπει να αποφεύγεται. Προσθέτει καθυστερήσεις. Σπαταλά πόρους συστήµατος. Μπορεί να δηµιουργήσει προβλήµατα αν τα αντίγραφα δεν διατηρούνται συνεπή. Η καλύτερη µέθοδος αποφυγής αντιγράφων είναι η χρήση «buffer descriptors». Για κάθε τµήµα µνήµης, διατηρούµε: είκτη στο τµήµα µνήµης και το συνολικό µέγεθος του τµήµατος. είκτη προς και µήκος του κοµµατιού του τµήµατος που χρησιµοποιείται. είκτες προς επόµενους/προηγούµενους buffer descriptors. Μετρητή διεργασιών/νηµάτων/συναρτήσεων που τον χρησιµοποιούν. Αντί να χρησιµοποιούµε ως όρισµα ή τιµή επιστροφής σε συναρτήσεις απλά ένα δείκτη στο τµήµα µνήµης, χρησιµοποιούµε (αλυσίδες από) buffer descriptors. είτε για παράδειγµα την getaddrinfo(3). Καλύτερα αποτελέσµατα για µεγάλα τµήµατα µνήµης παρά για µικρά.

33 Εξυπηρέτηση πολλαπλών αιτήσεων Συµφόρηση συγχρονισµού ηµιουργείται όταν πολλά τµήµατα κώδικα καταλήγουν να περιµένουν για κάποιο lock (π.χ. σηµαφόρο, κλειδωµένο αρχείο κτλ.) Από τη µία έχουµε απλά/«χοντροκοµµένα» σχήµατα συγχρονισµού. Για παράδειγµα, ένας σηµαφόρος για τα πάντα. Εύκολο στην υλοποίηση αλλά καθόλου αποδοτικό. Από την άλλη έχουµε «λεπτοµερή» σχήµατα συγχρονισµού. Για παράδειγµα, ένας σηµαφόρος για κάθε κοινό τµήµα κώδικα ή πόρο. Θεωρητικά πιο αποδοτικό, ωστόσο προσθέτει µεγάλη πολυπλοκότητα στη σχεδίαση και αυξάνει τις απαιτήσεις σε χώρο µνήµης και υπολογιστικούς πόρους. Και στις δύο περιπτώσεις υπάρχει κίνδυνος για λιµοκτονία, αδιέξοδα, race conditions κτλ. Συνήθως ξεκινάµε µε ένα απλό σχήµα και προχωρούµε προς ένα λεπτοµερές, έως ότου η απόδοση είναι αποδεκτή. Λάθος: απαιτείται προσεκτική σχεδίαση εξαρχής, διαχωρισµός των προσβάσεων σε κοινούς πόρους/τµήµατα κώδικα και αποφυγή συµφόρησης συγχρονισµού: αν τελείως διαφορετικά τµήµατα κώδικα συναγωνίζονται για τους ίδιος πόρους, κάτι έχουµε κάνει λάθος...

34 Εξυπηρέτηση πολλαπλών αιτήσεων έσµευση/απελευθέρωση µνήµης Από τις πιο κοινές πράξεις σε πολλές εφαρµογές. Λύσεις: Προσφέρει δυναµικότητα στη διαχείριση της διαθέσιµης µνήµης. Ωστόσο, οι αλγόριθµοι δέσµευσης/απελευθέρωσης µνήµης εισάγουν καθυστερήσεις (κυρίως λόγω συµφόρησης συγχρονισµού). Προεκχώρηση αρκετής µνήµης στην αρχή του προγράµµατος/συνάρτησης για όλη την εκτέλεσή του και διαχείρισή της από το ίδιο το πρόγραµµα. Χρήση λιστών για αντικείµενα που δεσµεύονται και απελευθερώνονται συχνά, µε σκοπό την επαναχρησιµοποίησή τους.

35 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) Επιλογές υποδοχών

36 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) Επιλογές υποδοχών Το API των BSD sockets επιτρέπει τον έλεγχο ορισµένων ιδιοτήτων/επιλογών των sockets. Προβλέπει τρεις µεθόδους: getsockopt(2) και setsockopt(2). fcntl(2). ioctl(2). Οι επιλογές διακρίνονται ανάλογα µε το «επίπεδο» στο οποίο αναφέρονται: 1 Επιλογές επιπέδου υλοποίησης των sockets. 2 Επιλογές πρωτοκόλλων επιπέδου µεταφοράς. 3 Επιλογές πρωτοκόλλων επιπέδου διαδικτύου.

37 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) getsockopt(2)/setsockopt(2)

38 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) Επιλογές υποδοχών getsockopt(2)/setsockopt(2) int getsockopt(int s, int level, int optname, void* optval, socklen_t* optlen); int setsockopt(int s, int level, int optname, const void* optval, socklen_t optlen); s: ένας socket descriptor που αντιστοιχεί σε ένα ανοιχτό socket. level: το επίπεδο στο οποίο αναφέρεται η επιλογή. SOL_SOCKET: επιλογές επιπέδου υλοποίησης των sockets. IPPROTO_IP: επιλογές επιπέδου πρωτοκόλλου IPv4. IPPROTO_IPV6: επιλογές επιπέδου πρωτοκόλλου IPv6. IPPROTO_ICMPV6: επιλογές επιπέδου πρωτοκόλλου ICMPv6. IPPROTO_TCP: επιλογές επιπέδου πρωτοκόλλου TCP. optval: δείκτης σε χώρο µνήµης µεγέθους (*)optlen στον οποίο ϑα αποθηκευθεί ή από τον οποίο ϑα τεθεί η τιµή της αντίστοιχης ιδιότητας. Επιστρέφει 0 για επιτυχία, -1 για αποτυχία. είτε το man page για λεπτοµέρειες.

39 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) Επιλογές υποδοχών getsockopt(2)/setsockopt(2) Κυριότερες επιλογές επιπέδου υλοποίησης sockets: SO_BROADCAST: αποστολή µηνυµάτων προς όλους τους κόµβους του τοπικού δικτύου. Ορίζεται µόνο για UDP sockets και µόνο αν το υποστηρίζει το εκάστοτε δίκτυο. SO_DEBUG: καταγράφει πληροφορίες για όλα τα πακέτα που στέλνονται ή λαµβάνονται από το socket. Ορίζεται µόνο για TCP sockets. SO_ERROR: ανάκτηση λαθών στην επικοινωνία του socket. SO_KEEPALIVE: διατήρηση σύνδεσης µέσω της περιοδικής ανταλλαγής πακέτων ειδικού τύπου. Ορίζεται µόνο για TCP sockets. SO_LINGER: καθορίζει αν η close(2) ϑα επιστρέφει αµέσως ή αν και για πόσο ϑα περιµένει να σταλούν όλα τα δεδοµένα που ϐρίσκονται στους buffers του λειτουργικού συστήµατος και να ληφθεί τα FIN της άλλης πλευράς. SO_RCVBUF/SO_SNDBUF: καθορίζουν το µέγεθος του buffer προσωρινής αποθήκευσης εισερχόµενων/εξερχόµενων δεδοµένων. SO_RCVTIMEO/SO_SNDTIMEO: καθορίζουν χρονικά όρια για την ολοκλήρωση των κλήσεων συστήµατος για την λήψη/αποστολή δεδοµένων. SO_REUSEADDR: καθορίζει αν επιτρέπεται η επαναχρησιµοποίηση της διεύθυνσης και της ϑύρας του socket από άλλα sockets της ίδιας ή άλλης διεργασίας. Πρέπει να τεθεί πριν κληθεί η bind(2). SO_TYPE: επιτρέπει την ανάκτηση του τύπου του socket (π.χ. SOCK_STREAM ή SOCK_DGRAM.

40 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) Επιλογές υποδοχών getsockopt(2)/setsockopt(2) Οι επιλογές SO_RCVTIMEO και SO_SNDTIMEO προσφέρουν δυνατότητα για απευθείας Ε/Ε µε χρονικό περιορισµό. Χωρίς αυτές, ϑα πρέπει είτε να χρησιµοποιήσουµε µία εκ των select(2)/poll(2)/κτλ. ή το σήµα SIGALARM µέσω της κλήσης alarm(3). Κυριότερες επιλογές επιπέδου πρωτοκόλλου TCP: TCP_KEEPALIVE: καθορισµός του χρονικού ορίου πέραν του οποίου ϑα αρχίσουν να στέλνονται πακέτα ειδικού τύπου για την διατήρηση της σύνδεσης. Προϋποθέτει ότι έχει ενεργοποιηθεί και η επιλογή SO_KEEPALIVE. TCP_MAXRT: καθορίζει το χρονικό όριο πέραν του οποίου διακόπτεται η σύνδεση αν το TCP αναγκαστεί να ξαναµεταδώσει κάποια πακέτα. TCP_MAXSEG: καθορισµός του MSS της σύνδεσης. TCP_NODELAY: ενεργοποίηση/απενεργοποίηση του αλγορίθµου Nagle.

41 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) fcntl(2)/ioctl(2)

42 getsockopt(2)/setsockopt(2) fcntl(2)/ioctl(2) Επιλογές υποδοχών fcntl(2)/ioctl(2) int fcntl(int fd, int cmd,... /* arg */); int ioctl(int d, unsigned long request,... /* arg */); fd/d: ένας socket descriptor που αντιστοιχεί σε ένα ανοιχτό socket. cmd/request: καθορίζει την λειτουργία που ϑα εκτελεστεί. F_GETFL: ανακτά και επιστρέφει τις επιλογές (flags) του fd. F_SETFL: ϑέτει τις επιλογές του fd στην τιµή του arg. Κυριότερες τιµές των flags: O_NONBLOCK: ενεργοποίηση non-blocking Ε/Ε για τον descriptor fd. Με ioctl(2): FIONBIO. O_ASYNC: ενεργοποίηση ασύγχρονης Ε/Ε για τον descriptor fd µε ειδοποίηση ολοκλήρης µέσω του σήµατος SIGIO. Με ioctl(2): FIOASYNC. F_GETOWN/F_SETOWN: ανακτά/θέτει το αναγνωριστικό της διεργασίας στην οποία παραδίδονται σήµατα (SIGIO, SIGURG) που αφορούν την κατάσταση του fd. Με ioctl(2): SIOCGPGRP/SIOCSPGRP ή FIOGETOWN/FIOSETOWN. F_GETSIG/F_SETSIG: ανακτά/θέτει τον αριθµό σήµατος που ϑα παραδίδεται στην διεργασία ως αποτέλεσµα αλλαγών ετοιµότητας Ε/Ε του fd. Μόνο σε Linux. FIONREAD: Με ioctl(2), ανακτά το πλήθος των bytes στο buffer εισόδου του socket.

43 Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης Προχωρηµένες τεχνικές Ε/Ε

44 Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης Ε/Ε διασποράς/συγκέντρωσης

45 Προχωρηµένες τεχνικές Ε/Ε Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης Ε/Ε διασποράς/συγκέντρωσης (scatter-gather I/O) ssize_t readv(int d, const struct iovec *iov, int iovcnt); ssize_t writev(int d, const struct iovec *iov, int iovcnt); struct iovec { void* iov_base; size_t iov_len; }; Οι συναρτήσεις αυτές επιτρέπουν την Ε/Ε από/προς πολλαπλά σηµεία µνήµης παράλληλα. έχονται ως όρισµα έναν file descriptor d και έναν πίνακα iov, iovcnt στοιχείων (µέγιστο: IOV_MAX), από δοµές τύπου struct iovec. Κάθε δοµή struct iovec περιέχει έναν δείκτη iov_base σε µία ϑέση µνήµης µεγέθους iov_len. Η readv(2) διαβάζει δεδοµένα από τον d και τα αποθηκεύει στις ϑέσεις που υποδεικνύουν οι δείκτες iov_base. Η εγγραφή στις δοµές του πίνακα γίνεται εν σειρά: για να προχωρήσει στη δοµή στη ϑέση i του πίνακα, ϑα πρέπει πρώτα να έχουν συµπληρώθεί και οι i προηγούµενες δοµές. Αντίστοιχα η writev(2) γράφει δεδοµένα στον d τα οποία διαβάζει από τις ϑέσους που υποδεικνύουν οι δείτκες iov_base. Και πάλι η επεξεργασία τους γίνεται εν σειρά. Τιµή επιστροφής όπως και στις read(2)/write(2).

46 Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης sendmsg(2)/recvmsg(2)

47 Προχωρηµένες τεχνικές Ε/Ε Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης sendmsg(2)/recvmsg(2) ssize_t sendmsg(int s, const struct msghdr *msg, int flags); ssize_t recvmsg(int s, struct msghdr *msg, int flags); Οι γενικότερες των συναρτήσεων Ε/Ε που έχουµε δει ως τώρα. Κάθε κλήση στις υπόλοιπες ϑα µπορούσε να αντικατασταθεί από µια κλήση µιας εκ των παραπάνω δυο, µε κατάλληλα ορίσµατα. s: ο socket descriptor. msg: δείκτης σε δοµή τύπου msghdr. flags: επιλογές επικοινωνίας, όπως και στις send(2)/sendto(2) και recv(2)/recvfrom(2). Επιτρέπουν ταυτόχρονα µεταφορά κανονικών δεδοµένων, δεδοµένων σηµατοδοσίας και έλεγχο Ε/Ε.

48 Προχωρηµένες τεχνικές Ε/Ε sendmsg(2)/recvmsg(2) Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης struct msghdr { void* msg_name; // protocol address (struct sockaddr*) socklen_t msg_namelen; // size of msg_name struct iovec* msg_iov; // scatter/gather array int msg_iovlen; // #elements in msg_iov void* msg_control; // ancillary data (struct cmsghdr*) socklen_t msg_controllen; // size of msg_control }; int msg_flags; // MSG_EOR, MSG_TRUNC, // MSG_OOB, MSG_CTRUNC struct cmsghdr { socklen_t cmsg_len; // size of cmsghdr, including header int cmsg_level; // originating protocol int cmsg_type; // protocol-specific type /* followed by u_char cmsg_data[]; // ancillary data */ };

49 Προχωρηµένες τεχνικές Ε/Ε Ε/Ε διασποράς/συγκέντρωσης sendmsg(2)/recvmsg(2) εδοµένα εκτός ζώνης sendmsg(2) 1 ssize_t write(int d, const void* buf, size_t nbytes) { 2 struct msghdr msg; 3 struct iovec iov = {buf, nbytes}; 4 memset(&msg, 0, sizeof(msg)); 5 msg.msg_iov = &iov; 6 msg.msg_iovlen = 1; 7 return sendmsg(d, &msg, 0); 8 } 9 ssize_t writev(int d, const struct iovec * iov, int iovcnt) { 10 struct msghdr msg; 11 memset(&msg, 0, sizeof(msg)); 12 msg.msg_iov = iov; 13 msg.msg_iovlen = iovcnt; 14 return sendmsg(d, &msg, 0); 15 } 16 ssize_t send(int s, const void* buf, size_t len, int flags) { 17 struct msghdr msg; 18 struct iovec iov = { buf, len }; 19 memset(&msg, 0, sizeof(msg)); 20 msg.msg_iov = &iov; 21 msg.msg_iovlen = 1; 22 return sendmsg(s, &msg, flags); 23 } 24 ssize_t sendto(int s, const void* buf, size_t len, int flags, const struct sockaddr* to, socklen_t tolen) { 25 struct msghdr msg; 26 struct iovec iov = { buf, len }; 27 memset(&msg, 0, sizeof(msg)); 28 msg.msg_name = to; 29 msg.msg_namelen = tolen; 30 msg.msg_iov = &iov; 31 msg.msg_iovlen = 1; 32 return sendmsg(s, &msg, flags); 33 }

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

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

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

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

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

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

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Ταυτόχρονοι και Επαναληπτικοί Εξυπηρετητές Επαναληπτικός εξυπηρετητής: επεξεργάζεται μόνο μία αίτηση τη φορά. Ταυτόχρονος

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,

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

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Απρίλιος 2016 Περίγραμμα παρουσίασης 1 Εισαγωγή 2 Δικτυακά

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή

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

Ε-85: Ειδικά Θέµατα Λογισµικού

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

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

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει

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

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

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

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

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

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

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

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

Λειτουργικά Συστήματα (ΗΥ321)

Λειτουργικά Συστήματα (ΗΥ321) Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 2: Διεργασίες και Νήματα Διαδικαστικά 2 Γραφτήκατε στη λίστα; Σχηματίστε ομάδες (για το project)! Στο προηγούμενο επεισόδιο 3 Τι είναι λειτουργικό; Γενιές ΛΣ Βασικές

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

Υποδοχείς (Sockets) Προγραμματισμός II 1

Υποδοχείς (Sockets) Προγραμματισμός II 1 Υποδοχείς (Sockets) Προγραμματισμός II 1 lalis@inf.uth.gr Υποδοχείς Ειδικές δομές διαδιεργασιακής επικοινωνίας Προσπελάζονται μέσω περιγραφέων αρχείων μπορεί να χρησιμοποιηθούν οι read, write, close μπορεί

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

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη Deadline πρώτης ϕάσης : 13 Δεκεμβρίου 2016, 23:59 * Εμπνευσμένο και υλοποιημένο από το Μανώλη Σουρλίγκα :) Γενική περιγραϕή Στο οικοσύστημα του

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

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service) Socket *sopen(const int type, const int protocol, const char *host, const char *service) Στην περίπτωση ενός client, δημιουργεί μια νέα σύνδεση και κατασκευάζει μια δομή Socket που σχετίζεται με αυτή Σε

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

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

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

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

Νήµατα. Πολύ σηµαντικό

Νήµατα. Πολύ σηµαντικό Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα

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

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Εισαγωγικές Έννοιες σε Strings - Πίνακες από Strings - Συναρτήσεις

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

Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013

Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013 Γράψτε όλες τις απαντήσεις σας σε αυτό το φυλλάδιο Οδηγίες για Α: Διαβάστε προσεκτικά όλες τις επιλογές σηµειώστε µε Χ (το πολύ) µια από αυτές. Μην επιλέγετε «στην τύχη» οι λανθασµένες απαντήσεις βαθµολογούνται

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

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

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 «ροµολόγηση ιεργασιών (1/2)» ροµολόγηση σε συστήµατα µε έναν επεξεργαστή ροµολόγηση σε πολυεπεξεργαστικά συστήµατα ροµολόγηση σε κατανεµηµένα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Μάθηµα 1 Ο ρόλος του ΛΣ Υλικό Υπολογιστικό σύστηµα Λειτουργικό σύστηµα Λογισµικό Προγράµµατα εφαρµογής Στόχοι του ΛΣ Χρήστες ιευκόλυνση των χρηστών ιευκόλυνση

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

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

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

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που

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

Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση

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

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

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται

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

Συνεχής ροή πολυµέσων

Συνεχής ροή πολυµέσων Συνεχής ροή πολυµέσων Εισαγωγή ικτυακά πρωτόκολλα Πολυµέσα και δίκτυα Συνεχής ροή Ροή από εξυπηρετητές ιστοσελίδων Ροή από εξυπηρετητές µέσων Πρωτόκολλο RTSP Πρωτόκολλο RTP οµή πακέτων RTP Πρωτόκολλο RTCP

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

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1 Νήµατα ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων Κατανεµηµένα Συστήµατα 10-1 ιεργασίεςκαι νήµατα ιεργασία 1 Μνήµη ιεργασία 2 Μνήµη ιεργασία 3 Μνήµη Λειτουργικό Σύστηµα

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της

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

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

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

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

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

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

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

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

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

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

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

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

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

Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1

Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1 Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1 lalis@inf.uth.gr Ουρά μηνυμάτων Αποθήκη μηνυμάτων στην μνήμη του λειτουργικού Περιορισμένος αριθμός / όγκος μηνυμάτων Κάθε μήνυμα είναι

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα

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

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Για να διεκπεραιωθεί η μεταφορά των πακέτων από την πηγή στον προορισμό μεταξύ των κόμβων του επικοινωνιακού υποδικτύου απαιτείται η

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

Προγραµµατισµός ικτύων Ε-01

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 3η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...

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

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

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

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

Δομημένος Προγραμματισμός

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

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

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ιαδίκτυα & Ενδοδίκτυα Η/Υ ιαδίκτυα & Ενδοδίκτυα Η/Υ (Kεφ. 10) ΑΡΧΕΣ ΜΕΤΑΓΩΓΗΣ ΠΑΚΕΤΩΝ Τεχνική Μεταγωγής Μέγεθος Πακέτου Σύγκριση Μεταγωγής Κυκλώµατος και Μεταγωγής Πακέτου Εξωτερική και Εσωτερική Λειτουργία Βιβλίο Μαθήµατος: Επικοινωνίες

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

Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1

Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 lalis@inf.uth.gr Μπλοκάρισμα διεργασίας Μια διεργασία μπλοκάρει όταν καλεί λειτουργίες συστήματος που δεν μπορεί να ολοκληρωθούν

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

υναµικές οµές εδοµένων

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

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

HY-335a Project: microtcp 1, μία lightweight TCP βιβλιοθήκη

HY-335a Project: microtcp 1, μία lightweight TCP βιβλιοθήκη HY-335a Project: microtcp 1, μία lightweight TCP βιβλιοθήκη Deadline δεύτερης ϕάσης : 14 Ιανουαρίου 2017 1 Εμπνευσμένο και υλοποιημένο από το Μανώλη Σουρλίγκα Γενική περιγραϕή Στο οικοσύστημα του Internet

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Μάθημα: Λειτουργικά Συστήματα Συστήματα Αρχείων Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) Λειτουργικά Συστήματα 1 Αρχεία με Χαρτογράφηση

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

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

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

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

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

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

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

4 η ιάλεξη: Signals UDP Sockets

4 η ιάλεξη: Signals UDP Sockets Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε

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

Λειτουργικά συστήματα πραγματικού χρόνου

Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Λειτουργικά Συστήματα Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Λειτουργικά Συστήματα Πραγματικού Χρόνου Η χρήση του χρόνου Μ.Στεφανιδάκης Συστήματα πραγματικού χρόνου: ελεγκτής και ελεγχόμενο σύστημα real-time system

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

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

Προγραµµατισµός ικτύων Ε-01

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 6η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...

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

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

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

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

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός συστημάτων UNIX/POSIX Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

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

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ιαδίκτυα & Ενδοδίκτυα Η/Υ ιαδίκτυα & Ενδοδίκτυα Η/Υ ΠΡΩΤΟΚΟΛΛΑ ΙΑ ΙΚΤΥΩΣΗΣ (Kεφ. 15) IPV6 ΠΟΛΛΑΠΛΗ ΑΠΟΣΤΟΛΗ ΙΡ ΠΡΟΒΛΗΜΑΤΑ επί του κεφ. 15 Βιβλίο Μαθήµατος: Επικοινωνίες Υπολογιστών & εδοµένων, William Stallings, 6/e, 2000. ΕΥ -

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΗΜΙΟΥΡΓΙΑ ΔΙΕΡΓΑΣΙΑΣ WEB-SERVER ΜΕ ΝΗΜΑΤΑ (THREADS) ΣΕ LINUX ΚΑΛΟΠΗΤΑΣ ΚΩΝΣΤΑΝΤΙΝΟΣ - 4190 ΣΒΕΝΤΖΟΥΡΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ - 4086 ΔΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΞΑΝΘΗΣ

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

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

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

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

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

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

Διεργασίες και Νήματα (2/2)

Διεργασίες και Νήματα (2/2) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα

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

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

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

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Προπτυχιακό Πρόγραμμα Σπουδών Πληροφορική - ΠΛΗ 11-2005 - 06 ΕΠΑΝΑΛΗΠΤΙΚΗ ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ 8 ΙΟΥΛΙΟΥ 2006 ΜΕΡΟΣ Α'. ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΩΝ ΕΠΙΛΟΓΩΝ [ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 45 ] Σε κάθε ερώτηση απαντάτε επιλέγοντας

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή

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

Ατομική Διπλωματική Εργασία ΕΠΕΚΤΑΣΗ ΚΑΤΑΝΕΜΗΜΕΝΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ ΔΙΕΠΑΦΗΣ ΧΡΗΣΤΗ. Σωτήρης Σωτηρίου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Ατομική Διπλωματική Εργασία ΕΠΕΚΤΑΣΗ ΚΑΤΑΝΕΜΗΜΕΝΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ ΔΙΕΠΑΦΗΣ ΧΡΗΣΤΗ. Σωτήρης Σωτηρίου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Ατομική Διπλωματική Εργασία ΕΠΕΚΤΑΣΗ ΚΑΤΑΝΕΜΗΜΕΝΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ ΔΙΕΠΑΦΗΣ ΧΡΗΣΤΗ Σωτήρης Σωτηρίου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μάιος 2017 i ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο 2010-2011 Φροντιστήριο Ασκήσεις στο TCP

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο 2010-2011 Φροντιστήριο Ασκήσεις στο TCP ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο 2010-2011 Φροντιστήριο Ασκήσεις στο TCP Άσκηση 1 η : Καθυστερήσεις Θεωρείστε μία σύνδεση μεταξύ δύο κόμβων Χ και Υ. Το εύρος ζώνης του συνδέσμου είναι 10Gbits/sec

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

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

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

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη ( ιάλεξη 3) ιδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 Δικτυακός Προγραμματισμός Βασικές Έννοιες: IP addresses,

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

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

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

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου

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

Επιτεύγµατα των Λ.Σ.

Επιτεύγµατα των Λ.Σ. Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ Δίκτυα Μετάδοσης Δεδομένων Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές Γενικά Διδάσκουσα: Ελένη Αικατερίνη Λελίγκου Γραφείο ΖΑ202. Ε-mail:

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