Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий пакетным режимом работы с квант...
Диплом - база данных поставщиков на Delphi (MS Sql Server)+ Пояснительна...
Моделирование информационно-поисковой библиографической системы на gpss ...

Каналы и файлы FIFO
Каналы и файлы FIFO — это элементы системы, представляющие потоки, функционирующие по принципу «первым вошел, первым вышел». Их основные отличия между собой заключаются в методе создания. Файл FIFO создается путем вызова mknod, после чего он может открываться и использоваться любым процессом, знающим его имя и обладающим соответствующими полномочиями.

Также может иметь смысл заглянуть на сайт eco-sklad.ru, ведь именно там можно узнать много нового на тему http://www.eco-sklad.ru/index.php?id=27. Тема экспертиза стеллажей может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт eco-sklad.ru, и тема экспертиза стеллажей начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема экспертиза стеллажей очень подробно представлена на сайте eco-sklad.ru. Трудно найти более детальное освещение темы экспертиза стеллажей чем это сделано на сайте eco-sklad.ru. Спасибо сайту eco-sklad.ru за такое доскональное преподнесение темы экспертиза стеллажей.



Он продолжает существовать до тех пор, пока не будет удален принудительно. Канал создается вызовом pipe, который возвращает дескрипторы чтения и записи. Процесс, создавший канал,

имеет возможность передавать эти дескрипторы своим потомкам через вызов fork, таким образом разделяя между ними канал. У одного канала может быть несколько получателей и отправителей данных.1 После того как у канала не остается ни одного активного читающего или пишущего процесса, ядро автоматически удаляет его.



Операции ввода-вывода для файлов FIFO и канал очень схожи. Одни процессы добавляют данные в конец элемента, в то время как процессы-получатели извлекают данные из его начала. После прочтения данных происходит их удаление из конвейера, после чего канал оказывается недоступным даже для других получателей. Ядром определен параметр PIPE_BUF (равный по умолчанию 5 120 байт), который ограничивает объем данных, хранящихся внутри конвейера. Если запись информации приводит к переполнению файла FIFO или канала, читающий процесс будет заблокирован до тех пор, пока из элемента не будет удалено достаточное количество данных (при помощи их считывания). Если процесс попытается за один прием произвести запись данных большего объема, чем значение PIPE_BUF, ядро не сумеет гарантировать неделимость операции записи. В этом случае данные могут оказаться перемешаны с информацией, записанной другими процессами.
Чтение из файла FIFO отличается немногим.


Если запрашиваемый размер данных оказывается большим, чем текущий объем элемента, ядро прочтет тот объем информации, который содержится в нем, и возвратит процессу количество считанных байтов. Если элемент в текущий момент не содержит данных, читающий процесс будет заблокирован до тех пор, пока другой процесс не произведет запись в канал. Флаг
0_NDELAY


(устанавливаемый через вызов open для файлов FIFO или fcntl) изменяет режим работы канала или файла FIFO на неблокирующий. В этом случае чтение и запись завершатся в любом случае без приостановки работы процессов, при этом будет передано максимально возможное количество данных.



Канал поддерживают счетчики количества текущих читающих и пишущих процессов. После того как последний пишущий закроет канал, ядро системы разбудит все ожидающие процессы, которые смогут прочесть данные, оставшиеся в канале. После освобождения канала они получат при очередном вызове read значение 0, что будет интерпретировано ими как конец файла. После того как последний процесс-получатель закроет канал, ядро пошлет сигнал SIGPIPE всем заблокированным процессам-отправителям. Все последующие вызовы write для этого канала возвратятся с ошибкой EPIPE.


Изначальная реализация каналов использовала файловую систему. Каждому каналу присваивался индексный дескриптор и список блокировки.

Во многих вариантах системы BSD для реализации каналов были использованы сокеты (см. раздел 17.10.3). В ОС SVR4 каналы и файлы FIFO построены на STREAMS. Более подробно о них вы прочтете в разделе 17.9. Каналы в SVR4 являются двунаправленными. Они поддерживают отдельные потоки данных, передаваемые в каждом направлении. Такой вариант более подходит для большинства приложений, требующих полнодуплексного механизма взаимодействия процессов.
Опубликовал katy July 08 2015 08:23:37 · 0 Комментариев · 3228 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
TrayIcon
Язык программиров...
Calendar
FatScrollbar
Применение жадног...
Программа предназ...
Turbo Pascal for ...
Ведение справочны...
Конвертирование и...
Профессиональное ...
Delphi 2005 Секре...
DCMintry
Андрей Боровский....
Секреты программи...
Открытие Cd-ROM'a...
Добавление басса ...
С# для профессион...
Printgrid
Crystal Button
Таймер и секундомер

Топ загрузок
Приложение Клие... 100793
Delphi 7 Enterp... 98017
Converter AMR<-... 20298
GPSS World Stud... 17059
Borland C++Buil... 14239
Borland Delphi ... 10374
Turbo Pascal fo... 7390
Калькулятор [Ис... 6080
Visual Studio 2... 5228
Microsoft SQL S... 3674
Случайные статьи
Резервное копирова...
Пример: интрузивны...
Протокол RPC
Рио бет
Дешифрация отдельн...
No inherited metho...
Реализация интерфе...
Метод Фурье
Типы атрибутов
Чтение и запись зн...
0 необходимо приоб...
Из главного меню с...
Надпись
Поисковые машины и...
События Dynamic HTML
Карта END
Программирвоание: ...
Как попробовать се...
Развлечения на сай...
Отдых после трудно...
Линейная комбинаци...
Последниедва запре...
Сайдбар сайта тепе...
Оконная сигнализация
Урок 4: прерывания
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?