Читайте также: |
|
В NTFS каждая единица информации, связанная с файлом, включая его имя, владельца, отметки времени, содержимое и т. д., представляется как атрибут файла (атрибут объекта). Каждый атрибут состоит из одного потока (stream), т. е. простой последовательности байтов. Эта обобщенная схема позволяет легко добавлять к файлу новые атрибуты (и соответственно новые потоки). Поскольку данные файла — это "просто еще один атрибут" и можно добавлять новые атрибуты, файлы NTFS (и каталоги) могут содержать несколько потоков данных.
У файла NTFS есть один поток данных по умолчанию, не имеющий имени. Приложение может создавать дополнительные именованные потоки и обращаться к ним по именам. Во избежание изменений функций ввода-вывода интерфейса прикладных программ (application programming interface, API) Win32, которым имя файла передается как строковый аргумент, разработчики NTFS прибегли к синтаксическому трюку, чтобы предоставить приложениям доступ к нескольким потокам данных в файле. Так как двоеточие (:) — это зарезервированный символ, оно может служить разделителем между именем файла и именем потока данных, как показано ниже:
myfile.dat:stream2
Для каждого потока отдельно поддерживаются: выделенный размер (объем зарезервированного для него дискового пространства), фактический размер (сколько байт из зарезервированного пространства использовано вызывающей программой) и длина действительных данных (какая часть потока была инициализирована). Кроме того, каждый поток имеет отдельный файловый замок, используемый для блокировки фрагментов потока и обеспечения параллельного доступа. Чтобы сократить объем обработки, поддерживается совместное использование на уровне файлов, а не потоков.
Один из примеров применения нескольких потоков данных в NTFS — это хранение данных, созданных в системах Apple Macintosh. Эти системы используют два потока на файл: один для хранения данных, а другой для хранения ресурсов, таких как тип файла и значок, используемый для представления файла. Так как NTFS допускает множественные потоки данных, то один пользователь Macintosh может скопировать целую папку Macintosh (аналог каталога) на сервер Windows NT, а другой скопировать ее с сервера без потери информации о ресурсах. Другие приложения также могут пользоваться несколькими потоками данных. Например, утилита резервного копирования может использовать дополнительный поток данных для хранения особых отметок времени. Утилита архивирования может реализовать иерархическое хранилище, в котором файлы с датой более ранней, чем некоторая заданная, или не используемые в тече-
ние некоторого периода времени, перемещались бы на ленту. Такая утилита могла бы скопировать файл на ленту, установить размер потока данных по умолчанию равным 0 и добавить новый поток данных, содержащий имя и местоположение ленты, на которой хранится файл.
Дата добавления: 2015-07-10; просмотров: 125 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Диски и файлы большого объема | | | Многоуровневая модель драйвера |