Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Общая информация Устройства

Устройства

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

Процессы обычно получают доступ к устройствам посредством специальных файлов в файловой системе. Операции ввода/вывода для этих файлов обрабатываются резидентными программными модулями ядра, называемыми драйверами устройств. Доступ к большинству сетевого коммуникационного оборудования возможен лишь через средства межпроцессного взаимодействия, а не через специальные файлы в пространстве имен файловой системы, поскольку интерфейс непосредственного сокета (raw-socket) предоставляет более естественный интерфейс, чем специальный файл.

Специальные файлы устройств создаются в файловой системе dev своими драйверами устройств, когда оборудование впервые обнаружено. Системный вызов ioctl манипулирует параметрами лежащего в основе устройства специального файла. Доступные для осуществления операции отличаются для каждого устройства. Этот системный вызов позволяет получить доступ к особым характеристикам устройств, не перекрывая семантику других системных вызовов. Например, в звуковой карте существует ioctl для установки формата кодирования аудиоданных вместо наличия специализированной или измененной версии write.


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

Сейчас 64 гостей онлайн