31.Псевдоустройства.Доступ к драйверу.Major number,minor number.Top half,bottom half.Файловый интерфейс.
Драйверы устройств обеспечивают интерфейс между ядром UNIX и аппаратной частью компьютера.Благодаря этому от остальной части ядра скрыты архитектурные особенности компьютера, что значительно упрощает перенос системы и поддержку работы различных перефирифных устройств В UNIX сушществует большоне количество драйверов.
Драйверы различаются по возможностям,которые они представляют,а также потому,каким образом обеспечивается к ним доступ и управление.Три основные типа драйверов.
Символьные драйверы :Обеспечивает работу с устройствами с побайтовым доступом и обменом данными.К таким устройствам можно отнести модемы,терминалы,принтеры,манипуляторы мышь.Блочные драйверы : Этот тип драйверов позволяет производить обмен данными с устир-вами фиксированными порциями (блоками).Например,для жесткого диска данные можно адресовать и,читать только секторами,размер которых составляет несколько сотен байтов.Для блочных драйверов обычно используется буферный кэш,который и является интерфейсом между фаловой системой и устройством. ФДрайверы низкого уровня (raw drivers): Этот тип интерфейса блочных драйверов позволяет производить обмен данными с блочными устройствами,минуя буферный кэш.Это в частности означает,что устройство может быть адресовано элементами,размер которых не совпадает с размером блока.Обмен данными происходит независимо от файловой подсистемы и буферного кэша.
Не все драйвера служат для работы с физическими устройствами,такими как сетевой адаптер,последовательны порт или мониор.Часть драйверов служат для предоставления различных услуг ядра прикладным процессам и не имеют непосредственног отношения к аппаратной части компьютера.Эти драйверы называются программными или драйверами псевдойстройств.Драйвер устройства адресуется старшим номером(major number) устройства.
Среди атрибутов специальгых файлов устройств,которые обеспечивают пользовательский интерфейс доступа к перифирии компьютера,это число присутсвует наряду с другим,также имеющим отношение к драйверу –младшим номером (minor number).
Младший номер интерпретируется самим драйвером.Пример-драйвер диска.Младший номер указывает к какому разделу требуется обеспечить доступ. Доступ к драйверу осуществляется ядром через специальную структуру данных (коммутатор устройств),каждый эллемент котрой содержит указатели на соответсвующие функции драйвера-точки входа.Старшее число,по существу,является указателем на элемент коммутатора устройств,обеспечивая,тем самым,ядру возможность вызова необходимой функции указанного драйвера.Если функция вызывается в процессе обработки прерывания,то она имеет контекст прерывания-специальный вид системного контекста.Различия в контексте и причинах вызова тех или иных функций драйвера позволяют представить драйвер устройства состоящим из двухчастей верхней части (top half) и
Нижней части (bottom half).Функции верхней части драйвера имеют синхронный характер,т.е вызываются по определеннным запросам прикладного процесса и выполняются в его контексте.
Вызов функций нижней части носит асинхронный характер.
Файловый интерфейс: Интерфейс независимой или виртуальной файловой системы,обеспечивает унифицированный интерфейс работы с различными типами физических файловых систем(ufs,s5fs) имеющих разные внутренние структуры и возможности.При этом подходе используется унифицированный формат метаданных активных файлов,которые хранятся в памяти и не зависят от конкретной реализации файловой системы.Эти объекты получили название виртуальных индексных дескрипторов или vnode.Для каждого vnode определен набор абстрактных операций,которые реализованы функциями реальных файловых систем.
|