ВУЗ:
Составители:
79
Механизм каналов часто используется не только программистами,
но и обычными пользователями ОС для организации конвейера команд
в случае, когда выходные данные одной команды пользователя стано-
вятся входными данными для другой команды. Так, наиболее простой
вариант канала создает оболочка Unix между программами, запускае-
мыми из командной строки, разделенными символом «|». Например, ко-
мандная строка dmesg | less создает канал от программы dmesg, выводя-
щей отладочные сообщения ядра при загрузке к программе постранич-
ного просмотра less.
Обычный канал получил развитие, результатом которого стало по-
явление именованного канала или именованного конвейера – зареги-
стрированного в системе канала (по сути – запись в каталоге файловой
системы), который разрешено использовать различным процессам или
потокам (не обязательно родственным). Реализуется это путем создания
одним, а чтения – другим процессом (потоком) файла типа FIFO с од-
ним и тем же указанным в процессах именем.
Также можно создать канал с помощью, например, команд mknod
или mkfifo и настроить gzip на сжатие того, что туда попадает:
mkfifo pipe
gzip -9 -c < pipe > out
Параллельно, в другом процессе можно выполнить:
cat file > pipe,
что приведѐт к сжатию передаваемых данных gzip-ом.
Именованный канал существует в ОС и после завершения процесса,
поэтому после окончания использования он должен быть «отсоединен»
или удален. Следует иметь в виду, что именованные каналы используют
файловую систему только для хранения имени конвейера, а данные
между процессами передаются через буфер в оперативной памяти, как и
в случае обычного канала.
Очереди сообщений. Механизм очередей сообщений (англ. queues)
в целом схож с механизмом каналов, но позволяет процессам и потокам
обмениваться структурированными сообщениями. При этом синхрони-
зация осуществляется по сообщениям, то есть процесс, пытающийся
прочитать сообщение, переводится в состояние ожидания в том случае,
если в очереди нет ни одного полного сообщения.
Следует отметить, что в распределенных системах, состоящих из
нескольких процессоров и неразделяемых блоков памяти, использова-
ние таких средств синхронизации как блокирующие переменные, сема-
форы, сигналы является непригодным. В таких системах синхронизацию
следует реализовывать только посредством обмена сообщениями.
Страницы
- « первая
- ‹ предыдущая
- …
- 77
- 78
- 79
- 80
- 81
- …
- следующая ›
- последняя »
