Операционная система Linux. Докторов А.Е. - 8 стр.

UptoLike

Составители: 

открытии с помощью системного вызова ореn(). После открытия имено-
ванный pipe ведет себя точно так же, как и неименованный. Для дальней-
шей работы с ним применяются системные вызовы read(), write() и close().
Время существования FIFO в адресном пространстве ядра операционной
системы, как и в случае с именованным, не может превышать время жизни
последнего из использовавших его процессов. Когда все процессы, рабо-
тающие с FIFO, закрывают все файловые дескрипторы, ассоциированные
с ним, система освобождает ресурсы, выделенные под FIFO. Вся непрочи-
танная информация теряется. В то же время файлметка остается на диске
и может использоваться для новой реальной организации FIFO в даль-
нейшем. Прототип системного вызова
#include <sys/stat.h>
#include <unistd.h>
int mknod(char *path, int mode, int dev);
Далее рассмотрены не все возможные варианты задания параметров
mknod, а только те из них, которые соответствуют применению для FIFO.
Параметр dev является несущественным в этой ситуации, и мы будем все-
гда задавать его равным 0. Параметр path является указателем на строку,
содержащую полное или относительное имя файла, который будет являть-
ся меткой FIFO на диске. Для успешного создания FIFO файла с таким
именем перед вызовом существовать не должно. Параметр mode уста-
навливает атрибуты прав доступа различных категорий пользователей
к FIFO. Этот параметр задается как результат побитовой операции «или»
значения S_IFIFO, указывающего, что системный вызов должен создать
FIFO, и некоторой суммы следующих восьмеричных значений:
0400 разрешено чтение для пользователя, создавшего FIFO;
0200 разрешена запись для пользователя, создавшего FIFO;
0040 разрешено чтение для группы пользователя, создавшего FIFO;
0020 разрешена запись для группы пользователя, создавшего FIFO;
0004 разрешено чтение для всех остальных пользователей;
0002 разрешена запись для всех остальных пользователей.
34
ЛАБОРАТОРНАЯ РАБОТА2
Файлы и файловая система
В UNIX [3] файлы организованы в виде древовидной структуры, на-
зываемой файловой системой. Каждый файл имеет имя, определяющее
его расположение в дереве файловой системы. Корнем этого дерева явля-
ется корневой каталог (root directory), имеющий имя «/». Имена всех ос-
тальных файлов содержат путь список каталогов (ветвей), которые не-
обходимо пройти, чтобы достичь файла. В UNIX все доступное пользова-
телям файловое пространство объединено в единое дерево каталогов, кор-
нем которого является каталог «/».Таким образом, полное имя любого
файла начинается с «/» и не содержит идентификатора устройства, на ко-
тором он фактически хранится. Имя файла является атрибутом файловой
системы, а не набора некоторых данных на диске, который не имеет име-
ни как такового. Каждый файл имеет связанные с ним метаданные
(хранящиеся в индексных дескрипторах - inode), содержащие все харак-
теристики файла и позволяющие операционной системе выполнять опера-
ции, заказанные прикладной задачей: открыть файл, прочитать или за-
писать данные, создать или удалить файл. В частности, метаданные со-
держат указатели на дисковые блоки хранения данных файла. Имя файла
в файловой системе является указателем на его метаданные, в то время
как метаданные не содержат указателя на имя файла. Такая архитектура
позволяет одному файлу иметь несколько имен в файловой системе. Име-
на жестко связаны с метаданными и, соответственно, с данными файла,
в то время как сам файл существует независимо от того, как его называют
в файловой системе. Такая связь имени файла с его данными называется
жесткой связью. По определению жесткие связи указывают на один и тот
же индексный дескриптор inode. Жесткая связь является естественной
формой связи имени файла с его метаданными и не принадлежит к особо-
му типу файла. Особым типом файла является символьная связь, позво-
ляющая косвенно адресовать файл. В отличие от жесткой связи, символи-
ческая связь адресует файл, который, в свою очередь, ссылается на другой
7