В информатике синтетическая файловая система или псевдофайловая система — это иерархический интерфейс к нефайловым объектам, которые выглядят как обычные файлы в дереве файловой системы на основе диска или долгосрочного хранения . К этим нефайловым объектам можно получить доступ с помощью тех же системных вызовов или служебных программ, что и к обычным файлам и каталогам . Общим термином для обычных файлов и нефайловых объектов является узел .
Преимущество синтетических файловых систем заключается в том, что хорошо известная семантика файловой системы может быть повторно использована для универсального и легко реализуемого подхода к межпроцессному взаимодействию . Клиенты могут использовать такую файловую систему для выполнения простых файловых операций на своих узлах и не должны реализовывать сложные методы кодирования и передачи сообщений и другие аспекты проектирования протоколов . Для большинства операций можно использовать общие файловые утилиты, поэтому даже написание сценариев довольно просто.
Это общеизвестно, так как все является файлом , и принято считать, что оно возникло в Unix .
В мире Unix обычно есть специальная файловая система, смонтированная в /proc . Эта файловая система реализована в ядре и публикует информацию о процессах . Для каждого процесса существует каталог (названный по идентификатору процесса ), содержащий подробную информацию о процессе: статус , открытые файлы, карты памяти , монтирования и т. д.
/proc впервые появился в Unix 8th Edition, [1] и его функциональность была значительно расширена в Plan 9 от Bell Labs . [2]
Файловая система /sys в Linux дополняет /proc, предоставляя пользователю множество (не связанных с процессом) подробной информации о состоянии ядра. Более традиционные системы Unix находят эту информацию в вызовах sysctl.
ObexFS — это файловая система на основе FUSE , которая обеспечивает доступ к объектам OBEX через файловую систему. Приложения могут работать с удаленными объектами через протокол OBEX, как если бы они были просто (локальными) файлами.
В семействе операционных систем Plan 9 из Bell Labs концепция синтетической файловой системы 9P используется как общий метод IPC . В отличие от большинства других операционных систем, дизайн Plan 9 сильно распределен: в то время как в других мирах ОС существует множество (и часто больших) библиотек и фреймворков для обычных вещей, Plan 9 инкапсулирует их в файловые серверы. Самым важным преимуществом является то, что приложения могут быть намного проще, а службы работают независимо от сети и платформы — они могут находиться практически на любом хосте и платформе в сети и практически в любой сети, пока файл-сервер может быть смонтирован приложением.
Plan 9 развивает эту концепцию расширенно: большинство служб операционной системы, например, доступ к оборудованию и сетевой стек, представлены как файловые серверы. Таким образом, эти ресурсы можно использовать удаленно (например, один хост напрямую обращается к блочным устройствам или сетевым интерфейсам другого хоста) без необходимости дополнительных протоколов.
Существуют также другие реализации протокола файловой системы 9P для многих других систем и сред. [3]
Широко известно, что отладка встроенных систем или даже устройств на кристалле (SoC) — сложная задача. [ необходима цитата ] Было реализовано несколько протоколов для обеспечения прямого доступа к устройствам на кристалле, но они, как правило, являются проприетарными, сложными и трудными в использовании.
На основе 9P , сетевой файловой системы Plan 9, исследования предлагают использовать синтетические файловые системы в качестве универсальной схемы доступа к этой информации. Главное преимущество заключается в том, что 9P очень прост и поэтому его довольно легко реализовать на оборудовании, и его можно легко использовать практически в любой сети (от последовательного соединения до Интернета).
Главным аргументом в пользу использования синтетических файловых систем может быть гибкость и легкий доступ к сервисно-ориентированным архитектурам . Как только заметное количество приложений начнет использовать эту схему, общие накладные расходы (код, потребление ресурсов, работа по обслуживанию) могут быть значительно сокращены. Многие общие аргументы в пользу SOA применимы и здесь.
Аргументы против синтетических файловых систем включают тот факт, что семантика файловой системы может не подходить для всех сценариев приложений. Например, сложные удаленные вызовы процедур со многими параметрами, как правило, трудно сопоставить со схемами файловой системы, [ необходима цитата ] и может потребовать перепроектирования приложения.