1 / 11

Διαφάνειες παρουσίασης #11

Διαφάνειες παρουσίασης #11. Διασωληνώσεις Σήματα Κοινή μνήμη Σηματοφορείς. διασωλήνωση. Διεργασία 1. Διεργασία 2. fd[0] fd[1]. άλλη διεργασία. Διασωληνώσεις (i). Pipes Δίοδος επικοινωνίας με δύο άκρα. Σε κάθε μια διεργασία int fd [2]; Περιγραφή

Download Presentation

Διαφάνειες παρουσίασης #11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Διαφάνειες παρουσίασης #11 Διασωληνώσεις Σήματα Κοινή μνήμη Σηματοφορείς

  2. διασωλήνωση Διεργασία1 Διεργασία2 fd[0] fd[1] άλληδιεργασία Διασωληνώσεις (i) • Pipes • Δίοδος επικοινωνίας με δύο άκρα • Σε κάθε μια διεργασία int fd [2]; • Περιγραφή fd[0] file descriptor για ανάγνωση (λήψη) fd[1] file descriptor για εγγραφή (αποστολή)

  3. Διασωληνώσεις (ii) • Δημιουργία νέας διασωλήνωσης int pipe (int fd[2]); • Ανάγνωση και εγγραφή ssize_t read (int fd, // fd[0]void * buffer, size_t size); ssize_t write (int fd, // fd[1]const void * buffer, size_t size); • Κλείσιμο int close (int fd);

  4. θυρίδα Διεργασία1 Διεργασία2 σήμα Σήματα (i) • Messages: Unix System V • Μοιάζει με "θυρίδα γραμματοκιβωτίου" • Δομή σήματος • Τύπος σήματος • Περιεχόμενο struct msgbuf { long int mtype; char mtext [MAX_MESSAGE]; };

  5. Σήματα (ii) • Δημιουργία "θυρίδας" για σήματα int msgget (key_t key, int flag); • Αποστολή σήματος int msgsnd (int msgid, const void * buf, int len, int flag); • Λήψη σήματος int msgrcv (int msgid, void * buf,int len, int mtype, int flag); • Άλλες λειτουργίες διαχείρισης int msgctl (int msgid, int cmd, ...);

  6. κοινή μνήμη Διεργασία 2 δείκτης Διεργασία 1 δείκτης μεταβλητή Κοινή μνήμη (i) • Shared memory: Unix System V • Μεταβλητές κοινές για πολλές διεργασίες

  7. Κοινή μνήμη (ii) • Δημιουργία κοινής μνήμης int shmget (key_t key, int size,int flag); • Συσχέτιση με μεταβλητή void * shmat (int shmid,void * addr, int flag); • Αποσυσχέτιση από μεταβλητή int shmdt (void * addr); • Άλλες λειτουργίες διαχείρισης int shmctl (int shmid, int cmd, ...);

  8. σηματοφορέας Διεργασία2 Διεργασία1 τιμή λειτουργία λειτουργία Σηματοφορείς (i) • Semaphores: Unix System V • Επινόηση με βάσεις στη θεωρία παράλληλων συστημάτων • Οι λειτουργίες που εφαρμόζονται στο σηματοφορέα πραγματοποιούνται στιγμιαία • Έτσι εξασφαλίζεται ότι μια μόνο διεργασία μεταβάλλει το σηματοφορέα κάθε στιγμή

  9. Σηματοφορείς (ii) • Δημιουργία σηματοφορέα int semget (key_t key, int num,int flag); • Εφαρμογή λειτουργιών σε σηματοφορείς int semop (int semid,struct sembuf * opPtr, int len); • Άλλες λειτουργίες διαχείρισης int semctl (int shmid, int num,int cmd, ...);

  10. Σηματοφορείς (iii) • Λειτουργίες σηματοφορέων struct sembuf { short sem_num; short sem_op; short sem_flg; }; • Τιμές της παραμέτρου sem_op • +n: αύξηση της τιμής του σηματοφορέα κατά n. • -n: μείωση της τιμής του σηματοφορέα κατά n.Μπλοκάρει αν η τιμή είναι μικρότερη του n. • 0: έλεγχος για μηδενική τιμή σηματοφορέα. Μπλοκάρει αν η τιμή δεν είναι ίση με 0.

  11. Σηματοφορείς (iv) • Συγχρονισμός με σηματοφορείς • Κάθε σηματοφορέας παριστάνει έναν πόρο που μπορεί να χρησιμοποιείται από nτο πολύ διεργασίες κάθε στιγμή • Η τιμή του σηματοφορέα είναι ο αριθμός των διεργασιών που επιτρέπεται ακόμα να χρησιμοποιήσουν τον πόρο (μεταξύ 0 και n) • Πριν χρησιμοποιήσει τον πόρο, κάθε διεργασία μειώνει την τιμή του σηματοφορέα • Μετά τη χρήση, κάθε διεργασία αυξάνει την τιμή του σηματοφορέα

More Related