В последней главе рассматривались внутренние структуры данных для файловой системы и алгоритмы работы с ними. В этой главе речь пойдет о системных функциях для работы с файловой системой с использованием понятий, введенных в предыдущей главе. Рассматриваются системные функции, обеспечивающие обращение к существующим файлам, такие как open, read, write, lseek и close, затем функции создания новых файлов, а именно, creat и mknod, и, наконец, функции для работы с индексом или для передвижения по файловой системе: chdir, chroot, chown, stat и fstat. Исследуются более сложные системные функции: pipe и dup имеют важное значение для реализации каналов в shell'е; mount и umount расширяют видимое для пользователя дерево файловых систем; link и unlink изменяют иерархическую структуру файловой системы. Затем дается представление об абстракциях, связанных с файловой системой, в отношении поддержки различных файловых систем, подчиняющихся стандартным интерфейсам. В последнем разделе главы речь пойдет о сопровождении файловой системы. Глава знакомит с тремя структурами данных ядра: таблицей файлов, в которой каждая запись связана с одним из открытых в системе файлов, таблицей пользовательских дескрипторов файлов, в которой каждая запись связана с файловым дескриптором, известным процессу, и таблицей монтирования, в которой содержится информация по каждой активной файловой системе.
Функции для работы с файловой системой
Возвращают дескрипторы файла | Используют алгоритм namei | Назначают индексы | Работают с атрибутами файла | Ввод- вывод из файла | Работают со структурой файловых систем | Управление деревьями |
open | open | stat | | | | | |
creat | creat | link | creat | chown | read | | |
dup | chdir | unlink | mknod | chmod | write | mount | chdir |
pipe | chroot | mknod | link | stat | lseek | umount | chown |
close | chown | mount | unlink | | | | |
| chmod | umount | | | | | |
Алгоритмы работы с файловой системой на нижнем уровне
|
---|
namei | ialloc ifree | alloc free bmap | |
iget iput bmap | |
Алгоритмы работы с буферами |
| getblk brelse bread breada bwrite | |
Рисунок 5.1. Функции для работы с файловой системой и их связь с другими алгоритмами
На Рисунке 5.1 показана взаимосвязь между системными функциями и алгоритмами, описанными ранее. Системные функции классифицируются на несколько категорий, хотя некоторые из функций присутствуют более, чем в одной категории:
- Системные функции, возвращающие дескрипторы файлов для использования другими системными функциями;
- Системные функции, использующие алгоритм namei для анализа имени пути поиска;
- Системные функции, назначающие и освобождающие индекс с использованием алгоритмов ialloc и ifree;
- Системные функции, устанавливающие или изменяющие атрибуты файла;
- Системные функции, позволяющие процессу производить ввод-вывод данных с использованием алгоритмов alloc, free и алгоритмов выделения буфера;
- Системные функции, изменяющие структуру файловой системы;
- Системные функции, позволяющие процессу изменять собственное представление о структуре дерева файловой системы.
Предыдущая глава || Оглавление || Следующая глава