Статья: файловая система BeOS Андрей Пешеходов продолжает рассматривать популярные и перспективные файловые системы. Свежая статья - о файловой системе BeOS. В материале: архитектура, реализация, алгоритмы. Скачать можно в pdf и odt.
[Прислал fresco] |
Комментарии |
Комментарии: 45
Зарегистрирован: 09.08.2006 11:29
| Статья интересная но не без недостатков. Иногда автор перевода вставляет свои комментарии не оговаривая этого, ну сложно мне представить, что Dominic Giampaolo мог использовать в качестве примера имя "Василий Пупкин" (стр 14) Это конечно не криминал но таким образом автор перевода соглашается со всеми возможными неточностями оригинала. Теперь по существу. В BFS номером inode является адрес содержащего его блока, т.е., в отличие от файловых систем Linux и UNIX вообще (исключая XFS), номер inode однозначно определяет его местоположение на диске. Уверяю автора, в ext2/ext3 (предполагаю что вообще во всех ФС мамой которых можно считать UFS) зная номер inode и имея информацию из суперблока можно однозначно определить его местоположение на диске.
Хотя может показаться, что операция балансировки дерева требовательна к вычислительным ресурсам системы — это не так, ведь перемещения данных при этом не происходит. Учим матчасть ибо перемещение данных при балансировке B-дерева происходит, подробно описывать не буду, ознакомится можно например вот тут
Сложность в том, что не существует простого способа определить, какие файлы уже имеют данный атрибут без обхода всех файлов в ФС. Возможно я невнимательно читал, но индексы тогда зачем?
Возник вопрос, в BeOS нет такого понятия как файл устройства или ссылка на файл? |
|
Комментарии: 19
Зарегистрирован: 21.08.2005 19:42
| Уверяю автора, в ext2/ext3 (предполагаю что вообще во всех ФС мамой которых можно считать UFS) зная номер inode и имея информацию из суперблока можно однозначно определить его местоположение на диске.
Ну можно, конечно. Положение таблицы inodes в каждой группе блоков фиксированное. Это понятно. Конечно, координаты inode по его номеру вычисляются дочтаточно просто. Но все таки вычисляются.
Учим матчасть ибо перемещение данных при балансировке B-дерева происходит
Не то имелось в виду. Реальное перемещение -- т.е. изменение одного или нескольких родительских узлов, происходит редко (о вероятности этого события смотрим Кнута, том 3). В целом объем избыточного ввода/вывода в B-дереве относительно plain-файла достаточно невелик. Выигрыш в производительности гораздо больше.
Возможно я невнимательно читал, но индексы тогда зачем?
Происходит однократный обход всех файлов в ФС -- при создании индекса. Суть в том, что бы не добавлять в индекс файлы с одноименным атрибутом, созданным другим приложением и, очевидно, совсем с другой целью.
Возник вопрос, в BeOS нет такого понятия как файл устройства или ссылка на файл?
Симлинк есть (см. поле char short_symlink[SHORT_SYMLINK_NAME_LENGTH]; в struct bfs_inode), девайсов нет -- это, все-таки, не UNIX. |
|
Комментарии: 45
Зарегистрирован: 09.08.2006 11:29
| В основном все понятно, однако в Вашем переводе
в отличие от файловых систем Linux и UNIX вообще (исключая XFS), номер inode однозначно определяет его местоположение на диске. На что я и указал, вычисляется он или нет не суть важно, поскольку есть взаимно однозначно соответствие номера inode и его положения на разделе. А из Вашего перевода следует, что в Unix системах это соответствие не однозначно. |
|
Комментарии: 19
Зарегистрирован: 21.08.2005 19:42
| А из Вашего перевода следует, что в Unix системах это соответствие не однозначно.
Принято, поправлю. |
Комментарии доступны только авторизованным пользователям, авторизуйтесь или зарегистрируйтесь на сайте здесь
|