|
Разработка VFS 3ОС
|
Что в данном документе
Данный документ описывает начальную постановку задачи и техническое задание по
разработке VFS 3ОС.
Общие положения
- данные хранятся в обычных файлах и могут быть прочитаны/записаны из других
ОС
- классами данных считается то, что в обычных системах попадает под определение
"формата": plain-тексты, RTF-тексты, рисунки BMP, рисунки JPEG, видео
ASF, видео MPEG4, архивы ZIP, архивы RAR, документы PDF и т. д.
- объекты данных - это конкретные экземпляры классов данных
- объекты данных могут располагаться в отдельных файлах данных (по одному в каждом
файле) или ВНУТРИ ДРУГИХ ОБЪЕКТОВ
- программы и служебная информация (реестр) могут храниться как угодно - в отдельных
файлах, вместе - в нескольких больших файлах или в одном большом файле
Задача
- выработать такую концепцию VFS, которая позволит унифицировано манипулировать
любыми объектами со стороны 3ОС, не нарушая целостности существующих ФС и учитывающую,
что данные могут быть изменены из других ОС
- реализовать VFS в коде
- реализовать в коде то, что перечислено в разделе "Тестовый стенд"
Технические задание
- выработать единую систему именования/адресации накопителей, разделов, каталогов,
файлов, и объектов внутри файлов
- система именования/адресации не должна нарушать существующие правила именования
используемых файловых систем, а являться надстройкой над ними
- использование различных преобразователей данных (архиваторов, шифровальщиков,
фильтров и пр.) должно быть прозрачным для прикладных программ и обрабатываться
на уровне VFS
- на логическом уровне VFS должна состоять из контейнеров объектов, потоков и
кодеков
- корнем VFS является контейнер, содержащий объекты дисковых разделов и отображаемых
на ФС устройств
- раздел диска (драйвер ФС) также реализуется в виде контейнера, содержащего каталоги
и файлы
- файлы являются контейнерами, содержащими один или несколько конечных объектов
данных
- прикладные программы могут обращаться к любому контейнеру VFS на любом уровне,
если позволяют права пользователя/процесса
- возможные операции над контейнером определяются прикладной средой: обращение
к абстрактному контейнеру, определение конкретного класса контейнера (через RTTI),
получение списка поддерживаемых операций (версии интерфейса) и т. д.
- прикладная среда должна быть создана до реализации VFS в коде
- первый этап разработки VFS считается законченным, когда как появляется возможность
выполнения тестового задания
Тестовый стенд
- драйвер одной или нескольких ФС (предлагается: FAT12/16/32, CDFS)
- контейнер объектов одного или нескольких простых (конечных) форматов данных
(предлагается: plain-text, BMP)
- прикладная программа, работающая с простыми данными (предлагается: редактор
plain-text, редактор BMP)
- преобразователь данных (предлагается: кодек ZIP)
- групповой контейнер объектов (предлагается: каталог ФС, архив ZIP)
Тестовое задание
- чтение и запись данных, обрабатываемых прикладной программой, при помощи контейнеров
объектов
- программа должна суметь получить данные из ЛЮБОГО контейнера, содержащего объекты
данного класса (формата)
- редактор plain-text должна читать/писать его из текстового файла в каталоге
или текстового файла в архиве; каталог и архив могут быть расположены в любом
разделе на любом накопителе из числа участвующих в тестировании
- аналогично для редактора BMP