Page 65 - 2578
P. 65

синхронізування  кількох  процесів.  Розв’язується  ця  задача
                            засобами  ОС,  тому  що  власне  самі  процеси  у  рамцях
                            багатозадачної ОС діяли б неефективно і навіть небезпечно.
                                До  засобів  міжпроцесної  взаємодії,  притаманних  усім
                            версіям UNIX, належать:
                                 сигнали;
                                 канали;
                                 іменовані канали FIFO;
                                 повідомлення та їх черги;
                                 семафори;
                                 розподілювана пам’ять;
                                 сокети.
                                Використання        сигналів       обмежується       сферою
                            повідомлень       про     помилки,      але     вони     можуть
                            використовуватись      і    для    синхронізування     процесів,
                            передавання простіших команд від одного процесу до іншого.
                            Сигнали  є  надто  ресурсоємні,  малоінформативні  й  їхню
                            кількість обмежено.
                                Канали може бути зорганізовано при роботі у командному
                            рядку shell:
                                                       cat myfile |wc.
                                Стандартне виведення програми cat(1), яка виводить вміст
                            файла  myfile,  передається  на  стандартний  ввід  програми
                            wc(1), яка, у свою чергу, підраховує кількість рядків, слів та
                            символів. Як наслідок на екран монітора буде виведено дані:
                                                        12  45  260,
                                що  означає  кількість  рядків,  слів  та  символів  у  файлі
                            myfile.  Отже,  два  процеси  обмінялися  даними.  Програмний
                            канал  забезпечує  односпрямоване  передавання  даних  поміж
                            двома процесами.
                                Для створення каналу використовується системний виклик
                            pipe(2)

                                                           64
   60   61   62   63   64   65   66   67   68   69   70