ВУЗ:
Составители:
файл. В результате, последний файл адресуется символической связью
косвенно. Данные файла, являющегося символической связью, содержат
только имя целевого файла.
Если к файловой системе UNIX монтируется файловая система,
в которой структуры файла и его метаданных существенно отличаются от
UNIX, то используется виртуальная файловая система, основанная на
представлении метаданных файла в виде, сходном с традиционной семан-
тикой UNIX. Интерфейсом работы с файлами является vnode (от virtual
inode - виртуальный индексный дескриптор). Метаданные всех активных
файлов (файлов, на которые ссылаются один или более процессов) пред-
ставлены в памяти в виде in-core inode, в качестве которых в виртуальной
файловой системе выступают vnode. Структура данных vnode одинакова
для всех файлов, независимо от типа реальной файловой системы, где
фактически располагается файл. Данные vnode содержат информацию, не-
обходимую для работы виртуальной файловой системы, а также неизмен-
ные характеристики файла, например, такие как тип файла.
UNIX поддерживает три типа прав доступа для владельца, группы
и прочих пользователей: на чтение (read, обозначается символом на r), за-
пись (write, обозначается символом w) и на выполнение (execute, обозна-
чается символом х). Права доступа могут быть изменены только владель-
цем файла или администратором системы. Для этого используется коман-
да chmod (рассмотрите самостоятельно).
Замечание: проверку результата работы команды chmod можно про-
вести только в режиме «обычного» пользователя, так как для администра-
тора атрибуты доступа не проверяются.
К дополнительным атрибутам относятся: г позволяет пользователю
удалять только файлы, которыми он владеет или имеет права на запись
(используется для каталогов), s - установить права доступа запущенного
процесса. К сожалению, так как система PuppyRus Jeans исходно предна-
значена для работы только в режиме администратора, наблюдать особен-
ности этих атрибутов невозможно.
сы, у которых этот pipe открыт для записи, то системный вызов блокиру-
ется и ждет появления информации. Если таких процессов нет, он вернет
значение 0 без блокировки процесса. Эта особенность приводит к необхо-
димости закрытия файлового дескриптора, ассоциированного с выходным
концом канала, в процессе, который будет использовать pipe для чтения
(close(fd[l]) в процессеребенке, см. пример). Аналогичной особенностью
поведения при отсутствии процессов, у которых pipe открыт для чтения,
обладает и системный вызов write(), с чем связана необходимость закры-
тия файлового дескриптора, ассоциированного с входным концом канала,
в процессе, который будет использовать pipe для записи (close(fd[0])
в процессеродителе в той же программе).
Задание: напишите программу для определения в используемой
операционной системе размера канала. Не забудьте, что при попытке за-
писи в канал, в котором нет места, системный вызов write завершится с
ошибкой.
5. Межпроцессное взаимодействие через канал FIFO.
Для организации потокового взаимодействия любых процессов (а не
только родственных, как pipe) в операционной системе UNIX применяется
средство связи, получившее название FIFO (First Input First Output) или
именованный pipe. FIFO во всем подобен каналу pipe, за одним исключе-
нием: данные о расположении FIFO в адресном пространстве ядра и его
состоянии процессы могут получать не через родственные связи, а через
файловую систему. Для этого при создании именованного канала на диске
заводится файл специального типа, обращаясь к которому процессы могут
получить интересующую их информацию. Для создания FIFO использует-
ся системный вызов mknod() или существующая в некоторых версиях
UNIX функция mkfifo().
Следует отметить, что при их работе не происходит действительного
выделения области адресного пространства операционной системы под
именованный pipe, а только заводится файлметка, существование кото-
рой позволяет осуществить реальную организацию FIFO в памяти при его
33
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »