Технологический обзор

События Файловой системы API являются новой технологией, доступной в OS X v10.5 и позже. С ним можно зарегистрироваться для уведомления о любых изменениях, происходящих с иерархией каталогов или содержанием этого.

Механизм событий файловой системы состоит из трех частей: код ядра, передающий необработанное уведомление о событии пространству пользователя через специальное устройство (также используемый центром внимания), демон, фильтрующий этот поток и отсылающий уведомления и персистентную базу данных, хранящую запись всех изменений в течение времени.

Когда Ваше приложение зарегистрируется для уведомления, демон событий файловой системы отправит уведомление каждый раз когда любой файл в наблюдаемых изменениях иерархии каталогов. Это также отправит уведомление, если сам каталог будет изменен (например, если его изменение полномочий или новый файл добавляются). Важный момент для устранения - то, что гранулярность уведомлений на уровне каталога. Это говорит Вам только, что что-то в каталоге изменило, но не говорит Вам, что изменилось.

В дополнение к разрушающимся уведомлениям для изменений в многократных файлах в единственное, уведомление на каталог демон событий файловой системы также объединяет многократные уведомления на данном каталоге, если они происходят за короткий период времени. Вы будете всегда получать по крайней мере одно уведомление после того, как будет внесено последнее изменение. Кроме того, временная гранулярность может быть столь крупной или как штраф, как Вы желаете; когда Вы регистрируетесь для уведомления, Вы выбираете минимальное время между событиями.

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

Когда определенный файл изменяется, события API файловой системы также не разработаны для обнаружения. В таких целях kqueues механизм является более надлежащим.

События API файловой системы разработаны для того, чтобы пассивно контролировать большое дерево файлов для изменений. Самое очевидное использование для этой технологии для программного обеспечения для резервного копирования. Действительно, события API файловой системы обеспечивает основу для резервной технологии Apple.

Другое хорошее использование для событий API файловой системы предоставляет гарантии непротиворечивости для приложений, хранящих данные как свободный набор, содержащий проект и десятки или сотни связанных файлов, потенциально рассеянных через диск — Studio DVD Pro, например. Когда один из связанных файлов изменяется другим приложением, Ваше приложение должно знать об этом так, чтобы это могло выбрать, как включить изменение в проект.

Конечно, это использование может также потенциально быть удовлетворено с помощью kqueues, но события файловой системы обеспечивают удобство способности видеть изменения, произошедшие даже, в то время как Ваше приложение не работало, который может сделать непротиворечивость, проверяющую проще, когда Ваше приложение открывает проект первоначально.