ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 11 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
Κεφάλαιο 1ο Εισαγωγή σε Λειτουργικά Συστήματα Ορισμός ΛΣ
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Τμ.
1 Κλήση Απομακρυσμένων Διεργασιών (Remote Procedure Call - RPC) Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Message Passing Interface (MPI)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΜΑΘ-3122/106 Προγραμματισμός
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
1/12/2003Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Τύποι πραγματικών αριθμών
Εντολες Επιλογης (Selection)
Λειτουργικά Συστήματα
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
Λειτουργικά Συστήματα
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
Π ΑΡΑΛΛΗΛΗ / ΚΑΤΑΝΕΜΗΜΕΝΗ ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ Εισαγωγή στο OpenMP.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1.
ΣΥΝΑΡΤΗΣΕΙΣ.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Message Passing Interface (MPI) Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων Αθήνα, Δεκέμβριος 2002.
Ντίρλης Νίκος- ΕΤΥ 4ο ΦΡΟΝΤΙΣΤΗΡΙΟ Παρασκευή Β4 1.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Διεργασίες Λειτουργικά Συστήματα. Λειτουργικά Συστήματα/ Slide 2 Η Έννοια της Διεργασίας * Διεργασία (Process) – ο μηχανισμός εκτέλεσης ενός προγράμματος.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
1 Κέλυφος Bash – Τι μάθαμε? Μεταξύ άλλων…  Συνθήκες ελέγχου (if, case…) και βρόχοι επανάληψης (for, while)  Πράξεις ακεραίων (let, expr) και δεκαδικών.
Διεργασίες.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Λειτουργικά Συστήματα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενισχυτική διδασκαλία
Ενισχυτική διδασκαλία
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Δημιουργία Διεργασιών
Processes.
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 11 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1

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

 Ο µοναδικός τρόπος να δηµιουργηθεί µια νέα διεργασία στο UNIX είναι µε την κλήση του συστήµατος fork ◦ Η διεργασία που καλεί την fork ονοµάζεται γονέας ◦ Η νέα διεργασία ονοµάζεται παιδί  Σύνταξη της κλήσης του συστήµατος fork ◦ pid = fork();  Οταν επιστρέψει η κλήση της fork ◦ Η δύο διεργασίες έχουν ολόιδια αντίγραφα του χώρου µνήµης (σε επίπεδο χρήστη) ◦ Εκτός από την τιµή της µεταβλητής pid ◦ Για την διεργασία-γονέας η pid είναι η ταυτότητα (ID) της διεργασίας-παιδί ◦ Για την διεργασία-παιδί η pid = 0 ◦ Πώς ξεχωρίζουμε στον κώδικα ποια διεργασία είναι παιδί και ποια πατέρας? - 3 -

- 4 - #include #include main() { int pid = 0; printf("hello world\n"); pid = fork(); if (pid == 0) { // Child process executes here printf("this is the child\n"); } else { // parent process executes here printf("this is the parent\n"); }printf("bye\n"); return 0; }  Τι θα δείξει η εκτέλεση του προγράμματος?

- 5 - #include #include main() { int pid = 0; printf("hello world\n"); pid = fork(); if (pid == 0) { // Child process executes here printf("this is the child\n"); exit(0);} // only the parent process executes this printf("this is the parent\n"); exit(0);}

- 6 - #include #include main() { int i = 0; if (fork() == 0) { // Child process executes here i = 1; } printf("My value:%d\n", i); exit();}  Η διεργασία-γονέας εμφανίζει 0  Η διεργασία-παιδί εμφανίζει 1

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

 Ένα signal είναι µια σύντοµη ανακοίνωση που στέλνεται στην διεργασία ◦ Ενηµερώνει για την εµφάνιση ενός ‘σηµαντικού’ γεγονότος Μοιάζει µε τα interrupts ◦ Το στέλνει το ΛΣ (και όχι το υλικό όπως στα interrupts)  Όταν ‘έρθει’ ένα νέο signal ◦ Η ϱοή εκτέλεσης του κώδικα διακόπτεται ◦ Εκτελείται ο signal handler -- χειρίζεται το signal ◦ Επιστρέφει η ϱοή στο σηµείο που έγινε η διακοπή  Υπάρχουν πολλών ειδών signals  Η εντολή kill -l εμφανίζει όλη την λίστα  π.χ. ο diogenis υποστηρίζει: HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX - 8 -

 Τα πιο βασικά signals µπορούµε να τα στείλουµε µε το πληκτρολογιο ◦ CTRL-C -- ∆ηµιουργεί ένα SIGINT signal ◦ CTRL-Z -- ∆ηµιουργεί ένα SIGTSTP signal ◦ CTRL-\ -- ∆ηµιουργεί ένα SIGABRT signal  Μπορούµε να στείλουµε όλα τα signals από τη γραµµή εντολών  kill - PID  π.χ. kill -INT 2115 στέλνει ένα SIGINT signal στη διεργασία µε PID 2115  Προγραµµατιστικά µπορούµε να στείλουµε signals µε την κληση  του συστήµατος kill(...) pid_t my_pid = getpid(); kill(my_pid, SIGSTOP);

 Ολα τα signals µπορούµε να τα χειριστούµε, εκτός από τα ◦ KILL signal -- Η διεργασία τερµατίζει ◦ STOP signal -- Η διεργασία σταµατάει  Προκαθορισµένοι signal handlers ◦ Αν δεν ορίσουµε έναν συγκεκριµένο handler για κάποιο τύπου signal το σύστηµα χρησιµοποιεί τους προκαθορισµένους ◦ π.χ. όταν έρθει ένα TERM signal -- ο προκαθορισµένος handler κάνει exit(...)  Ορίζουµε handlers µε την κλήση του συστήματος signal(...) ◦ Πρώτη παράμετρος – ο τύπος του signal ◦ ∆εύτερη παράμετρος – η συνάρτηση του handle

 Οταν ο χρήστης πατήσει CTRL-C ϑα κληθεί η catch_int() και ϑα τυπώσει " Don’t do that "  Προσοχη: – Αµέσως µετά, το σύστηµα ϑα αφαιρέσει την catch_int() από το signal SIGINT  Αν ϑέλουµε η catch_int() να χειρίζεται όλα τα signals τύπου SIGINT πρέπει να το ϑέσουµε ξεκάθαρα ◦ Μέσα στην catch_int() ϑα πρέπει να καλέσουµε ξανά την signal(SIGINT, catch_int); void catch_int(int sig_num) { printf("Don’t do that\n"); }... signal(SIGINT, catch_int);

 Αν ϑέλουµε η catch_int() να χειρίζεται όλα τα signals τύπου SIGINT πρέπει να το θέσουµε ξεκάθαρα:  Το σύστηµα προσφέρει 2 έτοιµους signal handlers ◦ SIG_IGN - Αγνοεί το signal -δηλ. ο handler δεν κάνει τίποτα ◦ signal(SIGINT, SIG_IGN); ◦ SIG_DFL -- Επαναφέρει τον προκαθορισμένο handler ◦ signal(SIGTSTP, SIG_DFL); void catch_int(int sig_num) { signal(SIGINT, catch_int); // re-set for next signal printf("Don’t do that\n"); }

 Υλοποιούµε έναν signal handler  Θέτουµε signal( SIGCHLD, sig_chld ); /* Avoid "zombie" child-proccesses */ void sig_chld(int signo){ signal( SIGCHLD, sig_chld ); pid_t pid; int stat; while( (pid=waitpid(-1,&stat,WNOHANG)) > 0){ printf( "Child %d terminated.\n", pid ); }}

 