Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Обзор системы ввода/вывода Управление дескрипторами и службы дескрипторов

Управление дескрипторами и службы дескрипторов

Для процессов пользователя весь ввод/вывод осуществляется через дескрипторы. В данной статье описывается, как ядро управляет дескрипторами и как оно предоставляет службы дескрипторов, такие, как блокировка и опрос.

Системные вызовы, ссылающиеся на открытые файлы, принимают в качестве аргумента для указания файла дескриптор файла. Дескриптор файла используется ядром в качестве индекса в таблице дескрипторов для текущего процесса (хранящегося в структуре filedesc, подструктуре структуры процесса), чтобы найти элемент файла (file entry), или структуру файла. Взаимоотношения этих структур данных показаны ниже.

Элемент файла предусматривает тип файла и указатель на нижележащий объект для дескриптора. В FreeBSD поддерживаются шесть типов объектов.

· Для файлов данных элемент файла указывает на структуру vnode, которая ссылается на подструктуру, содержащую специфическую для файловой системы информацию. Специальные файлы не содержат размещенных на диске блоков данных; они управляются файловой системой специальных устройств, которая вызывает для выполнения запросов ввода/вывода для них соответствующие драйверы.

· Для доступа к межпроцессному взаимодействию, включая сетевые возможности, элемент файла FreeBSD может ссылаться на сокет.

· Для высокоскоростной локальной коммуникации без использования имен элемент файла будет ссылаться на канал (pipe). Ранее системы FreeBSD использовали для локальной коммуникации сокеты, но для каналов была добавлена оптимизированная поддержка для повышения их производительности.

· Для высокоскоростной локальной коммуникации с использованием имен элемент файла будет ссылаться на файл fifo. Как и в случае с каналами, для повышения производительности была добавлена оптимизированная поддержка fifo.

· Для систем, имеющих аппаратную криптографическую поддержку, дескриптор может предоставить непосредственный доступ к соответствующему оборудованию.

· Для предоставления уведомлений о событиях ядра дескриптор будет ссылаться на kqueue.

Система виртуальной памяти поддерживает отображение файлов в адресное пространство процесса. В этом случае дескриптор файла должен ссылаться на vnode, который будет частично или полностью отображен в адресное пространство пользователя.


Похожие:
Еще по теме:
Советуем прочитать:

復縁きっかけ のテレビ出演
Сейчас 62 гостей онлайн

Реклама на сайте:

Ru за 195 рублей: домен.