В последней главе рассматривались внутренние структуры данных для файловой системы и алгоритмы работы с ними. В этой главе речь пойдет о системных функциях для работы с файловой системой с использованием понятий, введенных в предыдущей главе. Рассматриваются системные функции, обеспечивающие обращение к существующим файлам, такие как 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 показана взаимосвязь между системными функциями и алгоритмами, описанными ранее. Системные функции классифицируются на несколько категорий, хотя некоторые из функций присутствуют более, чем в одной категории:
HIVE: All information for read only. Please respect copyright! |