Προγραμματισμός συστημάτων UNIX/POSIX. Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)
|
|
- Σάββας Δημητρακόπουλος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Προγραμματισμός συστημάτων UNIX/POSIX Διαδιεργασιακή επικοινωνία: αγωγοί (IPC inter-process communication: pipes)
2 Επικοινωνία μεταξύ διεργασιών γονέα-παιδιού Κατά κάποιο τρόπο, θα δημιουργήσουμε ένα τύπο δυαδικού «αρχείου» στο οποίο θα έχουν πρόσβαση και οι δύο διεργασίες. Αρχικά, θα θεωρήσουμε ότι οι διεργασίες έχουν προέρθει από το ίδιο πρόγραμμα, με χρήση της fork() (μπορείτε να φανταστείτε γιατί;) Διότι με την fork το παιδί κληρονομεί τα πάντα όπως είπαμε, ακόμα και τα αρχεία που έχει ανοίξει ο γονέας. Ο γονέας θα ανοίξει το αρχείο και το παιδί θα το έχει ήδη ανοιχτό όταν δημιουργηθεί με την fork(). Τα ειδικά αυτά αρχεία ονομάζονται (ανώνυμοι) αγωγοί (unnamed pipes) Διότι κατά το άνοιγμα δεν δίνεται κανένα όνομα αρχείου. 2
3 Αγωγοί (pipe) Δημιουργία & άνοιγμα pipe: #include <unistd.h> int pipe(int pfd[2]); Επιστρέφει 0 αν όλα ΟΚ αλλιώς αρνητικό. Στο pfd[] ανοίγουν και επιστρέφονται 2 περιγραφείς αρχείων. Με το pfd[1] μπορεί να γίνει MONO γράψιμο (write) προς το pipe Με το pfd[0] θα μπορεί να γίνει MONO διάβασμα (read) από το pipe Δηλαδή, ότι γράφεται στο pfd[1] διαβάζεται από το pfd[0]. Εγγραφή και ανάγνωση γίνονται με τις γνωστές συναρτήσεις read() και write(). Κλείσιμο γίνεται με την close(). Δεν μπορείτε να κάνετε lseek(). 3
4 Παράδειγμα με pipe int main() { int n, pfd[2]; char msg[50]; if (pipe(pfd) < 0) { perror("pipe()"); exit(1); if (fork()!= 0) { /* Parent */ close(pfd[0]); /* No reading by the parent */ printf("(%d) - I am the parent; sending hello message.\n", getpid()); write(pfd[1], "hello!!", 7); else { /* Child */ close(pfd[1]); /* No writing by the child */ printf("(%d) - I am the child.\n", getpid()); while ((n = read(pfd[0], msg, 2)) >= 0) { if (n == 0) break; /* EOF */ printf("(%d) - read %d bytes from the pipe [%.*s]\n", getpid(), n, n, msg); if (n < 0) { perror("read() from child"); exit(1); return 0; /* All files close */ 4
5 Παράδειγμα δημιουργία pipe Γονέας pfd[0] pfd[1] ΑΓΩΓΟΣ (pipe) 5
6 Παράδειγμα fork() και κληρονομιά pipe Γονέας pfd[0] pfd[1] pfd[1] ΑΓΩΓΟΣ (pipe) Παιδί pfd[0] 6
7 Παράδειγμα κλείσιμο άχρηστων περιγραφέων pfd[0] Γονέας pfd[1] ΑΓΩΓΟΣ (pipe) pfd[1] Παιδί pfd[0] Πειράζει να μην κλείσω τους περιγραφείς;;; Δεν είναι απαραίτητο να κλείσουν! Όμως, ανάλογα με τι θέλουμε να κάνουνε, αν δεν κλείσουν μπορεί να έχουμε προβλήματα (βλ. παρακάτω). 7
8 Παράδειγμα τελική κατάσταση Γονέας pfd[1] ΑΓΩΓΟΣ (pipe) Παιδί pfd[0] 8
9 Εκτέλεση παραδείγματος & λεπτομέρειες Εκτέλεση: $./a.out (23299) (23300) (23300) (23300) (23300) (23300) - I am I am read read read read the parent; sending hello message. the child. 2 bytes from the pipe [he] 2 bytes from the pipe [ll] 2 bytes from the pipe [o!] 1 bytes from the pipe [!] Μερικές λεπτομέρειες: Όταν ο εγγραφέας κάνει close(), στον αναγνώστη η read() θα επιστρέψει 0 (EOF-End of File), αφού όμως πρώτα διαβάσει όσα bytes είχαν ήδη γραφτεί. Οποιοδήποτε δυαδικό αρχείο (άρα και ένας αγωγός) παραμένει ανοικτό όσο υπάρχουν ανοικτοί περιγραφείς Για αυτό το παιδί κλείνει το pfd[1] όταν ξεκινάει έτσι θα λάβει EOF μόλις κλείσει το pfd[1] και ο γονέας (εγγραφέας). Μπορεί να γράφει συνεχώς ο εγγραφέας ακόμα κι όταν δεν κάνει read() ο αναγνώστης; Απάντηση: όχι υπάρχει περιορισμένος χώρος (συνήθως 512 bytes). Αν γεμίσει, τότε ο εγγραφέας μπλοκάρει μέχρι ο αναγνώστης να αδειάσει χώρο με την read(). 9
10 Αγωγοί και exec, I Τι γίνεται αν το παιδί κάνει exec?? Τι γίνεται με τα pipes που έχει ανοίξει ο πατέρας; Η διεργασία-παιδί τα κληρονομεί ΟΚ. Όμως τα γνωρίζει το νέο πρόγραμμα που θα εκτελεστεί με την exec και αν ναι, πώς; Απάντηση: Όπως είχαμε πει, οι κλήσεις τύπου exec δεν δημιουργούν νέα διεργασία, αλλά διατηρούν την υπάρχουσα η οποία απλά εκτελεί άλλο πρόγραμμα Πολλά πράγματα όπως το process id, το user id, ο τρέχων κατάλογος εργασίας κλπ διατηρούνται. Όπως επίσης και οι ανοιχτοί περιγραφείς αρχείων (file descriptors) Οι οποίοι περιλαμβάνουν και τους περιγραφείς των αγωγών! Επομένως, το πρόγραμμα που θα τρέξει μέσω της exec θα έχει ανοιχτούς τους ίδιους περιγραφείς αρχείων όπως η διεργασία που το εκτελεί, συμπεριλαμβανομένων και των αγωγών. 10
11 Αγωγοί και exec, II Υπάρχει όμως ένα πρόβλημα: ΟΚ, ο αγωγός θα είναι ανοικτός, αλλά πώς θα γνωρίζει το νέο πρόγραμμα ποιοι ακριβώς είναι οι περιγραφείς για τον αγωγό; (ώστε να μπορεί να γράψει / διαβάσει από αυτούς;) Δηλαδή, στο προηγούμενο παράδειγμα: if (fork()!= 0) { /* Parent */ close(pfd[0]); /* No reading by the parent */ printf("(%d) - I am the parent; sending hello message.\n", getpid()); write(pfd[1], "hello!!", 7); else { /* Child */ close(pfd[1]); /* No writing by the child */ printf("(%d) - I am the child. I will exec program pipe2.\n", getpid()); execl("./pipe2", "pipe2", NULL); printf("execl() failed!\n", getpid()); πώς θα γνωρίζει το pipe2 ποιο είναι το pfd[0]??? 11
12 Περνώντας τον αγωγό μέσω exec Ο μόνος τρόπος να «περάσουμε» τον περιγραφέα στο πρόγραμμα που θα εκτελεστεί από την exec είναι: μέσω ορισμάτων στην main του προγράμματος που θα εκτελεστεί Το πρόγραμμα θα πρέπει να έχει ορίσματα στην main() του, τα οποία θα του δώσουν τον ακέραιο αριθμό που αντιπροσωπεύει τον περιγραφέα του αγωγού. Μην ξεχνάμε ότι ο αγωγός είναι ήδη ανοιχτός λόγω της κληρονομιάς της διεργασίας-παιδιού, απλά το νέο πρόγραμμα δεν ξέρει τον αύξων αριθμό του (περιγραφέα). 12
13 Παράδειγμα με exec & pipe, I Γονική διεργασία & παιδί που εκτελεί exec: int main() { int pfd[2]; char s[10]; if (pipe(pfd) < 0) { perror("pipe()"); exit(1); if (fork()!= 0) { /* Parent */ printf("(%d) - I am the parent; pfd[0]=%d,pdf[1]=%d.\n", getpid(),pfd[0],pfd[1]); close(pfd[0]); /* No reading from the parent */ printf("(%d) - I am the parent; sending hello message.\n", getpid()); write(pfd[1], "hello!!", 7); else { /* Child */ close(pfd[1]); /* No writing by the child */ printf("(%d) - I am the child. I will exec pipe2.\n", getpid()); sprintf(s, "%d", pfd[0]); /* Write pfd[0] to a string */ execl("./pipe2", "pipe2", s, NULL); /* Pass s as an argument */ printf("exec() failed!\n"); return 0; 13
14 Παράδειγμα με exec & pipe, II To pipe2.c (μετάφραση με: gcc o pipe2 pipe2.c): #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int pfd, n; char msg[10]; if (argc!= 2) exit(1); pfd = atoi(argv[1]); /* Get the file descriptor */ printf("(%d) - I am %s. I will read from fd %d\n", getpid(), argv[0], pfd); while ((n = read(pfd, msg, 2)) >= 0) { if (n == 0) break; /* EOF */ printf("(%s) - read %d bytes from the pipe [%.*s]\n", argv[0], n, n, msg); if (n < 0) { perror("read() from child"); exit(1); return 0; 14
15 Εκτέλεση παραδείγματος $./a.out (23859) - I am the parent; pfd[0]=3, pdf[1]=4. (23859) - I am the parent; sending hello message. (23860) - I am the child. I will exec pipe3. (23860) - I am pipe2. I will read from fd 3 (pipe2) - read 2 bytes from the pipe [he] (pipe2) - read 2 bytes from the pipe [ll] (pipe2) - read 2 bytes from the pipe [o!] (pipe2) - read 1 bytes from the pipe [!] 15
16 Σύνοψη επικοινωνίας με αγωγούς 1. Ο γονέας δημιουργεί και ανοίγει έναν αγωγό με την pipe(). 2. Επιστρέφονται 2 περιγραφείς, στον έναν γίνεται εγγραφή και από τον άλλον διάβασμα. 3. Δημιουργείται διεργασία-παιδί με τη fork(). Το παιδί κληρονομεί τους περιγραφείς. 4. Άμεσο κλείσιμο όσων περιγραφέων δεν χρειαζόμαστε (ώστε να ληφθούν EOF όταν πρέπει). 5. Διάβασμα και γράψιμο γίνεται σαν να πρόκειται για απλό αρχείο, μέσω read() και write(). 6. Κάθε διεργασία κλείνει με close(). 7. Αν το παιδί εκτελέσει μέσω exec κάποιο άλλο πρόγραμμα, οι περιγραφείς μπορούν να περάσουν στο δεύτερο πρόγραμμα μέσω ορισμάτων στη main() του. 16
17 Θέματα με τους αγωγούς: αμφίδρομη επικοινωνία? Εκτός από τον γονέα, μπορεί να γράφει και το παιδί στον αγωγό για να τα διαβάζει ο γονέας; Απάντηση: η σύντομη και ασφαλής απάντηση είναι: καλύτερα ΌΧΙ, παρότι υπό προϋποθέσεις μπορεί και να γίνεται. Οι αγωγοί θεωρούνται μονό-κατευθυντήριες επικοινωνίες. Πώς μπορεί λοιπόν να γράφει ο πατέρας προς το παιδί αλλά και το παιδί να γράφει προς τον πατέρα; Απάντηση: Πρέπει να δημιουργηθούν δύο ανεξάρτητοι αγωγοί: στον έναν θα γράφει ο πατέρας και θα διαβάζει το παιδί και στον άλλον θα γράφει το παιδί και θα διαβάζει ο γονέας. 17
18 Θέματα με τους αγωγούς: αν δεν ελέγχουμε το exec? Όπως είπαμε πριν: 7. Αν το παιδί εκτελέσει μέσω exec κάποιο άλλο πρόγραμμα, οι περιγραφείς μπορούν να περάσουν στο δεύτερο πρόγραμμα μέσω ορισμάτων στη main() του. Τι γίνεται αν το πρόγραμμα που εκτελείται μέσω της exec είναι μία έτοιμη εφαρμογή που δεν έχουμε πρόσβαση στον κώδικά της; Πώς μπορεί να ξέρει τον αγωγό μας ώστε να επικοινωνήσουμε μαζί της; Απάντηση: Βασικά, δεν μπορούμε να κάνουμε τίποτε! 18
19 και δεν γίνεται τίποτε; Ξέρουμε κάτι για κάθε εφαρμογή, ακόμα και για αυτές που δεν έχουμε γράψει εμείς; Μήπως όλες οι εφαρμογές γράφουν κάπου και διαβάζουν από κάπου; Απάντηση: Πάντα έχουν ανοιχτά (υποχρεωτικά) δύο συγκεκριμένα αρχεία, το standard input (με file descriptor 0, για διάβασμα από το πληκτρολόγιο) και το standard output (με file descriptor 1, για γράψιμο στην οθόνη). Για λόγους φορητότητας (portability), αντί να χρησιμοποιούμε το 0 για το standard input και 1 για το standard output, πρέπει να χρησιμοποιούμε τα STDIN_FILENO και STDOUT_FILENO αντίστοιχα. 19
20 και πώς μας βοηθάει αυτό να επικοινωνήσουμε; Από μόνο του δεν βοηθάει. Όμως υπάρχει η εξής ιδέα: μπορούμε με κάποιον τρόπο να «συνδέσουμε» τους αγωγούς μας με την standard input ή/και την standard output της νέας διεργασίας; Έτσι η διεργασία θα πιστεύει ότι διαβάζει π.χ. από το πληκτρολόγιο αλλά στην πράξη τα δεδομένα θα της τα δίνει ο γονέας μέσω ενός αγωγού. Απάντηση: Αυτό όντως θα λειτουργήσει. Αρκεί βέβαια να μπορούμε να το κάνουμε! Απαιτείται να μπορούμε να κάνουμε «περίεργες» αλλαγές στους περιγραφείς 20
21 Προγραμματισμός συστημάτων UNIX/POSIX «Παιχνίδια» με περιγραφείς αρχείων & αγωγούς
22 «Παιχνίδια» με τους περιγραφείς αρχείων Υπάρχει η δυνατότητα να δημιουργήσουμε έναν νέο (αντίγραφο) περιγραφέα ο οποίος μπορεί να χρησιμοποιηθεί για προσπέλαση ενός ήδη ανοιχτού αρχείου. Δηλαδή, το ίδιο αρχείο μπορούμε να το προσπελάσουμε από δύο διαφορετικούς / ανεξάρτητους περιγραφείς. Μάλιστα μπορούμε να κλείσουμε τον πρώτο αλλά το αρχείο θα παραμείνει ανοιχτό μιας και είναι ανοιχτός ο δεύτερος. Δύο είναι οι κλήσεις που πετυχαίνουν τα παραπάνω: dup() dup2() 22
23 Η κλήση dup() Δημιουργία αντιγράφου περιγραφέα (υποτίθεται ότι το αρχείο με περιγραφέα fd είναι ήδη ανοιχτό): #include <unistd.h> int dup(int fd); Επιστρέφει έναν νέο περιγραφέα, ο οποίος μπορεί να χρησιμοποιηθεί να προσπελάσουμε το ίδιο αρχείο με τον fd. Για παράδειγμα, το παρακάτω γράφει στην οθόνη: if ((new = dup(stdout_fileno)) > 0) { write(new, "Hi!\n", 4); close(new); 23
24 Η κλήση dup2() Δημιουργία συγκεκριμένου αντιγράφου περιγραφέα (υποτίθεται ότι το αρχείο με περιγραφέα fd είναι ήδη ανοιχτό): #include <unistd.h> int dup2(int fd, int newfd); Ο νέος περιγραφέας θα είναι αυτός που δίνουμε (newfd) Επιστρέφει τον νέο περιγραφέα (δηλαδή το newfd) αν όλα πάνε καλά, αλλιώς έναν αρνητικό αριθμό. Αν ο newfd χρησιμοποιείται ήδη, η dup2() πρώτα κλείνει το αρχείο του και στη συνέχεια κάνει τον newfd να προσπελαύνει το αρχείο του fd. Για παράδειγμα, το παρακάτω γράφει στην οθόνη μέσω του 8: if (dup2(stdout_fileno, 8) > 0) { write(8, "Hi!\n", 4); close(8); 24
25 Παράδειγμα dup / dup2 #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> int main() { int out, bak; Εκτέλεση: $./a.out Hello world 1 Hello world 3 $ cat file.txt Hello world 2 bak = dup(stdout_fileno); /* Backup standard output */ out = open("file.txt", O_CREAT O_TRUNC O_RDWR, S_IRUSR S_IWUSR); if (bak < 0 out < 0) exit(1); printf("hello world 1 \n"); dup2(out, STDOUT_FILENO); /* out will be the new standard output */ close(out); /* No longer needed */ printf("hello world 2 \n"); dup2(bak, STDOUT_FILENO); /* close & restore the original standard output */ close(bak); /* No longer needed */ printf("hello world 3 \n"); return 0; 25
26 Παράδειγμα με exec & pipe & dups, I Γονική διεργασία & παιδί που εκτελεί exec: int main() { int pfd[2]; if (pipe(pfd) < 0) { perror("pipe()"); exit(1); if (fork()!= 0) { /* Parent */ printf("(%d) - I am the parent; pfd[0]=%d,pdf[1]=%d.\n", getpid(),pfd[0],pfd[1]); close(pfd[0]); /* No reading from the parent */ printf("(%d) - I am the parent; sending hello message.\n", getpid()); write(pfd[1], "hello!!", 7); else { /* Child */ close(pfd[1]); /* No writing by the child */ if (dup2(pfd[0], STDIN_FILENO) >= 0) { /* Duplicate pipe to 0 (std input!) */ execl("./pipe4", "pipe4", NULL); printf("exec() failed!\n"); perror("dup2"); return 0; 26
27 Παράδειγμα με exec & pipe & dups, II To pipe4.c (μετάφραση με: gcc o pipe4 pipe4.c): #include <stdio.h> #include <unistd.h> int main() { int n; char msg[10]; printf("(%d) - I am pipe4. I will read standard input.\n", getpid()); while ((n = read(stdin_fileno, msg, 2)) >= 0) { if (n == 0) break; /* EOF */ printf("(pipe4) - read %d bytes [%.*s]\n", n, n, msg); if (n < 0) { perror("read() from child"); exit(1); return 0; 27
28 Εκτέλεση παραδείγματος $./a.out (24365) - I am the parent; pfd[0]=3, pdf[1]=4. (24365) - I am the parent; sending hello message. (24366) - I am the child. I will exec pipe4. (24366) - I am pipe4. I will read standard input. (pipe4) - read 2 bytes [he] (pipe4) - read 2 bytes [ll] (pipe4) - read 2 bytes [o!] (pipe4) - read 1 bytes [!] 28
29 Επιπλέον παράδειγμα: 2 παιδιά Δημιουργήστε πρόγραμμα όπου η γονική διεργασία δημιουργεί δύο (2) παιδιά, όπου το πρώτο εκτελεί την εντολή ls -l και, μέσω αγωγού, στέλνει την έξοδο της εντολής στο δεύτερο παιδί, το οποίο εκτελεί την εντολή wc. Λύση: Ο πατέρας θα δημιουργήσει έναν αγωγό Στη συνέχεια θα δημιουργήσει 2 παιδιά Τα παιδιά θα αντιγράψουν τα κατάλληλα άκρα του αγωγού με dup2() στο stdin/stdout Τα παιδιά θα κάνουν exec. 29
30 Σχηματισμός αγωγού pfd[1] Παιδί 1 pfd[0] Γονέας ΑΓΩΓΟΣ (pipe) pfd[1] Παιδί 2 pfd[0] 30
31 Σχηματισμός αγωγού pfd[1] Παιδί 1 pfd[0] Γονέας ΑΓΩΓΟΣ (pipe) pfd[1] Παιδί 2 pfd[0] 31
32 Σχηματισμός αγωγού Παιδί 1 pfd[1] Γονέας ΑΓΩΓΟΣ (pipe) Παιδί 2 pfd[0] Υπενθύμιση: θα πείραζε αν ΔΕΝ κλείναμε τους περιγραφείς και τους αφήναμε όλους ανοιχτούς; 32
33 Ο κώδικας int main() { int pfd[2]; if (pipe(pfd) < 0) { perror("pipe()"); exit(1); if (fork() == 0) { /* child 1 */ close(pfd[0]); /* No reading from the pipe */ if (dup2(pfd[1], STDOUT_FILENO) >= 0) { /* Dup to std output */ close(pfd[1]); /* No longer needed! */ execl("/bin/ls", "ls", "-l", NULL); printf("exec() failed from child 1!\n"); perror("dup2 from child 1"); exit (1); if (fork() == 0) { /* child 2 */ close(pfd[1]); /* No writing to the pipe */ if (dup2(pfd[0], STDIN_FILENO) >= 0) { /* Dup to std input */ close(pfd[0]); /* No longer needed! */ execl("/usr/bin/wc", "wc", NULL); printf("exec() failed from child 2!\n"); perror("dup2 from child 2"); exit (1);... /* Parent code */ return 0; Είναι κάτι που πρέπει να κάνει ο γονέας αν θέλει να περιμένει να τελειώσουν τα παιδιά του; 33
Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1
Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένας αγωγός; Μηχανισμός/συσκευή επικοινωνίας διεργασιών Μετάδοση μιας ροής από bytes (μονής κατεύθυνσης) First-in-first-out (FIFO):
Διαβάστε περισσότεραΔιαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1
Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΔημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1
Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Ανακατευθύνσεις (redirections)
Προγραμματισμός συστημάτων UNIX/POSIX Ανακατευθύνσεις (redirections) Shell & ανακατεύθυνση εισόδου Κατά την εκτέλεση ενός προγράμματος, η είσοδος και η έξοδος ενός προγράμματος μπορούν να ανακατευθυνθούν
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω
Διαβάστε περισσότεραΠρογραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα
Διαβάστε περισσότεραΕκφωνήσεις ασκήσεων εργαστηρίου 1
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Γκόγκος Χρήστος Εκφωνήσεις ασκήσεων εργαστηρίου
Διαβάστε περισσότεραΔιάλεξη 18η: Διαχείρηση Αρχείων
Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής ΕΥ311-Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Εργαστήριο: Παραδείγματα δημιουργίας διεργασιών στο Linux Ένα πρόγραμμα (το στιγμιότυπο της εκτέλεσης του οποίου
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX. Διεργασίες (processes)
Προγραμματισμός συστημάτων UNIX/POSIX Διεργασίες (processes) Δομή αρχείου προγράμματος Πρόγραμμα (program) ονομάζεται το εκτελέσιμο αρχείο που βρίσκεται αποθηκευμένο στο δίσκο (π.χ. το a.out, ή το ls ή
Διαβάστε περισσότερα(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)
(Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη
Διαβάστε περισσότεραΕργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ
Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)
Διαβάστε περισσότεραΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις Υλικό από: Modern Operating Systems Laboratory Exercises, Shrivakan Mishra Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο
Διαβάστε περισσότεραΚεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.
Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Έως τώρα σε ένα πρόγραμμα έχουμε μάθει να εισάγουμε δεδομένα από το πληκτρολόγιο χρησιμοποιώντας την συνάρτηση scanf() και να εκτυπώνουμε δεδομένα
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΙΕΡΓΑΣΙΕΣ +- Με τον όρο διεργασία στο UNIX εννοούμε τη δυναμικη πράξη της
Διαβάστε περισσότεραΕισαγωγή στο περιβάλλον προγραμματισμού του εργαστηρίου. Λειτουργικά Συστήματα Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ
Εισαγωγή στο περιβάλλον προγραμματισμού του εργαστηρίου Λειτουργικά Συστήματα Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Διαδικαστικά Λογαριασμοί (Accounts) Χρήστης: oslabxyy Αλλαγή password: yppasswd Μηχανήματα
Διαβάστε περισσότεραΕπεξεργασία Αρχείων Κειµένου
Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 10 Αρχεία στην C Επανάληψη στην Αποθήκευση (Storage)
Διαβάστε περισσότεραΕισαγωγή στο περιβάλλον προγραμματισμού του εργαστηρίου
1 Εισαγωγή στο περιβάλλον προγραμματισμού του εργαστηρίου Λειτουργικά Συστήματα 7ο εξάμηνο ΣΗΜΜΥ ακ έτος 2015-2016 http://wwwcslabecentuagr/courses/os CSLab National Technical University of Athens Εργαστήριο
Διαβάστε περισσότεραΕργαστήριο 9: Αρχεία
Εργαστήριο 9: Αρχεία Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αρχεία, Είσοδος/Έξοδος από/προς αρχεία - Δυαδικά αρχεία - Παραδείγματα ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ.
Διαβάστε περισσότεραΠρογραμματισμός συστημάτων UNIX/POSIX
Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) σήματα (signals) Ανάγκη Ότι είδαμε
Διαβάστε περισσότεραUNIX System Programming
UNIX System Programming Processes Objectives look at how to program UNIX processes fork( ), wait( ) Overview 1. What is a Process? 2. fork() 3. wait() 4. Process Data 1. What is a Process? A process is
Διαβάστε περισσότεραΒιβλιοθήκη stdio. Προγραμματισμός II 1
Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής
Διαβάστε περισσότεραΛειτουργικά Συστήματα
Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Δέκατη-τρίτη (13 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/
Διαβάστε περισσότεραStreams Input / Output in C++ George Kastrinis
Streams Input / Output in C++ George Kastrinis (gkastrinis@di.uoa.gr) Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια
Διαβάστε περισσότεραΕνδεικτική περιγραφή μαθήματος
ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.
Διαβάστε περισσότεραΒιβλιοθήκη stdio. Προγραμματισμός II 1
Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η
Διαβάστε περισσότερα(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
(Κεφάλαιο 2.7 και 12) Αρχεία στην C ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουµε δεδοµένα από ένα πρόγραµµα, πρέπει να χρησιµοποιήσουµε την ευτερεύουσα
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');
Διαβάστε περισσότεραS, (5, -3, 34, -23, 7) ( /, @, *, _
1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ
Διαβάστε περισσότεραΠως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;
Λίστα για ψώνια Έννοιες: αρχεία- άνοιγμα- εγγραφή διάβασμα Προαπαιτούμενα : δομή επιλογής, επανάληψης, συναρτήσεις, λίστες Ο Άκης, τώρα που έμαθε και τις λίστες στην Python αποφάσισε να φτιάξει μια λίστα
Διαβάστε περισσότεραΚλείδωμα αρχείων (file locking) Προγραμματισμός II 1
Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα
Διαβάστε περισσότεραΕργαστήριο 5 fork(), exec(), signals
Εργαστήριο 5 fork(), exec(), signals Στο εργαστήριο θα μελετηθούν: Παραδείγματα χρήσης των συναρτήσεων fork και exec Συνάρτηση waitpid Συνάρτηση WIFEXITED Συνάρτηση WEXITSTATUS Παράδειγμα χρήσης σημάτων
Διαβάστε περισσότεραΛειτουργικά Συστήματα (Λ/Σ)
Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων
Διαβάστε περισσότεραΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο
ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο (File) τη συστηµατική συγκέντρωση δεδοµένων. Τα περισσότερα προγράµµατα στη γλώσσα C, τα οποία διαπραγµατεύονται είσοδο, αποθήκευση και επεξεργασία δεδοµένων χρησιµοποιούν
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην
Διαβάστε περισσότεραΒασικές λειτουργίες συστήματος πάνω σε αρχεία δεδομένων. Προγραμματισμός II 1
Βασικές λειτουργίες συστήματος πάνω σε αρχεία δεδομένων 1 ais@inf.uth.gr Βασικές λειτουργίες (1) int pen(cnst char *path, int fags, mde_t perms) ανοίγει το αρχείο με όνομα path (αν συμπεριλαμβάνεται ένα
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος I Θέματα ιάλεξης Μη- ομημένος
Διαβάστε περισσότεραΚεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C
Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 4: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Πίνακες Δεικτών, Παραδείγματα, Πολυδιάστατοι πίνακες Πέρασμα παραμέτρων σε προγράμματα C Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες:
Διαβάστε περισσότεραΚλείδωμα αρχείων (file locking) Προγραμματισμός II 1
Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα
Διαβάστε περισσότεραΜη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1
Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 lalis@inf.uth.gr Μπλοκάρισμα διεργασίας Μια διεργασία μπλοκάρει όταν καλεί λειτουργίες συστήματος που δεν μπορεί να ολοκληρωθούν
Διαβάστε περισσότεραΠίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"
Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό
Διαβάστε περισσότεραΔιαδικαστικός Προγραμματισμός
Ενότητα 11: Αρχεία κειμένου Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότεραΔιαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 2 η Εργαστηριακή Άσκηση: Διαχείριση Διεργασιών και Διαδιεργασιακή Επικοινωνία Λειτουργικά
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 14 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 1ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; Στα μαθηματικά και στη φυσική συχνά έχουμε
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C
ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΛειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο
Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο 2018-2019 Άσκηση 1 Φροντιστήριο: 05/10/2018 Παράδοση: 18/10/2018 Υλοποίηση Linux C Shell ΤΑ : shevtsov(shevtsov@csd.uoc.gr) Ώρες Γραφείου : Δευτέρα 14:00-16:00
Διαβάστε περισσότεραΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() Επικοινωνία διεργασιών signals, sockets και client/server, shared memory Συγχρονισμός
Διαβάστε περισσότεραΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C
ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C C Χατζηκυριάκου Γιώργος ΑΜ:1047 1 ΔΟΥΛΕΥΟΝΤΑΣ ΜΕ ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ ΣΤΗΝ C Mερός Α Πρόλογος Το κείμενο αυτό θα ασχοληθεί με την εγγραφή,ανάγνωση καθώς και με την εκτύπωση αρχείων κειμένου
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Αλφαριθμητικά και Αρχεία Αλφαριθμητικά (strings) Αρχεία (files) τα βασικά στοιχεία Αλφαριθμητικά της C Συμβολοσειρές (= ακολουθίες
Διαβάστε περισσότεραΘέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας
Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας Το επίπεδο προτεραιότητας µιας διεργασίας µπορεί να αλλάξει µε χρήση της συνάρτησης nice. Κάθε διεργασία διαθέτει µια τιµή που καλείται
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αλφαριθμητικά Αλφαριθμητικά (strings) Ένα αλφαριθμητικό είναι μια ακολουθία αλφαβητικών
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Διαχείριση
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΕνότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»
Ενισχυτική διδασκαλία διδακτικές ενότητες αλγοριθμικής και εισαγωγής στον προγραμματισμό Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C» διδάσκων: χρήστος σκουρλάς, cskourlas@teiath.gr
Διαβάστε περισσότεραΚεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)
Κεφάλαιο 3.1,3.3-3.4: Συναρτήσεις I (Διάλεξη 11) 11-1 Μη-Δομημένος Προγραμματισμός Το πρόγραμμα στα αριστερά δεν είναι Αρθρωτό (δεν έχει σωστή δομή). Όλη η λειτουργικότητα ορίζεται μέσα στην main. Το αποτέλεσμα
Διαβάστε περισσότεραΠρογραµµατισµός 2 The shell
Προγραµµατισµός 2 The shell 1 CLI vs GUI! CLI (Command Line Interface) Μεγαλύτερη ευελιξία και ταχύτητα Πιο εύκολο να γίνουν πολύπλοκες λειτουργίες. find. -mtime -2 -name '*.txt' -exec sed -i.bak 's/hi/bye/g'
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C
ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει
Διαβάστε περισσότεραΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)
ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) Αρχείο είναι μια συλλογή δεδομένων του ίδιου τύπου. Ενα αρχείο αποθηκεύεται στην περιφερειακή μνήμη (σκληρό δίσκο, δισκέττα). Τα αρχεία είναι μόνιμα. Τα δεδομένα
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην
Διαβάστε περισσότεραιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #5 εκτέλεση υπό συνθήκη 1 Σπύρος Λάλης Ροή εκτέλεσης Μέχρι στιγμής η ροή εκτέλεσης του κώδικα είναι αυστηρά γραμμική Οι εντολές που γράφουμε στον κώδικα μας εκτελούνται μια προς
Διαβάστε περισσότεραΠρογραμματισμό για ΗΜΥ
ΕΠΛ 34: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πίνακες εικτών (Pointers Arrays) Θέματα ιάλεξης Στην ενότητα
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 8: Αρχεία και Δομές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΠρογραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός
Διαβάστε περισσότεραΑρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)
Διαχείριση Αρχείων Αρχεία Για να είναι δυνατή η επεξεργασία μεγάλου αριθμού δεδομένων τα δεδομένα είναι αποθηκευμένα σε ψηφιακά μέσα κατάλληλα οργανωμένα. Η αποθήκευση γίνεται σε αρχεία. Πολλά προγράμματα
Διαβάστε περισσότεραΑρχεία. Προγραμματισμός II 1
Αρχεία Προγραμματισμός II 1 ais@inf.uth.gr Μόνιμη αποθήκευση δεδομένων Οι μεταβλητές και δομές δεδομένων ενός προγράμματος υπάρχουν στην μνήμη του Η/Υ Χάνονται όταν τερματιστεί το πρόγραμμα ή σβήσει ο
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΜετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου
Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & Άνοιγμα αρχείου μέσα από τo SPIM, διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη (Διάλεξη 3) 1 Μετατροπή χαρακτήρων ASCII σε ακέραιο Ο πιο κάτω κώδικας
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C
ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον
Διαβάστε περισσότεραΕνότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»
Ενισχυτική διδασκαλία διδακτικές ενότητες αλγοριθμικής και εισαγωγής στον προγραμματισμό Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C» διδάσκων: χρήστος σκουρλάς, cskourlas@teiath.gr
Διαβάστε περισσότεραΧρονοδρομολογητής Κυκλικής Επαναφοράς
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων 4 η Εργαστηριακή Άσκηση: Χρονοδρομολογητής Κυκλικής Επαναφοράς Λειτουργικά Συστήματα Υπολογιστών
Διαβάστε περισσότεραΑρχεία. Προγραμματισμός II 1
Αρχεία Προγραμματισμός II 1 ais@inf.uth.gr Αποθήκευση δεδομένων Οι μεταβλητές και δομές δεδομένων ενός προγράμματος υπάρχουν στην μνήμη του Η/Υ Χάνονται όταν τερματιστεί το πρόγραμμα ή σβήσει ο Η/Υ (πιθανώς
Διαβάστε περισσότεραΣυμβολοσειρές Ορίσματα στη main()
Εργαστήριο 7 ο Συμβολοσειρές Ορίσματα στη main() Σκοπός του παρόντος εργαστηρίου είναι η εξοικείωση μας με τις συμβολοσειρές στην ANSI C καθώς και με την χρήση ορισμάτων στην συνάρτηση main(). Θεωρία Συμβολοσειρά
Διαβάστε περισσότεραΗ πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης
Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται
Διαβάστε περισσότεραΕργαστήριο ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ & ΚΑΤΑΛΟΓΩΝ ΣΤΟ UNIX. Εισαγωγή
Εισαγωγή Εργαστήριο 2 ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ & ΚΑΤΑΛΟΓΩΝ ΣΤΟ UNIX Συνεχίζουμε την εργαστηριακή μελέτη των Λειτουργικών Συστημάτων εξετάζοντας τις δομές των αρχείων και καταλόγων και τη διαχείρισή τους στο
Διαβάστε περισσότεραΕισαγωγή στο περιβάλλον προγραμματισμού του εργαστηρίου
1 Εισαγωγή στο περιβάλλον προγραμματισμού του εργαστηρίου Λειτουργικά Συστήματα 7ο εξάμηνο ΣΗΜΜΥ ακ έτος 2016-2017 http://wwwcslabecentuagr/courses/os CSLab National Technical University of Athens Εργαστήριο
Διαβάστε περισσότεραFile Management και I/O στο UNIX
File Management και I/O στο UNIX Λειτουργικά Συστήματα Ντίρλης Νικόλαος- ΕΤΥ Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πάτρας Συστήματα 2013-2014 1 Εισαγωγή Ένα από τα βασικά στοιχεία της επιστήμης της Πληροφορικής
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 19η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικές διαφορές της C από τη C++. Απλά παραδείγματα προγραμμάτων C.
Διαβάστε περισσότεραΔιάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ
Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal
Διαβάστε περισσότεραΙ Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)
Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct) Αρχεία Το γενικό πλαίσιο: data stream (ρεύμα δεδομένων). stdin, stdout, stderr data stream ως προς τα δεδομένα βάσει προσπέλασης
Διαβάστε περισσότεραΠαρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.
Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Ενότητα 13 Αρχεία Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αρχεία Συλλογές δεδομένων Αποθηκεύονται στην περιφερειακή μνήμη π.χ. σκληρός
Διαβάστε περισσότεραΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 1 Διδάσκουσα καθηγήτρια: Ε.Κατσίρη 1 Υπεύθυνος εργαστηρίου: Α.Γαζής 2 Για την εγγραφή στο μάθημα, στην πλατφόρμα του Eclass -1/2- ΒΗΜΑ 1 Σύνδεση στο eclass BHMA 2 Eπιλογή:
Διαβάστε περισσότεραΚεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία
Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Τα δεδομένα που επεξεργαζόμαστε, καθώς και ο κώδικας που τρέχουμε, βρίσκονται αποθηκευμένα στη μνήμη RAM (Random Access Memory) του υπολογιστή. Τα δεδομένα
Διαβάστε περισσότεραΔομές Ανακυκλώσεων. Εντολές ελέγχου - 1
Δομές Ανακυκλώσεων Σε όλες τις γλώσσες προγραμματισμού, οι εντολές ανακυκλώσεων επιτρέπουν να επαναλαμβάνουμε ένα σύνολο εντολών, περισσότερες από μια φορές και μέχρι να επιτευχθεί μια ορισμένη συνθήκη
Διαβάστε περισσότερα