→ Пошук по сайту       Увійти / Зареєструватися

Символические связи

В некоторых файловых системах (например, в некоторых системах UNIX) символическая связь дает пользователю возможность создать имя файла или каталога, которое при его использовании транслируется ОС в другое имя файла или каталога. Это простой метод неявного совместного использования файлов или содержимого каталога — путем создания перекрестной ссылки между разными каталогами в обычно иерархической структуре каталогов.

Диспетчер объектов NT реализует объект, называемый объект-символическая связь (symbolic link object), который выполняет аналогичные функции для имен объектов в его пространстве объектов. При ссылке на имя объекта - символической связи диспетчер объектов проходит по своему пространству имен до тех пор, пока не дойдет до этого объекта. Далее он просматривает содержимое символической связи и находит строку, которую подставляет вместо имени этой связи. Затем вновь производится поиск имени, Символическая связь может встретиться в любом месте строки-имени объекта. На рис. 3-6 показаны атрибуты и сервисы для типа объектов "символическая связь".

Объект-символическая связь

Рис. 3-6. Объект-символическая связь.


Один из примеров использования символических связей исполнительной системой NT — это трансляция имен устройств MS-DOS в имена объектов Windows NT. В MS-DOS гибкие и жесткие диски обозначаются как А:, В:, С: и т. д. Более того, пользователь может добавить новые имена устройств или псевдоустройств, например, создав дополнительные разделы на жестком диске или назначив имя устройства сетевому каталогу на удаленной машине. После их создания эти имена должны быть видимы всем процессам в системе.

Подсистема Win32 делает буквенные обозначения дисков защищенными глобальными данными, помещая их в пространство имен диспетчера объектов. Специально для этой цели создается особый каталог объектов, как показано ниже:

При создании пользователем или приложением нового обозначения диска подсистема Win32 добавляет еще один объект в каталог объектов \DosDevices. Однако объекты, представляющие настоящие физические устройства, располагаются в других местах дерева, как изображено на рисунке:

Объекты с именами А:, В:, С: и т. д. — это символические связи. Каждая из них содержит имя объекта-физического устройства, к которому относится буква. Таким образом, если пользователь Excel for Windows открывает электронную таблицу, хранящуюся в A:\budget\accounts.xls, то подсистема Win32 преобразует это имя и открывает описатель файлового объекта с именем \DosDevices\A:\budget\accounts.xls. Для поиска файлового объекта диспетчер объектов проходит по дереву имен объектов, пока не найдет объект под именем А: и не обнаружит, что он является символической связью. Он проверяет содержимое символической связи и находит в ней строку \Device\Floppy0, как показано ниже:

Диспетчер объектов берет строку, найденную внутри символической ссылки, и добавляет к ее концу остаток оригинальной строки (\Device\Floppy0 плюс \budget\accounts.xls). После этого он вновь начинает поиск файлового объекта с корня дерева.

Символические ссылки позволяют подсистемам (или другим программам) создавать для объектов исполнительной системы псевдонимы, которые подсистемы при необходимости могут изменять. Более того, подсистема может получить выигрыш в производительности, сохраняя глобальные данные, такие как имена устройств, непосредственно в исполнительной системе NT, а не в собственном адресном пространстве. Дальнейшее обсуждение вопроса производительности подсистем см. в гл. 5, "Windows и защищенные подсистемы".

загрузка...
Сторінки, близькі за змістом