Файлы устройств

Файлы устройств – это специальные файлы, имена их находятся в файловой системе, т.е. имеется каталог, а в нем записи. Примеры таких файлов:

/dev/tty00

/dev/lp

/dev/discs

/dev/scsi

/dev/null – пустое устройство

/dev/zero – нулевое устройство

/dev/full – полное устройство

Эти записи определяют устройства, но соответствующее inode для устройства по сути представляют точку входа в драйвер этого устройства, и когда через этот информационный узел выполняется какое-либо действие, то ОС запускает на выполнение соответствующую функцию драйвера.

Файлы разделяются на блочные устройства и на символьные устройства. Файловые системы могут находиться только на блочном устройстве. Блочные устройства могут иметь связанные с ними символьные устройства для обеспечения быстрого и прямого доступа.

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

Последовательность действий по передаче данных следующая:

1) системный вызов чтения/записи (read/write) обращается к индексному дескриптору файла обычным образом;

2) ОС проверяет соответствующее поле в индексном дескрипторе и определяет является ли устройство блочным или символьным и извлекает старший номер устройства;

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

В inode хранится и младший номер устройства, который позволяет уточнить доступ к конкретному устройству, если используется один драйвер для работы с несколькими устройствами (при использовании одного порта).

#include <fentl.h>

int main()

{

int i,fd;

fd=open(“/dev/tty00”,O_WRONLY);

for (i=0; i<100; i++)

write(fd,’x’,1);

close(fd);}

Процессы


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: