Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Общая информация Иерархия файлов

Иерархия файлов

Файлы иерархически организованы в каталогах. Каталог является разновидностью файла, но в отличие от обычных файлов каталог имеет структуру, наложенную на него системой. Процесс может прочесть каталог как обычный файл, но лишь ядру разрешается изменять каталог. Каталоги создаются с помощью системного вызова mkdir и удаляются с помощью системного вызова rmdir. До 4.2BSD системные вызовы mkdir и rmdir были реализованы через ряд системных вызовов link и unlink. Для добавления системных вызовов, явно создающих и удаляющих каталоги, было три причины.

1. Операция должна быть неделимой. Если в системе случится аварийный отказ, каталог не должен остаться сделанным наполовину, что могло бы случиться при использовании ряда операций link.

2. При запуске сетевой файловой системы создание и удаление файлов и каталогов должны быть неделимыми (атомарными), чтобы их можно было сериализовать.

3. При поддержке файловых систем, не относящихся к UNIX, таких, как файловая система NT, на других разделах диска эти файловые системы могут не поддерживать операции link. Хотя другие файловые системы могут поддерживать концепцию каталогов, они, возможно, не создают и не удаляют каталоги с помощью ссылок, как делает файловая система UNIX. Соответственно они могли бы создавать и удалять каталоги, лишь если были бы представлены явные запросы создания и удаления каталогов.

Системный вызов chown устанавливает владельца и группу файла, a chmod изменяет атрибуты прав доступа. Stat с именем файла может использоваться для получения свойств файла. Системные вызовы fchown, fchmod и fstat применяются для тех же операций с дескриптором, а не с именем файла. Системный вызов rename можно использовать, чтобы дать файлу в файловой системе новое имя, заменив одно из старых имен файла. Как и операции добавления и удаления каталогов, системный вызов rename был добавлен к 4.2BSD для обеспечения атомарности изменения имени в локальной файловой системе. Позже он явно пригодился для экспортирования операций переименования в другие файловые системы и по сети.

Системный вызов truncate был добавлен к 4.2BSD, чтобы обеспечить установку произвольного размера файла. Таким образом, название truncate неудачно, поскольку оно используется как для укорочения, так и для удлинения файла. Файлы могут содержать в себе дыры. Дыры являются пустыми областями в линейном пространстве файла, в которое никогда не записывались данные. Процесс может создать эти дыры, поместив указатель за текущим концом файла и что-то записав. В качестве альтернативы дыра может быть добавлена в конец файла путем использования системного вызова truncate для увеличения его размера. При чтении дыры интерпретируются системой как заполненные нулевыми байтами.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 57 гостей онлайн