Современные операционные системы

Современные операционные системы
Что такое операционная система / Системные вызовы для управления каталогами

Системные вызовы для управления каталогами




В этом разделе мы рассмотрим некоторые системные вызовы, относящиеся скорее к каталогам или к файловой системе в целом, чем к отдельным файлам, как в предыдущем разделе. Первые два вызова — mkdir и rmdir — соответственно создают и удаляют пустые каталоги. Следующий вызов — link. Он позволяет одному и тому же файлу появляться под двумя или более именами, зачастую в разных каталогах. Этот вызов обычно используется, когда несколько программистов, работающих в одной команде, должны совместно использовать один и тот же файл. Тогда этот файл может появиться у каждого из них в собственном каталоге, возможно, под различными именами. Совместное использование файла отличается от предоставления каждому представителю команды личной копии; наличие общего доступа к файлу означает, что изменения, которые вносятся любым из представителей, тут же становятся видимыми другим — поскольку ими используется один и тот же файл. А при создании копии файла последующие изменения одной копии не влияют на другие.

Чтобы увидеть, как работает вызов link, рассмотрим ситуацию, показанную на рис. 1.19, а. У каждого из двух пользователей с именами ast и jim есть свои собственные каталоги, в которых имеется ряд файлов. Если ast выполнит программу, содержащую системный вызов linkC"/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-узле отслеживает количество указывающих на данный файл элементов в каталогах), и удалит файл с диска.

Как уже упоминалось, системный вызов mount позволяет объединять в одну две файловые системы. Обычная ситуация такова: на жестком диске находится корневая файловая система, содержащая двоичные (исполняемые) версии общих команд и другие интенсивно используемые файлы. Пользователь может вставить компакт-диск с файлами в привод компакт-дисков.

При помощи системного вызова mount файловая система компакт-диска может быть подключена к корневой файловой системе, как показано на рис 1.20. В языке С типичный оператор, выполняющий подключение («монтирование») файловой системы, выглядит так: mountCVdev/fdO". Vmnt". 0):

где первый параметр — это имя блочного специального файла для устройства, содержащего подключаемую файловую систему, второй параметр — это место в дереве, куда будет происходить подключение, а третий параметр сообщает, будет ли файловая система подключена для использования в режиме чтения-записи или только чтения.

После выполнения системного вызова mount для доступа к файлу на устройстве 0 можно использовать путь к нему из корневого или рабочего каталога, не обращая внимания на то, на каком устройстве он находится. Фактически к любому месту дерева может быть подключено второе, третье и четвертое устройство. Вызов mount позволяет включать сменные носители в единую интегрированную файловую структуру, не обращая внимания на то, на каком устройстве фактически находятся файлы. Хотя в этом примере фигурирует компакт-диск, жесткие диски или их части (часто называемые разделами — partition) также могут быть подключены этим способом. Аналогично могут быть подключены и внешние жесткие диски или флэш-накопители.. Когда подключение файловой системы больше не требуется, она может быть отключена с помощью системного вызова umount. Салат с сельдереем, окороком и пармезаном



Полное описание: Системные вызовы для управления каталогами




С этим описанием рассматриваются следующие темы:


Файловая система
Другое важное понятие в UNIX — смонтированная файловая система. Практически все персональные компьютеры оснащены одним и более приводами оптических дисков, в которые могут вставляться компакт-диски или диски DVD. У компьютеров, как правило, есть USB-порты, к которым могут быть подключена USB-память (фактически это твердотельные устройства, заменяющие дисковые накопители), а некоторые компьютеры имеют приводы гибких дисков или подключенные к ним внешние жесткие диски. Чтобы предоставить удобный с ... Читать

Системные вызовы для управления файлами
Многие системные вызовы имеют отношение к файловой системе. В этом разделе будут рассмотрены вызовы, работающие с отдельными файлами, а в следующем разделе — те вызовы, которые оперируют каталогами или всей файловой системой в целом. Чтобы прочитать данные из файла или записать их в файл, сначала его необходимо открыть с помощью системного вызова open. Для данного вызова необходимо указать имя открываемого файла (с указанием абсолютного пути либо пути относительно рабочего каталога) и код ORDONL ... Читать

Разные системные вызовы
Помимо описанных выше, существуют также и другие разновидности системных вызовов. Здесь будут рассмотрены только четыре из них. Системный вызов chdir изменяет текущий рабочий каталог. После вызова chdi г С"/usr/ast/test"): при открытии файла xyz будет открыт файл /usr/ast/test/xyz. Использование понятия рабочего каталога избавляет от необходимости постоянно набирать длинные абсолютные пути файлов.

Файлы
Другим ключевым понятием, поддерживаемым практически всеми операционными системами, является файловая система. Как отмечалось ранее, основная функция операционной системы — скрыть специфику дисков и других устройств ввода-вывода и предоставить программисту удобную и понятную абстрактную модель, состоящую из независимых от устройств файлов. Вполне очевидно, что для создания, удаления, чтения и записи файлов понадобятся системные вызовы. Перед тем как файл будет готов к чтению, он должен быть найд ... Читать

Системные вызовы
Мы выяснили, что операционные системы выполняют две основные функции: предоставляют абстракции пользовательским программам и управляют ресурсами компьютера. В основном взаимодействие пользовательских программ и операционной системы касается первой функции, взять, к примеру, операции с файлами: создание, запись, чтение и удаление. А управление же ресурсами компьютера проходит большей частью незаметно для пользователей и осуществляется в автоматическом режиме. Так что интерфейс между пользовательс ... Читать