The design of the UNIX Operating System 83 страница




Основы операционных систем 120

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

 

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

 

Кооперация процессов при работе с файлами

 

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

 

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

 

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

 

Рассмотрим вначале грубый подход, то есть временный захват пользовательским процессом файла или записи (части файла между указанными позициями).

 

Системный вызов, позволяющий установить и проверить блокировки на файл, является неотъемлемым атрибутом современных многопользовательских ОС. В принципе, было бы логично связать синхрониза-цию доступа к файлу как к единому целому с системным вызовом open (т. е., например, открытие файла в режиме записи или обновления могло бы означать его монопольную блокировку соответствующим про-цессом, а открытие в режиме чтения - совместную блокировку). Так поступают во многих операционных системах (начиная с ОС Multics). В ОС Unix это не так, что имеет исторические причины.

 

В первой версии системы Unix, разработанной Томпсоном и Ричи, механизм захвата файла отсутствовал. Применялся очень простой подход к обеспечению параллельного (от нескольких процессов) доступа к файлам: система позволяла любому числу процессов одновременно открывать один и тот же файл в лю-бом режиме (чтения, записи или обновления) и не предпринимала никаких синхронизационных дейст-вий. Вся ответственность за корректность совместной обработки файла ложилась на использующие его процессы, и система даже не предоставляла каких-либо особых средств для синхронизации доступа про-цессов к файлу. Однако впоследствии для того, чтобы повысить привлекательность системы для коммер-ческих пользователей, работающих с базами данных, в версию V системы были включены механизмы захвата файла и записи, базирующиеся на системном вызове fcntl.


Дата добавления: 2021-01-21; просмотров: 114; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!