Версия UNIX System V Release 4 вводит новый тип связи - мягкая связь, называемая символьной связью и реализуемая с помощью системного вызова symlink.
Символьная связь - это файл данных, содержащий имя файла, с которым предполагается установить связь. (!)Символьная связь может быть создана даже с несуществующим файлом.
При создании символьной связи образуется как новый вход в каталоге, так и новый индексный дескриптор inode. Кроме этого, резервируется отдельный блок данных для хранения полного имени файла, на который он ссылается.
Многие системные вызовы пользуются файлом символьных связей для поиска реального файла. Связанные файлы не обязательно располагаются в той же файловой системе.
Имеются три системных вызова, которые имеют отношение к символьным связям:
readlink - чтение полного имени файла или каталога, на который ссылается символьная связь. Эта информация хранится в блоке, связанном с символьной связью.
lstat - аналогичен системному вызову stat, но используется для получения информации о самой связи.
lchown - аналогичен системному вызову chown, но используется для изменения владельца самой символьной связи.
Конвейер - это средство обмена данными между процессами.
Конвейер буферизует данные, поступающие на его вход, таким образом, что процесс, читающий данные на его выходе, получает их в порядке "первый пришел - первый вышел" (FIFO).
Именованные конвейеры позволяют обмениваться данными произвольной паре процессов, т.к. каждому такому конвейеру соответствует файл на диске. Никакие данные не связываются с файлом-конвейером, но все равно в каталоге содержится запись о нем, и он имеет индексный дескриптор. В UNIX System V Release 4 конвейеры реализуются с использованием коммуникационных модулей STREAMS.
UNIX System V Release 4 реализована возможность отображать содержимое файла (или устройства) в виде последовательности байтов в виртуальное адресное пространство (ВАП) процесса. Это упрощает процедуру доступа процесса к данным.
UNIX System V Release 4 имеет массив структур vfssw [ ], каждая из которых описывает файловую систему конкретного типа, которая может быть установлена в системе. Структура vfssw состоит из четырех полей:
1.символьного имени файловой системы;
2.указателя на функцию инициализации файловой системы;
3.указателя на структуру, описывающую функции, реализующие абстрактные операции VFS в данной конкретной файловой системе;
4.флаги, которые не используются в описываемой версии UNIX.
Пример инициализированного массива структур vfssw:
Функции инициализации файловых системвызываются во время инициализации операционной системы. Эти функции ответственны за создание внутренней среды файловой системы каждого типа.
Структура vfsops, описывающая операции, которые выполняются над файловой системой, состоит из 7 полей, так как в UNIX System V Release 4 предусмотрено 7 абстрактных операций над файловой системой:
VFS_MOUNT
монтирование файловой системы,
VFS_UNMOUNT
размонтирование файловой системы,
VFS_ROOT
получение vnode для корня файловой системы,
VFS_STATVFS
получение статистики файловой системы,
VFS_SYNC
выталкивание буферов файловой системы на диск,
VFS_VGET
получение vnode по номеру дескриптора файла,
VFS_MOUNTROOT
монтирование корневой файловой системы.
Рис. 5.6. Монтирование файловых систем в VFS
Операция VFS_MOUNT выполняет традиционное для UNIX монтирование файловой системы на указанный каталог уже смонтированной файловой системы для образования общего дерева, а операция VFS_UNMOUNT отменяет монтирование.
Операция VFS_ROOT используется при разборе полного имени файла, когда встречается дескриптор vnode, который связан со смонтированной на него файловой системой. Операция VFS_ROOT помогает найти vnode, который является корнем смонтированной файловой системы.
Операция VFS_STATVFS позволяет получить независимую от типа файловой системы информацию о размере блока файловой системы, о количестве блоков и количестве свободных блоков в единицах этого размера, о максимальной длине имени файла и т.п.
Операция VFS_SYNC выталкивает содержимое буферов диска из оперативной памяти на диск.
Операция VFS_MOUNTROOT позволяет смонтировать корневую файловую систему, то есть систему, содержащую корневой каталог / общего дерева. Для указания того, какая файловая система будет монтироваться как корневая, в UNIX System V Release 4 используется переменная rootfstype, содержащая символьное имя корневой файловой системы, например "ufs".
Таким образом, в UNIX System V Release 4 одновременно в единое дерево могут быть смонтированы несколько файловых систем различных типов, поддерживающих операцию монтирования (рисунок 5.6).