Все о моделировании в Компас-3D LT
   Главная Статьи Файлы Форум Ссылки Категории новостей
December 21 2024 11:49:48   
Навигация
Главная
Статьи
Файлы
FAQ
Форум
Ссылки
Категории новостей
Обратная связь
Фото галерея
Поиск
Разное
Карта Сайта
Популярные статьи
Что необходимо ... 65535
4.12.1 Професси... 34422
Учимся удалять!... 32315
Примеры, синони... 23621
Просмотр готовы... 22917
Декартовы коорд... 22628
FAST (методика ... 21660
содержание - се... 20968
Просмотр готовы... 19696
Работа с инстру... 15138
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

Пользователей: 9,955
новичок: Logyattella
Друзья сайта
Ramblers Top100
Рейтинг@Mail.ru

Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ по Delphi
Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog
5.12.1 Системная функция pipе
Синтаксис вызова функции создания канала:
pipe(fdptr);
где fdptr — указатель на массив из двух целых переменных, в котором будут храниться два дескриптора файла для чтения из канала и для записи в канал. Поскольку ядро реализует каналы внутри файловой системы и поскольку канал не существует до того, как его будут использовать, ядро должно при создании канала назначить ему индекс. Оно также назначает для канала пару пользовательских дескрипторов и соответствующие им записи в таблице файлов: один из дескрипторов для чтения из канала, а другой для записи в канал. Поскольку ядро пользуется таблицей файлов, интерфейс для вызова функций read, write и др. согласуется с интерфейсом для обычных файлов. В результате процессам нет надобности знать, ведут ли они чтение или запись в обычный файл или в канал.
алгоритм pipe
входная информация: отсутствует
выходная информация:
дескриптор файла для чтения
дескриптор файла для записи
{
назначить новый индекс из устройства канала (алгоритм ialloc);
выделить одну запись в таблице файлов для чтения, одну — для переписи;
инициализировать записи в таблице файлов таким образом, чтобы они указывали на новый индекс;
выделить один пользовательский дескриптор файла для чтения, один — для записи, проинициализировать их таким образом, чтобы они указывали на соответствующие точки входа в таблице файлов;
установить значение счетчика ссылок в индексе равным 2;
установить значение счетчика числа процессов, производящих чтение, и процессов, производящих запись, равным 1;
}
Рисунок 5.16. Алгоритм создания каналов (непоименованных)
На Рисунке 5.16 показан алгоритм создания непоименованных каналов. Ядро назначает индекс для канала из файловой системы, обозначенной как «устройство канала», используя алгоритм ialloc. Устройство канала — это именно та файловая система, из которой ядро может назначать каналам индексы и выделять блоки для данных. Администраторы системы указывают устройство канала при конфигурировании системы и эти устройства могут совпадать у разных файловых систем. Пока канал активен, ядро не может переназначить индекс канала и информационные блоки канала другому файлу.
Затем ядро выделяет в таблице файлов две записи, соответствующие дескрипторам для чтения и записи в канал, и корректирует «бухгалтерскую» информацию в копии индекса в памяти. В каждой из выделенных записей в таблице файлов хранится информация о том, сколько экземпляров канала открыто для чтения или записи (первоначально 1), а счетчик ссылок в индексе указывает, сколько раз канал был «открыт» (первоначально 2 — по одному для каждой записи таблицы файлов). Наконец, в индексе записываются смещения в байтах внутри канала до места, где будет начинаться следующая операция записи или чтения. Благодаря сохранению этих смещений в индексе имеется возможность производить доступ к данным в канале в порядке их поступления в канал («первым пришел первым вышел»); этот момент является особенностью каналов, поскольку для обычных файлов смещения хранятся в таблице файлов. Процессы не могут менять эти смещения с помощью системной функции lseek и поэтому произвольный доступ к данным канала невозможен.
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

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

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

Пароль



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

Забыли пароль?
Запросите новый здесь.
Случайные статьи
Выводы 2
9.5 УПРАЖНЕНИЯ
8.1.1 Алгоритм
«Он думает, что…»
Глава 2. Беспровод...
Управление програм...
4.7 ВЫДЕЛЕНИЕ ДИС...
4.12.3.4 Структурн...
Использование един...
6.2.2 Страницы и т...
Типовые настройки ...
NavCompanion
Коллекция схем
13.4 РАСПРЕДЕЛЕННА...
Как правильно уста...
Глава вторая. СИЛ...
2.6.3. Сжатие данных
Метод доступа в се...
ГЛАВА 4. ВНУТРЕННЕ...
4.3. Другие способ...
Цена до 350 долларов
Синтаксис
Глава 12. Fortuna...
Недопустимые комби...
Как правильно наст...
8.3.5 Поддержание ...
Замечания
Перепроектирование...
9.2.3.1 Обработка...
8.6. Управление ко...
12.1 ПРОБЛЕМЫ, СВ...
1.3.1 Файловая сис...
2.7 Сети PDH и SO...
Код Хемминга
7.3.5. Жизненные ц...
Может это сущность ?
4.1 Структура и ха...
10.4.2 Анализ потоков
Разъем данных
2.2.2. Понимание п...
Мини-чат
Вам необходимо залогиниться.

Нет присланных сообщений.
Copyright © 2009