Σήματα (Signals) Προγραμματισμός II 1
|
|
- Σωφρονία Παπάζογλου
- 5 χρόνια πριν
- Προβολές:
Transcript
1 Σήματα (Signals) Προγραμματισμός II 1 lalis@inf.uth.gr
2 Τι είναι ένα σήμα; Το σήμα είναι μια ειδοποίηση που στέλνεται στην διεργασία που εκτελεί ένα πρόγραμμα Μπορεί να προκύψει για διάφορους λόγους, π.χ. εξαίρεση αριθμητικής πράξης, τερματισμός διεργασίας παιδιού, αποστολή σήματος από άλλη διεργασία Τα σήματα έχουν μόνο έναν κωδικό/τύπο που φανερώνει τον λόγο για τον οποίο δημιουργήθηκαν Ένα σήμα δεν περιέχει (επιπλέον) πληροφορία είναι μήνυμα με τύπο αλλά χωρίς περιεχόμενο Για κάθε σήμα υπάρχει προκαθορισμένος αυτόματος χειρισμός από το λειτουργικό σύστημα Προγραμματισμός II 2 lalis@inf.uth.gr
3 Σήματα σφάλματος SIGFPE: εσφαλμένη αριθμητική λειτουργία (Ε) SIGILL: άκυρη εντολή (Ε) SIGSYS: άκυρη κλήση συστήματος (Ε) SIGBUS: άκυρη διεύθυνση σε επίπεδο υλικού (Ε) SIGSEGV: άκυρη αναφορά μνήμης (Ε) SIGPIPE: γράψιμο σε αγωγό χωρίς αναγνώστη (Τ) Αυτόματες/προεπιλεγμένες ενέργειες (αν δεν γίνει χειρισμός από το πρόγραμμα): Π: παράβλεψη Τ: τερματισμός Ε: Τ + άλλες ενέργειες, π.χ., δημιουργία core dump Α: αναστολή/σταμάτημα εκτέλεσης Σ: συνέχιση εκτέλεσης (μετά από αναστολή) Προγραμματισμός II 3 lalis@inf.uth.gr
4 Σήματα ελέγχου κατάστασης διεργασίας SIGCHLD: αλλαγή κατάστασης παιδιού (Π) SIGSTOP: αναστολή εκτέλεσης διεργασίας (Α) SIGCONT: συνέχιση εκτέλεσης διεργασίας (Σ) SIGΤSTP: αναστολή εκτέλεση από τερματικό (Α) SIGTTIN: ανάγνωση από το παρασκήνιο (Α) SIGTTOU: γράψιμο από το παρασκήνιο (Α) Αυτόματες/προεπιλεγμένες ενέργειες (αν δεν γίνει χειρισμός από το πρόγραμμα): Π: παράβλεψη Τ: τερματισμός Ε: Τ + άλλες ενέργειες, π.χ., δημιουργία core dump A: αναστολή εκτέλεσης Σ: συνέχιση εκτέλεσης (μετά από αναστολή) Προγραμματισμός II 4 lalis@inf.uth.gr
5 Σήματα διακοπής/τερματισμού κλπ SIGINT: διακοπή από το πληκτρολόγιο (Τ) SIGQUIT: εγκατάλειψη από το πληκτρολόγιο (Ε) SIGHUP: κλείσιμο γραμμής/τερματικού (Τ) SIGTERM: τερματισμός συνθετικά (Τ) SIGKILL: θανάτωση συνθετικά (Τ) SIGUSR1/2: σήματα εφαρμογής (Τ) Αυτόματες/προεπιλεγμένες ενέργειες (αν δεν γίνει χειρισμός από το πρόγραμμα): Π: παράβλεψη Τ: τερματισμός Ε: Τ + άλλες ενέργειες, π.χ., δημιουργία core dump A: αναστολή εκτέλεσης Σ: συνέχιση εκτέλεσης (μετά από αναστολή) Προγραμματισμός II 5 lalis@inf.uth.gr
6 Σύγχρονα και ασύγχρονα σήματα Σύγχρονα σήματα: προκύπτουν ως αποτέλεσμα μιας ενέργειας που επιχείρησε η ίδια η διεργασία (εκτέλεση εντολής ή κλήσης συστήματος) Π.χ., εξαίρεση αριθμητικής πράξης (SIGFPE), αναφορά σε άκυρη θέση μνήμης (SIGSEGV), άκυρη εντολή μηχανής (SIGILL) Ασύγχρονα σήματα: προκύπτουν χωρίς να τα έχει προκαλέσει η ίδια η διεργασία με άμεσο τρόπο Π.χ., διακοπή εκτέλεσης (SIGINT), τερματισμός ή αλλαγή κατάστασης διεργασίας παιδιού (SIGCHLD), αναστολή διεργασίας (SIGSTOP) Προγραμματισμός II 6 lalis@inf.uth.gr
7 Διακοπή ροής εκτέλεσης διεργασίας Τα σήματα διακόπτουν την κανονική ροή εκτέλεσης της διεργασίας Τα σύγχρονα σήματα διακόπτουν την εκτέλεση στο σημείο της εντολής / κλήσης συστήματος που προκάλεσε την δημιουργία του σήματος Τα ασύγχρονα σήματα μπορεί να διακόψουν την εκτέλεση ανά πάσα στιγμή δεν γνωρίζουμε πόσες φορές μια διεργασία θα λάβει ένα ασύγχρονο σήμα, ούτε το σημείο της εκτέλεσης όπου θα βρίσκεται όταν λάβει το σήμα Προγραμματισμός II 7 lalis@inf.uth.gr
8 χρόνος (α) (β) (γ) Προγραμματισμός II 8 lalis@inf.uth.gr
9 Κύκλος ζωής ενός σήματος Γέννηση: δημιουργία/αποστολή σήματος Μπλοκάρισμα: αναστολή παράδοσης/χειρισμού του σήματος Παράδοση/παραλαβή: χρονική στιγμή που γίνεται επεξεργασία του σήματος στο πλαίσιο της διεργασίας Χειρισμός: διαδικασία επεξεργασίας του σήματος Προγραμματισμός II 9 lalis@inf.uth.gr
10 Χειρισμός σήματος Το ΛΣ ορίζει αυτόματες προκαθορισμένες ενέργειες χειρισμού για κάθε τύπο σήματος παράβλεψη σήματος (π.χ., για SIGCHLD) αναστολή εκτέλεσης διεργασίας (π.χ., για SIGSTOP) συνέχεια εκτέλεσης διεργασίας (π.χ., για SIGCONT) τερματισμός διεργασίας (π.χ., για SIGΙΝΤ) Ένα πρόγραμμα μπορεί να «παγιδέψει» ένα σήμα, και να εισάγει δικές του ενέργειες χειρισμού αυτόματος προκαθορισμένος χειρισμός σήματος (SIG_DFL) αυτόματη παράβλεψη σήματος (SIG_IGN) ρητός χειρισμός σήματος από ρουτίνα εφαρμογής Προγραμματισμός II 10
11 signal issued signal pending signal delivery automated handling (OS) explicit handling (user) terminate process ignore signal signal handler Προγραμματισμός ΙΙ 11
12 /* X signal handler */ /* Y signal handler */ /* main */ signal X signal Y Προγραμματισμός ΙΙ 12 lalis@inf.uth.gr
13 Καθορισμός ενεργειών χειρισμού σήματος int sigaction(int signum, const struct sigaction *act, struct sigaction *oact); Καθορίζει ενέργειες χειρισμού για το σήμα signum Οι νέες ενέργειες προσδιορίζονται στην δομή act Οι παλιές ενέργειες χειρισμού αποθηκεύονται στην δομή oact (για μπορεί να γίνει επαναφορά της προηγούμενης κατάστασης) Μπορεί να καθοριστούν διαφορετικές ενέργειες για κάθε ξεχωριστό σήμα Οι ενέργειες για SIGKILL και SIGSTOP δεν αλλάζουν Προγραμματισμός II 13
14 Δομή ενεργειών χειρισμού σήματος struct sigaction { void (*sa_handler)(int); sigset_t sa_mask; int sa_flags; void (*sa_sigaction)(int,siginfo_t*,void *); ; Στο sa_handler ανατίθεται ο χειριστής σήματος (SIG_IGN ή SIG_DFL ή δείκτης σε συνάρτηση) το sa_sigaction είναι για σήματα πραγματικού χρόνου Το sa_mask καθορίζει τα σήματα που μπλοκάρονται όταν εκτελείται ο χειριστής σήματος (πλέον του σήματος που προκάλεσε τον χειρισμό του σήματος, και όσων άλλων σημάτων είναι ήδη μπλοκαρισμένα) Το sa_flags καθορίζει επιπλέον ιδιότητες π.χ. SA_RESTART για επανεκτέλεση κλήσεων συστήματος Προγραμματισμός II 14 lalis@inf.uth.gr
15 int main(int argc, char *argv[]) { struct sigaction act = {{0; act.sa_handler = SIG_IGN; // ignore signal sigaction(sigint,&act,null); while (1) { printf("going to sleep\n"); sleep(5); Προγραμματισμός ΙΙ 15 lalis@inf.uth.gr
16 static void handler(int sig) { write(stdout_fileno,"got SIGINT\n",11); int main(int argc, char *argv[]) { struct sigaction act = {{0; act.sa_handler = handler; sigaction(sigint,&act,null); while (1) { printf("going to sleep\n"); sleep(5); Προγραμματισμός ΙΙ 16 lalis@inf.uth.gr
17 Αναμονή παραλαβής/χειρισμού σήματος int sleep(int secs); Μπλοκάρει μέχρι να γίνει χειρισμός ενός σήματος ή μετά την πάροδο του χρονικού διαστήματος secs επιστρέφει 0 αν η διεργασία δεν διακόπηκε από σήμα διαφορετικά, το χρονικό διάστημα που απέμεινε int pause(); Μπλοκάρει μέχρι να γίνει χειρισμός ενός σήματος επιστρέφει -1 με την errno ίση με EINTR Οι pause και sleep επιστρέφουν μόνο για σήματα που χειρίζεται ρητά το πρόγραμμα Προγραμματισμός II 17 lalis@inf.uth.gr
18 static void handler(int sig) { write(stdout_fileno,"got SIGINT\n",11); int main(int argc, char *argv[]) { struct sigaction act = {{0; act.sa_handler = handler; sigaction(sigint,&act,null); while (1) { printf("going to pause\n"); pause(); Προγραμματισμός ΙΙ 18 lalis@inf.uth.gr
19 Διακοπή κλήσεων συστήματος H παράδοση και χειρισμός ενός ασύγχρονου σήματος μπορεί να διακόψει κάποιες κλήσεις συστήματος Συνήθως, αυτές που μπλοκάρουν την διεργασία Εφόσον γίνει ρητός χειρισμός του σήματος από το πρόγραμμα, η κλήση συστήματος που διακόπηκε αποτυγχάνει με την errno να έχει τιμή EINTR όπως ακριβώς και η pause Αν αυτό δεν είναι επιθυμητό, χρησιμοποιούμε την siginterrupt ή την επιλογή SA_RESTART Προγραμματισμός II 19 lalis@inf.uth.gr
20 static void handler(int sig) { write(stdout_fileno,"got SIGINT\n",11); int main(int argc, char *argv[]) { int n; char data[ν]; struct sigaction act = {{0; act.sa_handler = handler; act.sa_flags = SA_RESTART; sigaction(sigint,&act,null); while (1) { printf("reading from stdin\n"); n = read(stdin_fileno,data,ν-1); if (n > 0) { datas[n] = '\0'; printf("%s\n",data); else if (n < 0) { perror("read"); else { printf("end of input\n"); break; return(0); Προγραμματισμός ΙΙ 20 lalis@inf.uth.gr
21 Σχεδιασμός χειριστών σημάτων Ο χειριστής ενός ασύγχρονου σήματος μπορεί να εκτελεστεί ανά πάσα στιγμή, διακόπτοντας την κανονική ροή εκτέλεσης του προγράμματος Ένας χειριστής σήματος μπορεί να διακοπεί με παρόμοιο τρόπο, για να εκτελεστεί ένας άλλος χειριστής σήματος Υπάρχουν (σχετικά λίγες) συγκεκριμένες λειτουργίες που είναι ασφαλείς για (ασύγχρονα) σήματα μπορούν να χρησιμοποιηθούν μέσα σε χειριστές σημάτων Αν ένας χειριστής σήματος χρησιμοποιεί καθολικές μεταβλητές, τότε αυτές πρέπει να δηλώνονται ως volatile sig_atomic_t διαφορετικά μπορεί να προκύψουν προβλήματα ασυνέπειας Προγραμματισμός II 21
22 Μπλοκάρισμα σημάτων Η παράδοση και ο αντίστοιχος χειρισμός σημάτων μπορεί να είναι ανεπιθύμητα σε κάποιες περιπτώσεις Τα σήματα μπορεί να μπλοκαριστούν Μέσω της μάσκας μπλοκαρίσματος Τα μπλοκαρισμένα σήματα δεν παραδίδονται στην διεργασία για χειρισμό, αλλά παραμένουν σε εκκρεμότητα μέχρι να ξεμπλοκαριστούν Ο χειρισμός ενός σήματος που βρίσκεται σε εκκρεμότητα γίνεται όταν αυτό ξεμπλοκαριστεί Τα SIGKILL και SIGSTOP δεν μπλοκάρονται Προγραμματισμός II 22
23 Λειτουργίες συνόλων σημάτων sigset_t σύνολο σημάτων int sigemptyset(sigset_t *set) αρχικοποίηση κενού συνόλου int sigfillset(sigset_t *set) αρχικοποίηση γεμάτου συνόλου int sigaddset(sigset_t *set, int sig) προσθήκη σήματος στο σύνολο int sigdelset(sigset_t *set, int sig) αφαίρεση σήματος από το σύνολο int sigismember(const sigset_t *set,int sig) έλεγχος για το αν το σήμα ανήκει στο σύνολο Προγραμματισμός II 23
24 Καθορισμός μάσκας μπλοκαρίσματος int sigprocmask(int how, const sigset_t *set, sigset_t *oset); Η how προσδιορίζει τον τρόπο αλλαγής της μάσκας μπλοκαρίσματος, με βάση το σύνολο σημάτων set SIG_BLOCK: μπλοκάρισμα των σημάτων του set SIG_UNBLOCK: ξεμπλοκάρισμα των σημάτων του set SIG_SETMASK: αντικατάσταση της μάσκας με το set Στο oset αποθηκεύεται η παλιά τιμή της μάσκας μπλοκαρίσματος για να μπορεί να αποκατασταθεί Σε περίπτωση που ξεμπλοκαριστεί ένα σήμα που εκκρεμεί, τότε γίνεται και ο χειρισμός του σήματος Προγραμματισμός II 24
25 Εξέταση εκκρεμών σημάτων int sigpending(sigset_t *set); Αποθηκεύει στο set τα σήματα που έχουν σταλεί στην διεργασία και βρίσκονται σε εκκρεμότητα Επιστρέφεται πληροφορία για το αν ένα σήμα εκκρεμεί, όχι για το πόσες φορές αυτό έχει σταλεί Το λειτουργικό δεν καταγράφει το πόσες φορές έχει σταλεί ένα μπλοκαρισμένο σήμα, ούτε γίνεται επανειλημμένος χειρισμός του σήματος όταν αυτό ξεμπλοκαριστεί Προγραμματισμός II 25
26 static void handler(int sig) { write(stdout_fileno,"got SIGINT\n",11); int main(int argc, char *argv[]) { sigset_t s1,s2; struct sigaction act = {{0; act.sa_handler = handler; sigaction(sigint,&act,null); sigemptyset(&s1); sigaddset(&s1,sigint); while (1) { sigprocmask(sig_block,&s1,null); sleep(10); sigpending(&s2); if (sigismember(&s2,sigint)) { printf("sigint is pending\n"); sigprocmask(sig_unblock,&s1,null); sleep(10); Προγραμματισμός ΙΙ 26 lalis@inf.uth.gr
27 Μπλοκάρισμα και παράβλεψη σήματος Το μπλοκάρισμα ενός σήματος έχει νόημα μόνο αν το πρόγραμμα επιθυμεί «τελικά» να παραλάβει και να χειριστεί το σήμα (ξεμπλοκάροντας το) Αν η παραλαβή και ο χειρισμός ενός σήματος είναι γενικότερα ανεπιθύμητα, είναι συνήθως καλύτερο και απλούστερο το σήμα να παραβλεφθεί εντελώς Αυτό μπορεί να γίνει εγκαθιστώντας/καθορίζοντας τον ειδικό χειριστή σήματος SIG_IGN Προγραμματισμός II 27
28 Αλλαγή μάσκας και αναμονή σήματος int sigsuspend(const sigset_t *sigmask); Αντικαθιστά την μάσκα μπλοκαρίσματος με το σύνολο σημάτων sigmask και μπλοκάρει μέχρι να παραληφθεί ένα μη μπλοκαρισμένο σήμα για το οποίο υπάρχει ρητός χειρισμός από το πρόγραμμα Όταν παραληφθεί ένα σήμα, αφού γίνει χειρισμός του σήματος, αποκαθίσταται η παλιά μάσκα, και η κλήση επιστρέφει με -1 και errno ίση με EINTR Προγραμματισμός II 28
29 Αναμονή για εκκρεμή σήματα int sigwait(const sigset_t *set, int *signum); Μπλοκάρει μέχρι κάποιο από τα σήματα στο set βρεθεί σε εκκρεμότητα Το εκκρεμές σήμα γίνεται αποδεκτό και αποθηκεύεται στην signum Παρότι δεν γίνεται χειρισμός του σήματος, το σήμα που επιστρέφεται θεωρείται παραδομένο Αν υπάρχουν περισσότερα εκκρεμή σήματα, επιστρέφεται ένα από αυτά (απροσδιόριστη επιλογή) Η sigwait επιτρέπει τον ελεγχόμενο χειρισμό σημάτων μέσα από τον συμβατικό κώδικα, χωρίς την εγκατάσταση χειριστών σημάτων Προγραμματισμός II 29
30 Διακοπή χειριστή σήματος Και ο χειριστής σήματος του προγράμματος είναι κώδικας η εκτέλεση του οποίου μπορεί να διακοπεί από σήματα αν τύχει να προκύψουν κατά την εκτέλεση του χειριστή σήματος Αν δεν είναι επιθυμητό ο χειριστής σήματος να διακοπεί από τον χειρισμό ενός άλλου σήματος, το συγκεκριμένο σήμα πρέπει να μπλοκαριστεί κατά την εκτέλεση του χειριστή σήματος βλέπε sa_mask της δομής χειρισμού σήματος Κατά σύμβαση, το σήμα που προκάλεσε τον χειρισμό σήματος παραμένει μπλοκαρισμένο κατά την εκτέλεση του αντίστοιχου χειριστή σήματος και αυτό μπορεί να αλλάξει με κατάλληλα options Προγραμματισμός II 31
31 /* Y signal handler */ /* X signal handler */ signal Y /* main */ signal X Προγραμματισμός ΙΙ 32 lalis@inf.uth.gr
32 Σήματα και fork / exec Η διεργασία παιδί που δημιουργείται μέσω fork κληρονομεί τους χειρισμούς σημάτων του γονέα κληρονομεί την μάσκα μπλοκαρίσματος δεν κληρονομεί τα εκκρεμή σήματα του γονιού (αρχίζει την εκτέλεση της χωρίς εκκρεμή σήματα) Όταν μια διεργασία αλλάζει κώδικα μέσω exec για τα σήματα που η καθορισμένη ενέργεια είναι SIG_DFL ή SIG_IGN, αυτή παραμένει (το SIGCHLD μπορεί να γίνει SIG_DFL από SIG_IGN, ανάλογα με την υλοποίηση) τα σήματα με χειριστή γυρίζουν σε SIG_DFL γιατί; η μάσκα μπλοκαρίσματος παραμένει ως έχει τα εκκρεμή σήματα παραμένουν ως έχουν Προγραμματισμός II 33 lalis@inf.uth.gr
33 Παραγωγή/αποστολή σήματος int kill(pid_t pid, int signum); pid > 0: στέλνει το σήμα signum στην διεργασία με αναγνωριστικό pid pid == 0: στέλνει το σήμα signum στην ομάδα διεργασιών το αναγνωριστικό της οποίας είναι το ίδιο με το αναγνωριστικό ομάδας του αποστολέα pid <-1: στέλνει το σήμα signum στην ομάδα διεργασιών το αναγνωριστικό της οποίας είναι ίσο με την απόλυτη τιμή του pid pid == -1: στέλνει το σήμα signum σε όλες τις διεργασίες για τις οποίες έχει άδεια ο αποστολέας Προγραμματισμός II 34
34 Συγχρονισμός διεργασιών με σήματα Τα σήματα μπορεί να χρησιμοποιηθούν για να υλοποιηθεί συγχρονισμός μεταξύ διεργασιών Παράδειγμα: ασύμμετρο ραντεβού Η διεργασία P2 πρέπει να περιμένει προτού συνεχίσει την εκτέλεση της, μέχρι η διεργασία P1 να ολοκληρώσει μια διαδικασία (τα αποτελέσματα της οποίας πιθανώς επηρεάζουν την διεργασία P2) Υλοποίηση με σήματα: η P1 στέλνει σήμα στην P2, και η P2 περιμένει να λάβει το σήμα για να συνεχίσει την εκτέλεση της Προγραμματισμός II 35
35 P1 /*rendez-vous point; other party may proceed */ P2 /*rendez-vous point; wait for other party to arrive */ (Α) signal (Β) η P1 ειδοποιεί την P2 μέσω ενός σήματος όταν φτάσει στο σημείο Α η P2 πρέπει να περιμένει στο σημείο Β μέχρι να παραλάβει το συγκεκριμένο σήμα Προγραμματισμός ΙΙ 36
36 int main(int argc, char *argv[]) { pid_t pid; sigset_t s; int signum; sigemptyset(&s); sigaddset(&s,sigusr1); sigprocmask(sig_block,&s,null); if (!(pid=fork())) { sigwait(&s,&signum); // wait for SIGUSR1 printf("this should print second\n"); return(0); printf("this should print first\n"); kill(pid,sigusr1); return(0); Προγραμματισμός ΙΙ 42 lalis@inf.uth.gr
37 Περισσότερα για την waitpid Η waitpid μπορεί να χρησιμοποιηθεί και για την αναμονή για αλλαγή κατάστασης εκτέλεσης διεργασιών μέσα από αντίστοιχα options WUNTRACED/WCONTINUED: σταμάτημα/ξεκίνημα Αντίστοιχα, μπορεί να γίνει έλεγχος της κατάστασης που αποθηκεύεται στην διεύθυνση status WIFSTOPPED(): true αν η θυγατρική διεργασία ανέστειλε την εκτέλεση της (χωρίς να έχει πεθάνει) WSTOPSIG(): το σήμα που οδήγησε στην αναστολή της εκτέλεσης της θυγατρικής διεργασίας WIFCONTINUED(): true αν η θυγατρική διεργασία συνεχίζει την εκτέλεση της λόγω SIGCONT Προγραμματισμός II 43
38 int main(int argc, char *argv[]) { int pid,status,i; pid = fork(); if (pid == 0) { for (i=0; i<20; i++) { printf("going to sleep\n"); sleep(5); return(42); while (1) { waitpid(pid,&status,wuntraced WCONTINUED); if (WIFEXITED(status)) { printf("returned %d\n",wexitstatus(status)); break; else if (WIFSIGNALED(status)) { printf("terminated %d\n",wtermsig(status)); break; else if (WIFSTOPPED(status)) { printf("stopped %d\n",wstopsig(status)); else if (WIFCONTINUED(status)) { printf("continued\n"); return(0); Προγραμματισμός ΙΙ 44 lalis@inf.uth.gr
39 Ξυπνητήρια int setitimer(int which, const struct itimerval *nval, struct itimerval *oval); ITIMER_REAL: μετράει τον πραγματικό χρόνο, στην λήξη στέλνεται το σήμα SIGALRM ITIMER_VIRTUAL: μετράει τον χρόνο εκτέλεσης της διεργασίας, στην λήξη στέλνεται SIGVTALRM ITIMER_PROF: μετράει τον χρόνο εκτέλεσης της διεργασίας και τον χρόνο εκτέλεσης του συστήματος για λογαριασμό της διεργασίας, στην λήξη στέλνεται το σήμα SIGPROF Στο oval επιστρέφονται οι τρέχουσες ρυθμίσεις Προγραμματισμός II 45
40 Δομή χρονισμού ξυπνητηριού struct itimerval { struct timeval it_interval; /*nxt val*/ struct timeval it_value; /*cur val*/ ; struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ ; Το πεδίο it_value καθορίζει/επιστρέφει τον χρόνο που απομένει, και το πεδίο it_interval την τιμή επαναφοράς για τις επόμενες επαναλήψεις Προγραμματισμός II 46 lalis@inf.uth.gr
41 static void handler(int sig) { write(stdout_fileno,"got SIGALRM\n",12); int main(int argc, char *argv[]) { int n; char data[n]; struct sigaction act = { {0 ; struct itimerval t = { {0 ; act.sa_handler = handler; sigaction(sigalrm,&act,null); t.it_value.tv_sec = atoi(argv[1]); t.it_value.tv_usec = 0; t.it_interval.tv_sec = atoi(argv[2]); t.it_interval.tv_usec=0; setitimer(itimer_real,&t,null); while (1) { n = read(stdin_fileno,data,n-1); if (n > 0) { data[n] = '\0'; printf("read: %s\n",data); else if (n == 0) { printf("end of input\n"); break; else if (errno!= EINTR) { perror("read"); break; else { printf("interrupted, retrying\n"); return(0); Προγραμματισμός ΙΙ 47 lalis@inf.uth.gr
Σήματα (Signals) Προγραμματισμός II 1
Σήματα (Signals) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένα σήμα; Το σήμα είναι μια ειδοποίηση που στέλνεται στην διεργασία που εκτελεί ένα πρόγραμμα Μπορεί να προκύψει για διάφορους λόγους, π.χ.
Διαβάστε περισσότεραΣήματα (Signals) Προγραμματισμός II 1
Σήματα (Signals) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένα σήμα; Το σήμα είναι μια ειδοποίηση Μπορεί να προκύψει για διάφορους λόγους Π.χ., εξαίρεση αριθμητικής πράξης, τερματισμός διεργασίας
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Σήματα (signals)
Προγραμματισμός συστημάτων UNIX/POSIX Σήματα (signals) Σήματα (signals) Τα σήματα είναι «διακοπές» λογισμικού (software interrupts) οι οποίες διακόπτουν την κανονική λειτουργία μίας διεργασίας. Προκαλούνται
Διαβάστε περισσότεραΔίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals
Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,
Διαβάστε περισσότεραΤµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Σεπτέµβριος 2013
Γράψτε όλες τις απαντήσεις σας σε αυτό το φυλλάδιο Οδηγίες για Α: Διαβάστε προσεκτικά όλες τις επιλογές σηµειώστε µε Χ (το πολύ) µια από αυτές. Μην επιλέγετε «στην τύχη» οι λανθασµένες απαντήσεις βαθµολογούνται
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΔιαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά
Διαβάστε περισσότεραΜη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1
Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 lalis@inf.uth.gr Μπλοκάρισμα διεργασίας Μια διεργασία μπλοκάρει όταν καλεί λειτουργίες συστήματος που δεν μπορεί να ολοκληρωθούν
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότερα4 η ιάλεξη: Signals UDP Sockets
Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε
Διαβάστε περισσότεραΔιαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά
Διαβάστε περισσότεραΣυγχρονισμός & σηματοφόροι. Προγραμματισμός II 1
Συγχρονισμός & σηματοφόροι Προγραμματισμός II 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Οι διεργασίες εκτελούνται ταυτόχρονα μεταξύ τους Ο προγραμματιστής δεν ελέγχει την εναλλαγή Τι γίνεται αν δύο ή περισσότερες
Διαβάστε περισσότεραΠαράδειγµα χρήσης perror, errno (πρόγραµµα errors_demo.c)
Χειρισµός Λαθών 1 Παράδειγµα χρήσης perror, errno (πρόγραµµα errors_demo.c) 2 Είσοδος/Έξοδος Χαµηλού Επιπέδου 3 Είσοδος/Έξοδος Χαµηλού Επιπέδου (συν.) Αυτό αργότερα στο εξάµηνο 4 Κλήση συστήµατος open
Διαβάστε περισσότεραΝτίρλης Νικόλαος- ΕΤΥ 2 ο Φροντιστήριο Παρασκευή, 18/10/2013 Β4. Λειτουργικά Συστήματα- Φροντιστήριο 2
Ντίρλης Νικόλαος- ΕΤΥ 2 ο Φροντιστήριο Παρασκευή, 18/10/2013 Β4 Φροντιστήριο 2 1 Λειτουργικό Σύστημα -> Multitasking Κάθε διεργασία μπορεί να ειδωθεί σαν μία δέσμη στοιχείων που διατηρούνται από τον πυρήνα
Διαβάστε περισσότεραΕργαστήριο 5 fork(), exec(), signals
Εργαστήριο 5 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων
Διαβάστε περισσότεραΕργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ
Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΕΡΓΑΣΙΕΣ Πολυεπεξεργασία Διεργασία (process) Νήμα (thread) Εργασία (task/job) Διεργασίες Διεργασία είναι μια (συγκεκριμένη) εκτέλεση κάποιου προγράμματος για λογαριασμό κάποιου
Διαβάστε περισσότεραΑγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1
Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένας αγωγός; Μηχανισμός/συσκευή επικοινωνίας διεργασιών Μετάδοση μιας ροής από bytes (μονής κατεύθυνσης) First-in-first-out (FIFO):
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΔιεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1
Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω
Διαβάστε περισσότεραΔιαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1
Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις
Διαβάστε περισσότεραΧρονοδρομολογητής Κυκλικής Επαναφοράς
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 4 η Εργαστηριακή Άσκηση: Χρονοδρομολογητής Κυκλικής Επαναφοράς Λειτουργικά Συστήματα Υπολογιστών
Διαβάστε περισσότεραΘέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας
Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Λειτουργικά Συστήματα Ενότητα # 10: Προγραμματισμός UNIX Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του
Διαβάστε περισσότεραΕργαστήριο 7 fork(), exec(), signals
Εργαστήριο 7 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων
Διαβάστε περισσότεραΔιεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1
Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή
Διαβάστε περισσότεραΣηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1
Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό
Διαβάστε περισσότεραΟυρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1
Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1 lalis@inf.uth.gr Ουρά μηνυμάτων Αποθήκη μηνυμάτων στην μνήμη του λειτουργικού Περιορισμένος αριθμός / όγκος μηνυμάτων Κάθε μήνυμα είναι
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος 2011-2012
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΚλείδωμα αρχείων (file locking) Προγραμματισμός II 1
Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της
Διαβάστε περισσότεραΣηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1
Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής εναλλαγή if/while () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) σήματα (signals) Ανάγκη Ότι είδαμε
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΑ. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΝήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1
Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή
Διαβάστε περισσότεραΒιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών
Διαβάστε περισσότεραΚλείδωμα αρχείων (file locking) Προγραμματισμός II 1
Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα
Διαβάστε περισσότερα1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»
1. Εισαγωγή Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 3 «Διεργασίες» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας Η έννοια της διεργασίας (process) είναι θεμελιώδης για την κατανόηση του τρόπου με τον οποίο
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή
Διαβάστε περισσότεραΥλοποίηση Σηματοφόρων
Υλοποίηση Σηματοφόρων 1 lalis@inf.uth.gr Υλοποίηση σε επίπεδο συστήματος Εσωτερική κατάσταση: Ένας ακέραιος για την αποθήκευση της τιμής του σηματοφόρου Μια ουρά αναμονής που τοποθετείται ένα νήμα όταν
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #5 εκτέλεση υπό συνθήκη 1 Σπύρος Λάλης Ροή εκτέλεσης Μέχρι στιγμής η ροή εκτέλεσης του κώδικα είναι αυστηρά γραμμική Οι εντολές που γράφουμε στον κώδικα μας εκτελούνται μια προς
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)
Προγραμματισμός συστημάτων UNIX/POSIX Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes) Επικοινωνία μεταξύ διεργασιών γονέα-παιδιού Κατά κάποιο τρόπο, θα δημιουργήσουμε ένα τύπο
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Κανονική Εξέταση Λύσεις
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Χρονομέτρηση, καθυστέρηση και ανάλυση επιδόσεων
Προγραμματισμός συστημάτων UNIX/POSIX Χρονομέτρηση, καθυστέρηση και ανάλυση επιδόσεων Ανάγκη Πάρα πολύ συχνά υπάρχει η ανάγκη να χρονομετρήσουμε κάτι, π.χ. Πόσο χρειάστηκε ένα πρόγραμμα για να εκτελεστεί
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο
Διαβάστε περισσότεραΚεφάλαιο 11 Διαχείριση Διεργασιών
Κεφάλαιο 11 Διαχείριση Διεργασιών Κάθε πρόγραμμα που τρέχει λέγεται διεργασία. Οι διεργασίες ποικίλουν από πράγματα σαν το X παραθυρικό σύστημα εως προγράμματα συστήματος (δαίμονες) που ξεκινούν με την
Διαβάστε περισσότεραΒιβλιοθήκη stdio. Προγραμματισμός II 1
Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής
Διαβάστε περισσότεραΛειτουργικά συστήματα πραγματικού χρόνου
Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού
Διαβάστε περισσότεραΕισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη
Διαβάστε περισσότεραΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Έλεγχος ροής Δομή επιλογής (if, switch) Δομές επανάληψης (while, do-while, for) Διακλάδωση
Διαβάστε περισσότεραΗ βασική συνάρτηση προγράμματος main()
Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα
Διαβάστε περισσότεραDr. Garmpis Aristogiannis - EPDO TEI Messolonghi
Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει
Διαβάστε περισσότεραΔιάλεξη 18η: Διαχείρηση Αρχείων
Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Διεργασίες (processes)
Προγραμματισμός συστημάτων UNIX/POSIX Διεργασίες (processes) Δομή αρχείου προγράμματος Πρόγραμμα (program) ονομάζεται το εκτελέσιμο αρχείο που βρίσκεται αποθηκευμένο στο δίσκο (π.χ. το a.out, ή το ls ή
Διαβάστε περισσότεραΠαρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.
Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int
Διαβάστε περισσότεραΒιβλιοθήκη stdio. Προγραμματισμός II 1
Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για
Διαβάστε περισσότεραΠίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"
Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό
Διαβάστε περισσότεραΑντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΔυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1
Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής
Διαβάστε περισσότερα$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).
Κ24: Προγραμματισμός Συστήματος 2η Εργασία Εαρινό Εξάμηνο 2017 Προθεσμία Υποβολής: Κυριακή 30 Απριλίου 2017 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος της εργασίας αυτής είναι να εξοικειωθείτε με την δημιουργία
Διαβάστε περισσότεραΕπικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1
Επικοινωνία με μηνύματα Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Επικοινωνία με ανταλλαγή μηνυμάτων Η επικοινωνία με μηνύματα είναι ο πιο ευέλικτος τρόπος αλληλεπίδρασης σε κατανεμημένα συστήματα πιο
Διαβάστε περισσότεραΥπολογισμός - Εντολές Επανάληψης
Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία
Διαβάστε περισσότεραΕντοπισμός τερματισμού. Κατανεμημένα Συστήματα 1
Εντοπισμός τερματισμού Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Μοντέλο συστήματος Μια ομάδα διεργασιών εκτελεί έναν υπολογισμό Κατάσταση διεργασίας: ενεργητική ή παθητική (ανάλογα με το αν εκτελεί μέρος
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 14 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:04 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραIPC System V. Προγραμματισμός II 1
IPC System V Προγραμματισμός II 1 lalis@inf.uth.gr Διαδιεργασιακή επικοινωνία System V 3 είδη «αντικειμένων» (μηχανισμών) επικοινωνίας ουρές μηνυμάτων (message queues): msg κοινόχρηστες περιοχές μνήμης
Διαβάστε περισσότεραΔιάλεξη 14: Διεργασίες: Έλεγχος & Σήματα (Processes: Control & Signals)
ΕΠΛ371 - Προγραμματισμός Συστημάτων Διάλεξη 14: Διεργασίες: Έλεγχος & Σήματα (Processes: Control & Signals) (Κεφάλαιο 8,10 - Stevens & Rago) Δημήτρης Ζεϊναλιπούρ 14-1 Περιεχόμενο Διάλεξης A. Η οικογένεια
Διαβάστε περισσότεραΣυστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας
Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΔιεργασίες και Νήματα (1/2)
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Διεργασίες και Νήματα (1/2) Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο, 2016-2017 Διεργασίες
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΕισαγωγικά & Βασικές Έννοιες
Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο
Διαβάστε περισσότεραΕνδεικτικές λύσεις και στατιστικά
Προγραμματισμός 1 Σύντομο Quiz 25/9/9 Ενδεικτικές λύσεις και στατιστικά Ερώτηση 1: Γράψτε παρακάτω συνάρτηση η οποία δέχεται ως παραμέτρους ένα string και ένα χαρακτήρα και επιστρέφει τον αριθμό των εμφανίσεων
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού
Γλώσσες Προγραμματισμού Διδάσκων: Ανδρέας Παπασαλούρος Ιστοσελίδα: http://www.samos.aegean.gr/math/andpapas/courses/pl/default.htm Πλατφόρμα ηλεκτρονικής μάθησης: http://myria.math.aegean.gr/moodle/ Πλατφόρμα
Διαβάστε περισσότεραΕισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python
Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή
Διαβάστε περισσότεραΙδιοκτησία Αντικειµένου
Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων Δεν γνωρίζει πότε θα αρχίσει
Διαβάστε περισσότεραΚεφάλαιο 3. Διδακτικοί Στόχοι
Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι
Διαβάστε περισσότεραΕργαστήριο 2: Πίνακες
Εργαστήριο 2: Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Επεξεργασία Πινάκων - Υλοποίηση της Δυαδικής Αναζήτησης σε πίνακες - Υλοποίηση της Ταξινόμησης με Επιλογής σε πίνακες ΕΠΛ035
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');
Διαβάστε περισσότερα