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