Προγραµµατισµός ικτύων Ε-01
|
|
- Τασούλα Θεοδοσίου
- 6 χρόνια πριν
- Προβολές:
Transcript
1 Προγραµµατισµός ικτύων Ε-01 6η ιάλεξη ιδάσκων: Νίκος Ντάρµος [ Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων
2 Στο σηµερινό µάθηµα... Πολυεπεξεργασία ϐασισµένη σε γεγονότα (συνέχεια).
3 Βασική ιδέα: Ο εξυπηρετητής/πελάτης αποτελείται από µία διεργασία µε ένα νήµα εκτέλεσης. Ο ταυτοχρονισµός επιτυγχάνεται µε χρήση non-blocking Ε/Ε και αναµονή για «γεγονότα». Εστω ένα σύνολο από socket descriptors. Υπάρχουν δύο κύριες κατηγορίες µεθόδων παρακολούθησης γεγονότων στο σύνολο αυτό: «Level-triggered»: περιοδικά ελέγχουµε το σύνολο για αλλαγές/νέα γεγονότα. «Edge-triggered»: αναφέρουµε στον πυρήνα το σύνολο των socket descriptors και κατόπιν αυτός µας ειδοποιεί όταν γίνεται κάποια αλλαγή. Πολλές υλοποιήσεις: select(2) (POSIX.1). pselect(2) (POSIX.1). poll(2) (SVR4). SIGIO (Linux). epoll(4) (Linux). /dev/poll (Solaris). Event ports (Solaris). (2) (*BSD, Mac OS X). Grand Central Dispatch -- GCD (Mac OS X, FreeBSD).
4 select / pselect / poll Πολυπλεξία στην Ε/Ε select(2) int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); Περιµένει το πολύ timeout χρόνο (ή για πάντα αν NULL) για να γίνει κάποια αλλαγή στους πρώτους nfds file descriptors που ϐρίσκονται στα σύνολα readfds, writefds και exceptfds. nfds: ο µεγαλύτερος file descriptor στα σύνολα, συν 1. readfds: file descriptors από τους οποίους ϑα διαβάσουµε δεδοµένα ή στους οποίους ϑα δεχτούµε συνδέσεις. writefds: file descriptors στους οποίους ϑα γράψουµε δεδοµένα. exceptfds: file descriptors στους οποίους περιµένουµε «επείγοντα δεδοµένα» (OOB) ή γενικά ειδικές καταστάσεις. Οταν η select(2) επιστρέψει, στα σύνολα αυτά ϑα είναι «set» µόνο οι file descriptors που είναι έτοιµοι για Ε/Ε. Επιστρέφει το πλήθος των file descriptors που είναι έτοιµοι για επεξεργασία, 0 για τέλος χρόνου, -1 για σφάλµα. Για τη διαχείριση των συνόλων των file descriptors ορίζονται οι εξής µακροεντολές: FD_SET(fd, &fdset); FD_CLR(fd, &fdset); FD_ISSET(fd, &fdset); FD_ZERO(&fdset);
5 select / pselect / poll Πολυπλεξία στην Ε/Ε select: Παράδειγµα 1 int sd, cd, sel; 2 fd_set fds; 3 4 sd = socket(/*... */); 5 bind(sd, /*... */); 6 listen(sd, /*... */); 7 8 while (1) { 9 FD_ZERO(&fds); 10 FD_SET(sd, &fds); 11 sel = select(sd + 1, &fds, NULL, NULL, NULL); 12 if (sel <= 0) { /* do something */ } 13 if (sel > 0) { 14 if (FD_ISSET(sd, &fds)) { 15 cd = accept(sd, /*... */); 16 if (cd < 0) error(/*... */); 17 // Serve the request 18 close(cd); 19 } 20 } 21 }
6 select / pselect / poll Πολυπλεξία στην Ε/Ε Εστω το εξής σενάριο: 1 int num_events = 0; 2 void my_sigfunc(int s) { 3 num_events++; 4 signal(sigxxx, my_sigfunc); 5 } 6 int main() { 7 // Variable declarations/initialization etc. 8 signal(sigxxx, my_sigfunc); 9 while (1) { 10 for (; num_events > 0; num_events--) { 11 // Process signal events 12 } 13 sel = select(nfds, &rfds, &wfds, &efds, NULL); 14 // } 16 } Αν το SIGXXX έρθει όσο είµαστε στη select(2) τότε αυτή ϑα επιστρέψει µε errno = EINTR. Πρόβληµα: Τι γίνεται αν το SIGXXX έρθει µετά το for(...) αλλά πριν τη select(2); Απάντηση: signal masking pselect(2).
7 select / pselect / poll Πολυπλεξία στην Ε/Ε pselect(2) int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *ntimeout, const sigset_t *sigmask); Περιµένει το πολύ ntimeout χρόνο (ή για πάντα αν NULL) για να γίνει κάποια αλλαγή στους πρώτους nfds file descriptors που ϐρίσκονται στα σύνολα readfds, writefds και exceptfds. nfds, readfds, writefds, exceptfds και τιµή επιστροφής όπως και στη select(2). sigmask: σύνολο σηµάτων που ϑα είναι ενεργοποιηµένα κατά την εκτέλεση της κλήσης αυτής. Για τη διαχείριση των συνόλων των file descriptors ορίζονται οι ίδιες µακροεντολές όπως και στη select(2). Για τη διαχείριση του sigmask ορίζονται αντίστοιχες συναρτήσεις δείτε το sigsetops(3). Το struct timespec προσφέρει ακρίβεια νανοδευτερόλεπτου, ενώ το struct timeval της select(2) έχει «µόνο» µικροδευτερόλεπτου. Το struct timeval της select(2) πρέπει να αρχικοποιείται πριν από κάθε κλήση της, ενώ η pselect(2) δεν αλλάζει το struct timespec της.
8 select / pselect / poll Πολυπλεξία στην Ε/Ε pselect: Παράδειγµα 1 int num_events = 0; 2 void my_sigfunc(int s) { 3 num_events++; 4 signal(sigxxx, my_sigfunc); 5 } 6 int main() { 7 // Variable declarations/initialization etc. 8 sigset_t sigmask, orig_mask; 9 sigemptyset(&sigmask); 10 sigaddset(&sigmask, SIGXXX); 11 sigprocmask(sig_block, &sigmask, &orig_sigmask); 12 signal(sigxxx, my_sigfunc); 13 while (1) { 14 for (; num_events > 0; num_events--) { 15 // Process signal events 16 } 17 sel = pselect(nfds, &rfds, &wfds, &efds, NULL, &orig_sigmask); 18 // } 20 }
9 select / pselect / poll Πολυπλεξία στην Ε/Ε Πρόβληµα: Οι select(2) και pselect(2) µπορούν να παρακολουθήσουν ως το πολύ FD_SETSIZE file descriptors 1024 σε *BSD, Solaris, Linux. Πολύ µικρότερο από το µέγιστο πλήθος των file descriptors ανά διεργασία. Πρόβληµα: Ακόµα κι αν παρακολουθούµε µόνο ένα file descriptor στην select(2)/pselect(2), εσωτερικά η υλοποίηση ελέγχει nfds file descriptors! Απάντηση: poll(2).
10 select / pselect / poll Πολυπλεξία στην Ε/Ε poll(2) int poll(struct pollfd fds[], nfds_t nfds, int timeout); Αρχικά είχε οριστεί για το API των STREAMS κατόπιν ορίστηκε και υλοποιήθηκε και για αρχεία, sockets, FIFOs, pipes κτλ. Περιµένει το πολύ timeout milliseconds (για πάντα αν INFTIM (= -1) ή καθόλου αν 0) για να γίνει κάποια αλλαγή στους file descriptors που περιγράφονται στον, µεγέθους nfds, πίνακα fds. Επιστρέφει το πλήθος των FDs που είναι έτοιµοι για Ε/Ε, 0 για τέλος χρόνου, -1 για σφάλµα.
11 select / pselect / poll Πολυπλεξία στην Ε/Ε poll(2) Τα πεδία της δοµής pollfd είναι ως εξής: fd: ο file descriptor προς παρακολούθηση. Αν -1, αρχικοποίησε το πεδίο revents, και αγνόησε τη δοµή αυτή. events: Γεγονότα προς παρακολούθηση (bitmask). revents: Γεγονότα που συνέβησαν (bitmask). Καθορίζει τι είδους Ε/Ε µπορεί να γίνει. Πιθανοί τύποι γεγονότων: POLLIN: υπάρχουν δεδοµένα προς ανάγνωση. POLLRDNORM, POLLOUT/POLLWRNORM: µπορεί να γίνει λήψη ή αποστολή µη επειγόντων δεδοµένων. POLLRDBAND, POLLWRBAND: µπορεί να γίνει λήψη / αποστολή επειγόντων δεδοµένων. POLLPRI: υπάρχουν δεδοµένα υψηλής προτεραιότητας προς ανάγνωση. POLLERR: συνέβη κάποιο σφάλµα. POLLHUP: η σύνδεση/το αρχείο έκλεισε. POLLNVAL: άκυρος τύπος γεγονότος ή κλειστό αρχείο/σύνδεση. struct pollfd struct pollfd { int fd; short events; short revents; };
12 select / pselect / poll Πολυπλεξία στην Ε/Ε poll: Παράδειγµα 1 int sd, cd, nready; 2 struct pollfd clients[1]; 3 4 sd = socket(/*... */); 5 bind(sd, /*... */); 6 listen(sd, /*... */); 7 8 clients[0].fd = sd; 9 clients[0].events = POLLRDNORM; while (1) { 12 nready = poll(clients, 1, INFTIM); 13 if (nready <= 0) { /* do something */ } 14 if (nready > 0) { 15 if (clients[0].revents & POLLRDNORM) { 16 cd = accept(sd, /*... */); 17 if (cd < 0) error(/*... */); 18 // Serve the request 19 close(cd); 20 } 21 } 22 }
13 Οι select(2), pselect(2) και poll(2) υπάρχουν σχεδόν σε όλα τα συστήµατα που υλοποιούν το πρότυπο POSIX.1. Πρόβληµα: Η poll(2) δεν έχει τον περιορισµό του FD_SETSIZE των select(2) και pselect(2), ωστόσο γίνεται πολύ αργή για µεγάλο αριθµό από παρακολουθούµενους file descriptors. Απάντηση: Κάθε λειτουργικό υλοποιεί κάποιο API που παρέχει την λειτουργικότητα της poll(2), χωρίς το πρόβληµα της απόδοσης. Linux: SIGIO (πυρήνες 2.4.x), epoll(4) (πυρήνες 2.6.x). *BSD, Mac OS X: (2). FreeBSD, Mac OS X: Grand Central Dispatch. Solaris: /dev/poll (poll(7d)), Event ports.
14 SIGIO Η µέθοδος αυτή έγκειται στη χρήση «σηµάτων πραγµατικού χρόνου» και προσφέρει «edge-triggered» παρακολούθηση. ιαθέσιµη µόνο σε Linux, σε εκδόσεις πυρήνα 2.4.x και µεγαλύτερη. Αρχικά, «µπλοκάρουµε» το σήµα που ϑα χρησιµοποιήσουµε, καθώς και το SIGIO. Καθορίζουµε ότι ο πυρήνας ϑα µας αποστέλλει το σήµα αυτό κάθε ϕορά που Ε/Ε είναι δυνατή σε κάποιον file descriptor. Κατόπιν, έχουµε ένα εξωτερικό ϐρόγχο µε poll(2). Σε κάθε επανάληψη: Χειριζόµαστε ότι µας έχει επιστρέψει η poll(2). Εισερχόµαστε σε ένα δεύτερο ϐρόγχο στον οποίο καλούµε sigwaitinfo(2). Αν έρθει το σήµα που καθορίσαµε προηγουµένως, η κλήση µας επιστρέφει τις πληροφορίες που χρειαζόµαστε για την εξυπηρέτηση του γεγονότος. Αν έρθει SIGIO τότε υπήρξε υπερχείλιση της ουράς σηµάτων, οπότε αδειάζουµε την ουρά ϑέτοντας τον χειριστή του σήµατος σε SIG_IGN και ϐγαίνουµε στον εξωτερικό ϐρόγχο.
15 SIGIO: Παράδειγµα 1 int fds[xxx], flags, signum; 2 sigset_t sigset; 3 siginfo_t siginfo; 4 //... 5 sigemptyset(&sigset); 6 sigaddset(&sigset, SIGPOLL); 7 sigaddset(&sigset, SIGIO); 8 sigprocmask(sig_block, &sigset, NULL); 9 foreach(fd in fds) { 10 fcntl(fd, F_SETOWN, (int)getpid()); 11 fcntl(fd, F_SETSIG, SIGPOLL); 12 flags = fcntl(fd, F_GETFL); 13 fcntl(fd, F_SETFL, flags O_NONBLOCK O_ASYNC); 14 } 16 while (1) { 17 nready = poll(/*... */); 18 /* process poll outcome */ 19 while (1) { 20 signum = sigwaitinfo(&sigset, &siginfo); 21 if (signum == SIGIO) { 22 signal(sigpoll, SIG_IGN); 23 signal(sigpoll, SIG_DFL); 24 // break; 26 } else if (signum == SIGPOLL) { 27 // siginfo.si_fd: event file descriptor 28 // siginfo.si_band: poll(2) events 29 } 30 } 31 }
16 epoll Πρόκειται για ένα API το οποίο επιτρέπει τη δηµιουργία και τον έλεγχο ενός συνόλου γεγονότων. Προσφέρει τόσο level-triggered όσο και edge-triggered παρακολούθηση. ιαθέσιµο µόνο σε Linux, έκδοση πυρήνα 2.6.x. Καθορίζονται 4 ϐασικές συναρτήσεις: epoll_create(2), epoll_ctl(2), epoll_wait(2) και epoll_pwait(2). #include <sys/epoll.h> int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigmask);
17 epoll_create(2) int epoll_create(int size); ηµιουργεί ένα σύνολο τουλάχιστον size γεγονότων. Επιστρέφει έναν «file descriptor» που αναφέρεται στο σύνολο αυτό και τον οποίο πρέπει στο τέλος να αποδεσµεύσουµε µε close(2), -1 για σφάλµα.
18 epoll_ctl(2) int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); epfd: Ο file descriptor που αντιστοιχεί στο σύνολο γεγονότων. op: Η πράξη που ϑα γίνει στο παραπάνω σύνολο. EPOLL_CTL_ADD: Πρόσθεσε το fd στο σύνολο epfd και αντιστοίχισε το γεγονός event µε αυτό. EPOLL_CTL_MOD: Αντιστοίχισε το γεγονός event µε το fd στο σύνολο epfd. EPOLL_CTL_DEL: Αφαίρεσε το fd από το σύνολο epfd (το event αγνοείται). event: Περιγράφει το σύνολο γεγονότων που ϑα παρακολουθούνται στο fd. Επιστρέφει 0 για επιτυχία, -1 για σφάλµα. struct epoll_event { uint32_t events; epoll_data_t data; }; typedef union epoll_data { void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t;
19 epoll_ctl(2) Το πεδίο events της δοµής struct epoll_event είναι ένα bitmask, όπως και στην περίπτωση της poll(2). υνατές τιµές: EPOLLIN: υπάρχουν δεδοµένα προς ανάγνωση. EPOLLOUT: µπορεί να γίνει αποστολή δεδοµένων. EPOLLRDHUP: η σύνδεση έκλεισε (το άλλο άκρο κάλεσε close(2) ή shutdown(2) για αποστολή). EPOLLPRI: υπάρχουν δεδοµένα προτεραιότητας προς ανάγνωση. EPOLLERR: συνέβη κάποιο σφάλµα. Η epoll_wait(2) πάντα περιµένει για τέτοιου είδους γεγονότα κι έτσι δε χρειάζεται να το προσθέτουµε. EPOLLHUP: η σύνδεση/το αρχείο έκλεισε. Η epoll_wait(2) πάντα περιµένει για τέτοιου είδους γεγονότα κι έτσι δε χρειάζεται να το προσθέτουµε. EPOLLET: ϑέτει τον αντίστοιχο file descriptor σε κατάσταση «edge triggered» παρακολούθησης. EPOLLONESHOT: απενεργοποιεί την παρακολούθηση µετά το πρώτο γεγονός. Μπορούµε να την ενεργοποιήσουµε εκ νέου µε χρήση της epoll_ctl(2) µε EPOLL_CTL_MOD.
20 epoll_wait(2) / epoll_pwait(2) int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigmask); Περιµένει το πολύ timeout milliseconds (για πάντα αν -1, καθόλου αν 0) να συµβεί κάποιο γεγονός στο σύνολο που καθορίζει το epfd. events: Πίνακας από maxevents δοµές struct epoll_event που αντιστοιχούν στα γεγονότα που συνέβησαν µετά την τελευταία κλήση της epoll_wait(2)/epoll_pwait(2). sigmask: Χρησιµοποιείται όπως και στην pselect(2). Επιστρέφει το πλήθος των γεγονότων (file descriptors που είναι διαθέσιµοι για Ε/Ε), 0 για τέλος χρόνου, -1 για σφάλµα.
21 epoll: Παράδειγµα 1 int sd, cd, nready, epfd, i, flags; 2 struct epoll_event ev, events[100]; 3 4 sd = socket(/*... */); 5 bind(sd, /*... */); 6 listen(sd, /*... */); 7 8 epfd = epoll_create(50); 9 ev.events = EPOLLIN; 10 ev.data.fd = sd; 11 epoll_ctl(epfd, EPOLL_CTL_ADD, sd, &ev); while (1) { 14 nready = epoll_wait(epfd, events, 100, -1); 15 if (nready <= 0) { /* do something */ } 16 for (i = 0; i < nready; i++) { 17 if (events[i].data.fd == sd) { 18 cd = accept(sd, /*... */); 19 flags = fcntl(cd, F_GETFL); 20 fcntl(cd, F_SETFL, flags O_NONBLOCK); 22 ev.data.fd = cd; 23 ev.events = EPOLLIN; 24 epoll_ctl(epfd, EPOLL_CTL_ADD, cd, &ev); 25 } else if (events[i].events & EPOLLIN) { 26 cd = events[i].data.fd; 27 ev.data.fd = cd; 28 ev.events = EPOLLOUT; 29 epoll_ctl(epfd, EPOLL_CTL_MOD, cd, &ev); 30 recv(cd, /*... */); 31 } else if (event[i].events & EPOLLOUT) { 32 cd = events[i].data.fd; 33 send(cd, /*... */); 34 ev.data.fd = cd; 35 epoll_ctl(epfd, EPOLL_CTL_DEL, cd, &ev); 36 close(cd); 37 } 38 } 39 } close(epfd);
22 /dev/poll Πρόκειται για ένα API το οποίο χρησιµοποιεί µία ιδεατή συσκευή (/dev/poll) και επιτρέπει το γρήγορο έλεγχο ετοιµότητας πολλαπλών file descriptors. ιαθέσιµο µόνο σε SunOS/Solaris. Για να το χρησιµοποιήσουµε: Χρησιµοποιούµε κι εδώ έναν πίνακα από δοµές struct pollfd όπως και στην poll(2). Ορίζεται επιπλέον το «ειδικό» γεγονός POLLREMOVE µε το οποίο αφαιρούµε file descriptors από το σύνολο των παρακολουθούµενων. Αρχικά ανοίγουµε (open(2)) το αρχείο /dev/poll. Για να παρακολουθήσουµε το σύνολο των file descriptors για τα γεγονότα που περιγράφονται από τον παραπάνω πίνακα, γράφουµε τον πίνακα αυτό στο παραπάνω αρχείο. Το πεδίο revents δεν χρησιµοποιείται. Κατόπιν ελέγχουµε για γεγονότα µε κλήσεις της συνάρτησης ioctl(2) στο αρχείο αυτό. #include <sys/devpoll.h> int fd = open("/dev/poll", O_RDWR); ssize_t n = write(int fd, struct pollfd buf[], int bufsize); int n = ioctl(int fd, DP_POLL, struct dvpoll* arg); int n = ioctl(int fd, DP_ISPOLLED, struct pollfd* pfd);
23 /dev/poll Ο πίνακας δοµών που γράφουµε στο /dev/poll καθορίζει ποια γεγονότα µας ενδιαφέρουν και ποιους file descriptors παρακολουθούµε. Η δοµή struct dvpoll καθορίζει πόσο χρόνο ϑα περιµένει η κλήση στην ioctl(2) (dp_timeout) και περιέχει τα αποτελέσµατα της «poll(7d)». Κλήση της ioctl(2) µε όρισµα DP_POLL ελέγχει για τα γεγονότα. Κλήση της ioctl(2) µε όρισµα DP_ISPOLLED ελέγχει αν κάποιος συγκεκριµένος file descriptor ανήκει στο σύνολο των παρακολουθούµενων. struct dvpoll struct dvpoll { struct pollfd* dp_fds; int dp_nfds; int dp_timeout; };
24 /dev/poll: Παράδειγµα 1 int sd, cd, pfd, res, npfds, i; 2 struct pollfd pfds[2]; 3 4 sd = socket(/*... */); 5 bind(sd, /*... */); 6 listen(sd, /*... */); 7 8 pfd = open("/dev/poll", O_RDWR); 9 pfds[0].fd = sd; 10 pfds[0].events = POLLIN; 11 pfds[0].revents = 0; 12 npfds = 1; 13 write(pfd, &pfds[0], npfds * sizeof(struct pollfd)); while (1) { 16 dp.dp_timeout = -1; 17 dp.dp_nfds = npfds; 18 dp.dp_fds = pfds; 19 res = ioctl(pfd, DP_POLL, &dp); 20 if (res < 0) { /* error */ } 21 for (i = 0; i < res; i ++) { 22 if (dp.dp_fds[i].fd == sd) { 23 cd = accept(sd, NULL, 0); 24 flags = fcntl(cd, F_GETFL); 25 fcntl(cd, F_SETFL, flags O_NONBLOCK); 27 pfds[1].fd = cd; 28 pfds[1].events = POLLIN; 29 pfds[1].revents = 0; 30 npfds++; 31 write(pfd, pfds, npfds * sizeof( struct pollfd)); 32 } else if (dp.dp_fds[i].revents & POLLIN) { 33 cd = dp.dp_fds[i].fd; 34 pfds[1].events = POLLOUT; 35 write(pfd, pfds, npfds * sizeof( struct pollfd)); 36 recv(cd, /*... */); 37 } else if (dp.dp_fds[i].revents & POLLOUT) { 38 cd = dp.dp_fds[i].fd; 39 send(cd, /*... */); 40 pfds[1].events = POLLREMOVE; 41 write(pfd, pfds, npfds * sizeof( struct pollfd)); 42 npfds--; 43 close(cd); 44 } 45 } 46 } close(pfd);
25 Event ports Πρόκειται για ένα API το οποίο προσφέρει γενικότερα παρακολούθηση γεγονότων (όχι µόνο έλεγχο ετοιµότητας για file descriptors). Υποστηρίζεται µόνο στο SunOS/Solaris, έκδοση 10 και µεγαλύτερη. Επιτρέπει την παρακολούθηση: Αρχείων, sockets, pipes, κτλ. Συναλλαγών ασύγχρονης Ε/Ε (asynchronous I/O (AIO) transactions). Timers. Γενικών γεγονότων που καθορίζονται από τον χρήστη. Για περισσότερες πληροφορίες:
26 Πρόκειται επίσης για API το οποίο προσφέρει παρακολούθηση γεγονότων και πέρα από απλή ετοιµότητα για file descriptors. Υποστηρίζεται από όλα τα BSDs (FreeBSD, NetBSD, OpenBSD, DragonflyBSD, Mac OS X). Επιτρέπει την παρακολούθηση: Αρχείων, sockets, pipes και οτιδήποτε µπορούµε να χειριστούµε µε file descriptors. Συναλλαγών ασύγχρονης Ε/Ε (asynchronous I/O (AIO) transactions). Παράδοσης σηµάτων. Γεγονότων διεργασιών (δηµιουργία νέας διεργασίας, τερµατισµός διεργασίας, κτλ.) Κατάστασης συστήµατος αρχείων. Καθορίζει 2 ϐασικές συναρτήσεις και µια µακροεντολή: (2), kevent(2), EV_SET. int (void); int kevent(int kq, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec * timeout); EV_SET(&kev, ident, filter, flags, fflags, data, udata);
27 (2) int (void); ηµιουργεί µία νέα «ουρά γεγονότων» στον πυρήνα Επιστρέφει τον χειριστή της ουράς, -1 για σφάλµα. Οι ουρές αυτές δεν κληρονοµούνται σε διεργασίες παιδιά, εκτός και χρησιµοποιηθεί η κλήση συστήµατος rfork(2) µε κατάλληλα ορίσµατα (RFFDG).
28 kevent(2) int kevent(int kq, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec * timeout); Χρησιµοποιείται τόσο για να προσθέσει γεγονότα προς παρακολούθηση στην ουρά γεγονότων, όσο και για να ελέγξει για καινούρια συµβάντα. Αρχικά εφαρµόζει τις αλλαγές που περιγράφει ο µεγέθους nchanges πίνακας changelist. Κατόπιν εξετάζει για νέα συµβάντα και τα επιστρέφει στον µεγέθους nevents πίνακα eventlist. Αν το nevents είναι µηδενικό, επιστρέφει αµέσως ακόµα κι αν υπάρχει ορισµένο timeout. Περιµένει το πολύ timeout χρόνο για νέα συµβάντα. Αν το timeout είναι NULL, περιµένει για πάντα. Αν δείχνει σε µηδενικό struct timespec επιστρέφει αµέσως. Τα changelist και eventlist µπορεί να δείχνουν στον ίδιο πίνακα. Αν συµβούν πολλαπλά γεγονότα για το ίδιο «ϕίλτρο», επιστρέφονται σε µία δοµή struct kevent και όχι σε πολλές.
29 EV_SET EV_SET(&kev, ident, filter, flags, fflags, data, udata); Χρησιµοποιείται για να αρχικοποιήσει µία δοµή struct kevent. Απλά αναθέτει τα ορίσµατά της στα πεδία της δοµής. struct kevent struct kevent { uintptr_t ident; short filter; u_short flags; u_int fflags; intptr_t data; void* udata; };
30 οµή struct kevent ident: ταυτοποιεί το γεγονός. Εξαρτάται από τον τύπο του γεγονότος. Για ετοιµότητα Ε/Ε το ϑέτουµε στην τιµή του αντίστοιχου file descriptor. filter: καθορίζει τον έλεγχο που ϑα γίνεται για το γεγονός αυτό. υνατές τιµές: EVFILT_READ: έλεγχος για ύπαρξη δεδοµένων προς ανάγνωση από κάποιον file descriptor. EVFILT_WRITE: έλεγχος για δυνατότητα εγγραφής σε κάποιον file descriptor. EVFILT_SIGNAL: έλεγχος για παράδοση σηµάτων στη διεργασία. EVFILT_AIO, EVFILT_VNODE, EVFILT_PROC, EVFILT_TIMER, EVFILT_NETDEV. udata: δεδοµένα που καθορίζει ο χρήστης και παραµένουν ανέπαφα από τον πυρήνα. Παράδειγµα: δείκτης σε συνάρτηση που ϑα κληθεί όταν συµβεί το αντίστοιχο γεγονός. struct kevent struct kevent { uintptr_t ident; short filter; u_short flags; u_int fflags; intptr_t data; void* udata; };
31 οµή struct kevent flags: καθορίζει τις πράξεις που ϑα κάνει η συγκεκριµένη κλήση. EV_ADD: προσθέτει/ανανεώνει µία δοµή στην ουρά και την ενεργοποιεί αυτόµατα, εκτός κι αν οριστεί επίσης η τιµή EV_DISABLE. EV_ENABLE: ενεργοποιεί την παρακολούθηση ενός γεγονότος. EV_DISABLE: απενεργοποιεί την παρακολούθηση ενός γεγονότος. EV_ONESHOT: επέστρεψε το πρώτο σχετικό γεγονός από την ουρά και αφαίρεσε την αντίστοιχη δοµή από την προς παρακολούθηση ουρά. EV_CLEAR: επαναρχικοποίησε κάποιο γεγονός µετά την παράδοσή του στον χρήστη. EV_EOF: χρησιµοποιείται από κάποια «ϕίλτρα» για να υποδείξει αντίστοιχη κατάσταση EOF. EV_ERROR: σφάλµα. fflags, data: χρησιµοποιούνται για να δίνονται ορίσµατα στις συναρτήσεις των ϕίλτρων, ανάλογα την περίπτωση. Παράδειγµα: αν εξετάζουµε κάποιο socket µε ϕίλτρο EVFILT_READ και η κατεύθυνση ανάγνωσης έχει κλείσει (shutdown(2)), επιστρέφεται ο αντίστοιχος κωδικός λάθους στο fflags. Αν πρόκειται για listen socket, επιστρέφεται το πλήθος των πελατών σε αναµονή στο πεδίο data. Αν πρόκειται για κανονικό socket, επιστρέφεται το µέγεθος των διαθέσιµων δεδοµένων. struct kevent struct kevent { uintptr_t ident; short filter; u_short flags; u_int fflags; intptr_t data; void* udata; };
32 : Παράδειγµα 1 int sd, cd, kq, nevents, nch, i, nkv = 100 ; 2 struct kevent kv[100]; 3 4 sd = socket(/*... */); 5 bind(sd, /*... */); 6 listen(sd, /*... */); 7 8 kq = (); 9 10 memset(&kv, 0, nkv * sizeof(struct kevent)); 11 kv[0].ident = sd; 12 kv[0].filter = EVFILT_READ; 13 kv[0].flags = EV_ADD; 14 nch = 1; while (1) { 17 nevents = kevent(kq, kv, nch, kv, nkv, NULL); 18 nch = 0; 19 if (nevents <= 0) { /* Do something */ } 20 for (i = 0; i < nevents; i++) { 21 if (kv[i].flags & EV_EOF) { 22 close(kv[i].ident); 23 } else if (kv[i].ident == sd) { 24 cd = accept(kv[i].ident, /*... */); 26 kv[nch].ident = cd; 27 kv[nch].filter = EVFILT_READ; 28 kv[nch].flags = EV_ADD; 29 nch++; 30 } else if (kv[i].filter == EVFILT_READ) { 31 read(kv[i].ident, /*... */); 32 kv[nch].ident = cd; 33 kv[nch].filter = EVFILT_READ; 34 kv[nch].flags = EV_DELETE; 35 nch++; 36 kv[nch].ident = cd; 37 kv[nch].filter = EVFILT_WRITE; 38 kv[nch].flags = EV_ADD; 39 nch++; 40 } else if (kv[i].filter == EVFILT_WRITE) { 41 write(kv[i].ident, /*... */); 42 kv[nch].ident = cd; 43 kv[nch].filter = EVFILT_WRITE; 44 kv[nch].flags = EV_DELETE; 45 nch++; 46 close(kv[i].ident); 47 } else } /* error */ 50 }
33 Πρόκειται για ένα API το οποίο επιτρέπει την παραλληλοποίηση πολλών εργασιών, συµπεριλαµβανοµένης της διαχείρισης των νηµάτων µίας διεργασίας. Υποστηρίζεται µόνο στο Mac OS X, έκδοση 10.6 και µεγαλύτερη, και στο FreeBSD, έκδοση 8.1-RELEASE και µεγαλύτερη. Απαιτεί υποστήριξη και από τον compiler. Επιτρέπει την παρακολούθηση: Αρχείων, sockets, pipes, κτλ. Συναλλαγών ασύγχρονης Ε/Ε (asynchronous I/O (AIO) transactions). Timers. Γενικών γεγονότων που καθορίζονται από τον χρήστη. Επιπλέον, επιτρέπει τον ορισµό blocks: τµήµατα κώδικα που µπορούν να τρέξουν παράλληλα. Το GCD καθορίζει τότε πόσα και ποια νήµατα ϑα εκτελούνται κάθε ϕορά, ούτως ώστε η χρήση των πυρήνων του συστήµατος να είναι η ϐέλτιστη. Για περισσότερες πληροφορίες: Reference/GCD_libdispatch_Ref/
34 Στο επόµενο µάθηµα... Βασικές και προχωρηµένες αρχιτεκτονικές εξυπηρετητών. Σχεδίαση αποδοτικών εξυπηρετητών. Επιλογές υποδοχών. Προχωρηµένες τεχνικές Ε/Ε.
Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1
Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 lalis@inf.uth.gr Μπλοκάρισμα διεργασίας Μια διεργασία μπλοκάρει όταν καλεί λειτουργίες συστήματος που δεν μπορεί να ολοκληρωθούν
Διαβάστε περισσότερα2η Προγραµµατιστική Εργασία
Προγραµµατισµός ικτύων (Ε-01) 2η Προγραµµατιστική Εργασία Επέκταση ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση παράλληλου εξυπηρετητή πρωτοκόλλου µεταφοράς αρχείων ιδάσκων
Διαβάστε περισσότεραΤµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013
Γράψτε όλες τις απαντήσεις σας σε αυτό το φυλλάδιο Οδηγίες για Α: Διαβάστε προσεκτικά όλες τις επιλογές σηµειώστε µε Χ (το πολύ) µια από αυτές. Μην επιλέγετε «στην τύχη» οι λανθασµένες απαντήσεις βαθµολογούνται
Διαβάστε περισσότεραΠρογραµµατισµός ικτύων Ε-01
Προγραµµατισµός ικτύων Ε-01 7η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...
Διαβάστε περισσότεραΖητήματα Σχεδίασης Λογισμικού Εξυπηρετητή
Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Ταυτόχρονοι και Επαναληπτικοί Εξυπηρετητές Επαναληπτικός εξυπηρετητής: επεξεργάζεται μόνο μία αίτηση τη φορά. Ταυτόχρονος
Διαβάστε περισσότεραΝτίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4
Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,
Διαβάστε περισσότεραΔίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals
Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,
Διαβάστε περισσότεραΔιαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότεραΠρογραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)
Προγραμματισμός συστημάτων UNIX/POSIX Σήματα (signals) Σήματα (signals) Τα σήματα είναι «διακοπές» λογισμικού (software interrupts) οι οποίες διακόπτουν την κανονική λειτουργία μίας διεργασίας. Προκαλούνται
Διαβάστε περισσότεραΕγχειρίδιο Συναρτήσεων. 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 που σχετίζεται με αυτή Σε
Διαβάστε περισσότεραοµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.
οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Παράδειγµα Πρόβληµα: Να γράψετε
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 14 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΒαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά
Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο
Διαβάστε περισσότεραΕ-85: Ειδικά Θέµατα Λογισµικού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων
Διαβάστε περισσότεραΧειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:
Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραCE121 Προγραµµατισµός ΙΙ. Χρόνος εκτέλεσης. Βάνα Ντουφεξή
CE121 Προγραµµατισµός ΙΙ Χρόνος εκτέλεσης 1 Χρόνος! Wall clock time "πραγµατικός" χρόνος εκτέλεσης! User CPU time Χρόνος εκτέλεσης εντολών της εφαρµογής πχ. άθροιση των στοιχείων ενός πίνακα! System CPU
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό (με. τη C)
Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)
Προγραμματισμός συστημάτων UNIX/POSIX Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes) Επικοινωνία μεταξύ διεργασιών γονέα-παιδιού Κατά κάποιο τρόπο, θα δημιουργήσουμε ένα τύπο
Διαβάστε περισσότεραΕπεξεργασία Αρχείων Κειµένου
Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά
Διαβάστε περισσότεραΑΣΚΗΣΗ 5 η Η σειριακή επικοινωνία ΙΙ 1.1 ΣΚΟΠΟΣ Σκοπός της άσκησης αυτής είναι η κατανόηση σε βάθος των λειτουργιών που παρέχονται από το περιβάλλον LabView για τον χειρισµό της σειριακής επικοινωνίας
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραυναµικές οµές εδοµένων
υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση
Διαβάστε περισσότεραΝήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1
Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες
Διαβάστε περισσότεραΘέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας
Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα
Διαβάστε περισσότεραΙδιοκτησία Αντικειµένου
Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΚεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)
Κεφάλαιο 9.1-9.2 Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) ( ιάλεξη 19) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1) Strings στη C Ένα string είναι µία ακολουθία αλφαριθµητικών χαρακτήρων, σηµείων στίξης κτλ. Π.χ.
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας
Διαβάστε περισσότεραΔιαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά
Διαβάστε περισσότεραΠρογραμματισμό για ΗΜΥ
ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω
Διαβάστε περισσότεραlab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή
ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Χρονομέτρηση
Προγραμματισμός συστημάτων UNIX/POSIX Χρονομέτρηση Χρονομέτρηση (Ι) Πρώτα από όλα, τι ακριβώς θέλουμε να μετρήσουμε; Μας ενδιαφέρει ο χρόνος που ο επεξεργαστής αφιέρωσε σε ένα πρόγραμμα ή σε ένα συγκεκριμένο
Διαβάστε περισσότεραΝήµατα. Πολύ σηµαντικό
Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΗΜΙΟΥΡΓΙΑ ΔΙΕΡΓΑΣΙΑΣ WEB-SERVER ΜΕ ΝΗΜΑΤΑ (THREADS) ΣΕ LINUX ΚΑΛΟΠΗΤΑΣ ΚΩΝΣΤΑΝΤΙΝΟΣ - 4190 ΣΒΕΝΤΖΟΥΡΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ - 4086 ΔΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΞΑΝΘΗΣ
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότερα4 η ιάλεξη: Signals UDP Sockets
Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε
Διαβάστε περισσότεραΟρισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα
ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων
Διαβάστε περισσότεραΠρογραμματισμός με BSD Sockets σε περιβάλλον Linux
Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Απρίλιος 2016 Περίγραμμα παρουσίασης 1 Εισαγωγή 2 Δικτυακά
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη
Διαβάστε περισσότεραΕπανάληψη για τις Τελικές εξετάσεις
Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού
Διαβάστε περισσότεραΚατηγορίες Νηµάτων. Νήµατα Επιπέδου Πυρήνα. Νήµατα Επιπέδου Χρήστη. «Νήµατα Επιπέδου Χρήστη» Ε-85: Ειδικά Θέµατα Λογισµικού
Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Νήµατα Επιπέδου Χρήστη» Κατηγορίες Νηµάτων Υπάρχουν δύο κατηγορίες νηµάτων Νήµατα επιπέδου πυρήνα (kernel
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση
Διαβάστε περισσότεραιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα
Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα
Διαβάστε περισσότεραΚλείδωμα αρχείων (file locking) Προγραμματισμός II 1
Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΗ Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 6η: Ερωτήσεις 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ Web Services
ΚΕΦΑΛΑΙΟ Web Services Προϋποθέσεις εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Κεφάλαιο έκδοση 4.51e build 458 ή νεότερο 2. Internet Information Server (IIS) version 6 ή νεότερος 3. Σε κάποιον υπολογιστή
Διαβάστε περισσότεραυναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή
υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότεραΜετάδοση εδοµένων και ίκτυα υπολογιστών ΙΙ Εργαστηριακή Άσκηση 3. Σύνδεση υπολογιστών στα Windows
Μετάδοση εδοµένων και ίκτυα υπολογιστών ΙΙ Εργαστηριακή Άσκηση 3 Σύνδεση υπολογιστών στα Windows Όπως γνωρίζουµε από προηγούµενες τάξεις, κάθε υπολογιστής PC διαθέτει τουλάχιστον µία παράλληλη θύρα και
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών
ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 1: Συγχώνευση Εγγραφών Δυαδικών Αρχείων Προθεσμία: 2 Μαΐου 2011, 5:00μμ
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2009 2010 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 Σε συνέχεια της πρώτης άσκησης, σκοπός της δεύτερης εργασίας είναι η
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα
ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα 3.1 Η εξέλιξη των λειτουργικών συστηµάτων 3.2 Αρχιτεκτονική λειτουργικών συστηµάτων 3.3 Συντονισµός των δραστηριοτήτων του υπολογιστή 3.4 Χειρισµός ανταγωνισµού µεταξύ
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 2 ο Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Αλγόριθµοι Ορισµός Παράδειγµα Ασυµπτωτική
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ FILE SYSTEM >_ ΔΙΚΑΙΩΜΑΤΑ >_ ΔΙΚΑΙΩΜΑΤΑ? >_ ΜΕΤΑΒΟΛΗ ΔΙΚΑΙΩΜΑΤΩΝ +- chmod
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος
Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 1 - Προθεσμία: 9 Δεκ. 2016 Σκοπός της εργασίας αυτής είναι η κατανόηση
Διαβάστε περισσότεραΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη
ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013
Διαβάστε περισσότερα(programming interfaceή/και application programming interface API).
Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 21: Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα - Βιβλιοθήκες Επαναχρησιµοποίηση κώδικα Μεγάλο «στοίχηµα» στην βιοµηχανία λογισµικού. Ιδανικά, δεν χρειάζεται να ξαναγράψουµε
Διαβάστε περισσότεραΥλοποίηση Σηματοφόρων
Υλοποίηση Σηματοφόρων 1 lalis@inf.uth.gr Υλοποίηση σε επίπεδο συστήματος Εσωτερική κατάσταση: Ένας ακέραιος για την αποθήκευση της τιμής του σηματοφόρου Μια ουρά αναμονής που τοποθετείται ένα νήμα όταν
Διαβάστε περισσότεραπου θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2013 Θέµα 1 (α') Η απάντηση είναι λάθος. Αν χρησιµοποιήσουµε την µακροεντολή, για παράδειγµα, στην έκφραση 24/CUBE(2) η έκφραση
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή
Διαβάστε περισσότεραυναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:
υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ταξινοµηµένες Λίστες µε δυναµική δέσµευση µνήµης Αναδροµκές συναρτήσεις ΕΠΛ 12 Αρχές Προγραµµατισµού ΙΙ 1 Λίστες
Διαβάστε περισσότεραΛειτουργικά Συστήματα (ΗΥ321)
Λειτουργικά Συστήματα (ΗΥ321) Διάλεξη 2: Διεργασίες και Νήματα Διαδικαστικά 2 Γραφτήκατε στη λίστα; Σχηματίστε ομάδες (για το project)! Στο προηγούμενο επεισόδιο 3 Τι είναι λειτουργικό; Γενιές ΛΣ Βασικές
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure
Διαβάστε περισσότεραH ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης
H ΓΛΩΣΣΑ C Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος A. Συναρτήσεις ροής εξόδου stdout 1. Γενικά 2. Η συνάρτηση putchar() 3. Οι συναρτήσεις putc() και fputc()
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011
Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include
Διαβάστε περισσότεραΕπιτεύγµατα των Λ.Σ.
Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος
Διαβάστε περισσότεραΕισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Διαβάστε περισσότεραΛειτουργικά Συστήματα (Λ/Σ)
Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ ΔΟΜΗ ΤΟΥ Η/Υ (PC compatibles) RAM CPU PCI Bridge PCI Bridges P2P Bridge RAM CPU PCI Bridge PCI2ISA Bridge Δομή της CPU Register file IP CPU TLB Level-1 cache RAM SP MMU
Διαβάστε περισσότεραΒιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών
Διαβάστε περισσότεραΕιδικό Τεύχος : Linux και Ηχος. Η Υποδοµή
Ειδικό Τεύχος : Linux και Ηχος Η Υποδοµή ηµήτρης Γλυνός glynos@storm.cs.unipi.gr Μάιος 2004 Linux και Ηχος, µια πονεµένη ιστορία Οδηγοί (drivers) για τις κάρτες ήχου παρέχονται παραδοσιακά από τους κατασκευαστές
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος
Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2018 2019 Καθηγητής Δ. Γουνόπουλος Άσκηση 1/2 - Προθεσμία: 18 Ιαν. 2019 Σκοπός της εργασίας αυτής είναι η κατανόηση
Διαβάστε περισσότεραΣύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.
Σύνοψη Προηγούµενου Κανονικές Γλώσσες () ιαδικαστικά του Μαθήµατος. Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Εισαγωγή: Υπολογισιµότητα και Πολυπλοκότητα. Βασικές
Διαβάστε περισσότερα(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
(Κεφάλαιο 2.7 και 12) Αρχεία στην C ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουµε δεδοµένα από ένα πρόγραµµα, πρέπει να χρησιµοποιήσουµε την ευτερεύουσα
Διαβάστε περισσότεραΔιεργασίες και Νήματα (2/2)
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (2/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Νήματα
Διαβάστε περισσότεραΑκολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)
Ακολουθιακές εντολές (Peter Ashenden, The Students Guide to VHDL) Εντολή If Τα βασικά χαρακτηριστικά της είναι τα εξής: Μπορεί να χρησιµοποιηθεί για τον έλεγχο µίας ή περισσοτέρων συνθηκών. Η πρώτη συνθήκη
Διαβάστε περισσότερα