|  | Разработка 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