Системные вызовы для управления каталогами
Чтобы увидеть, как работает вызов link, рассмотрим ситуацию, показанную на рис.
1.19, а. У каждого из двух пользователей с именами ast и jim есть собственные каталоги, в которых имеется ряд файлов. Если ast выполнит программу, содержащую системный вызовlink("/usr/jim/memo", "/usr/ast/note");
то файл memo в каталоге jim теперь будет входить в каталог ast под именем note. После этого /usr/jim/memo и /usr/ast/note будут ссылаться на один и тот же файл. Попутно следует заметить, что место, где хранятся каталоги пользователей — /usr, /user, /home или какое-нибудь другое, определяет местный системный администратор.
Возможно, станет понятнее, что именно делает link, если разобраться в том, как он работает. Каждый файл в UNIX имеет свой уникальный номер — идентификатор, или i-номер.
Этот i-номер является единственным для каждого файла индексом в таблице i-узлов (i-nodes). Каждый i-узел (i-node или inode) хранит информацию о том, кто является владельцем файла, где расположены его блоки на диске и т. д. Каталог — это просто файл, содержащий набор пар (i-номер, ASCII-имя). В первой версии UNIX каждый элемент каталога занимал 16 байт: 2 байта для i-номера и 14 байт для имени. Сейчас для поддержки длинных имен файлов требуется более сложная структура, но концептуально каталог по-прежнему является набором пар (i-номер, ASCII-имя). На рис. 1.19 у файла mail имеется i-номер 16 и т. д. Системный вызов link просто создает новый элемент каталога, возможно, с новым именем, используя i-номер существующего файла. На рис. 1.19, б один и тот же i-номер (70) имеется у двух элементов, которые таким образом ссылаются на один и тот же файл. Если позже с помощью системного вызова unlink одна из этих записей будет удалена, то вторая останется нетронутой. Если будут удалены обе записи, UNIX увидит, что записей для файла не существует (поле в i-узле отслеживает количество указывающих на данный файл элементов в каталогах), и удалит файл с диска. Рис. 1.19. Два каталога: а — перед созданием ссылки на файл /usr/jim/memo в каталоге ast; б — после создания ссылки |
Как уже упоминалось, системный вызов mount позволяет объединять в одну две файловые системы. Обычная ситуация такова: на разделе (или подразделе) жесткого диска находится корневая файловая система, содержащая двоичные (исполняемые) версии общих команд и другие интенсивно используемые файлы, а пользовательские файлы находятся на другом разделе (или подразделе). Затем пользователь может вставить USB-диск с файлами для чтения.
При помощи системного вызова mount файловая система USB-диска может быть подключена к корневой файловой системе (рис.
1.20). В языке C типичный оператор, выполняющий подключение («монтирование») файловой системы, выглядит так:mount("/dev/sdb0", "/mnt", 0);
где первый параметр — это имя блочного специального файла для USB-устройства 0, второй параметр — место в дереве, куда будет происходить подключение, а третий параметр сообщает, будет ли файловая система подключена для использования в режиме чтения и записи или только чтения.
Рис. 1.20. Файловая система: a — до вызова mount; б —после вызова mount |
После выполнения системного вызова mount для доступа к файлу на устройстве 0 можно использовать путь к нему из корневого или рабочего каталога, не обращая внимания на то, на каком устройстве он находится. Практически к любому месту дерева может быть подключено второе, третье и четвертое устройство. Вызов mount позволяет включать сменные носители в единую интегрированную файловую структуру, не обращая внимания на то, на каком устройстве находятся файлы. Хотя в этом примере фигурирует компакт-диск, жесткие диски или их части (часто называемые разделами — partition) также могут быть подключены этим способом. Аналогично могут быть подключены и внешние жесткие диски или флеш-накопители. Когда подключение файловой системы больше не требуется, она может быть отключена с помощью системного вызова umount.
1.6.4.
Еще по теме Системные вызовы для управления каталогами:
- I. 1. СИСТЕМНЫЙ ПОДХОД КАК ИНСТРУМЕНТ ДЛЯ ПОСТРОЕНИЯ СИСТЕМНЫХ ОПИСАНИЙ
- Психологическая системность в управлении.
- Психологическая системность в управлении.
- Чудо, связанное с каталогом «Nightingale-Conant»
- I. СИСТЕМНЫЕ ОПИСАНИЯ - ГЛАВНЫЙ РЕЗУЛЬТАТ СИСТЕМНОГО ПОДХОДА В ПСИХОЛОГИИ
- § 45 Меры к охранению открывшегося наследства. – Опись. – Вызов наследников. – Утверждение в правах наследства. – Срок на явку наследников и вступление явившихся. – Особые правила для торгового сословия.
- Психология личности целостна, системна (принцип целостности, системности).
- ВЫЗОВ ВРАЧА
- СПТ откликается на вызов обстоятельств
- Быстрый вызов желаемого
- Бросьте себе вызов