DragonFly - операции устройств ввода-вывода

Новая модель устройств ввода-вывода

Оригинал: DragonFly - I/O Device Operations
Перевод: Валерий Винник, 05.01.18

Ввод-вывод значительно легче привести в порядок, чем VFS, потому что большинство устройств уже работают асинхронно, несмотря на полусинхронный API. Рассматриваемая модель ввода-вывода предполагает три крупных направления работы:

  1. Для представления данных ввода-вывода будут использованы диапазоны объектов виртуальной памяти, а не системных или пользовательских адресов. Это позволит устройствам ввода-вывода работать совершенно независимо от порождающих их пользовательских процессов.
  2. Ввод-вывод устройства будет контролироваться системой "порт/работа_с_сообщениями" (см. http://www.dragonflybsd.org/goals/messaging.cgi).
  3. Ввод-вывод устройства обычно будет переводиться в последовательный режим одного или нескольких потоков. Каждое устройство обычно будет контролироваться своим собственным потоком, но некоторые особо мощные устройства могут контролироваться несколькими потоками (до одного на процессор). Контролируемые несколькими потоками устройства не должны конфликтовать из-за ресурсов. Например, стек ТСР может обрабатываться несколькими потоками, выдавая результат на некоторое число mod N целевых портов, таким образом обеспечивая многопоточную (следовательно, и на нескольких процессорах) работу без конфликтов.

Как часть этой работы, в сообщениях ввода-вывода будет скорее использовано плоское 64-байтовое смещение, нежели блочные числа.

Заметьте, что сообщения могут обрабатываться устройством синхронно. Не допускайте ошибки, полагая, что сообщения всегда формируют поток устройства последовательно, поскольку это не так. Подробности см. на http://www.dragonflybsd.org/goals/messaging.cgi.

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


Примечания переводчика:
VFS (Virtual file system или Virtual filesystem switch) - программная функция, позволяющая ядру операционной системы собирать информацию о файловой системе, не зная её типа.

Обновлено: 12.03.2015