Ньюкасл Коннекшн - Newcastle Connection
Newcastle Connection (или UNIX United ) была подсистема программного обеспечения с начала 1980 - х годов , которые могут быть добавлены к каждому из набора взаимосвязанных UNIX-подобных систем для построения распределенной системы. Последняя была бы функционально неотличима как на уровне пользователя, так и на уровне системы от традиционной системы UNIX. Она стала предтечей Sun Microsystems " Network File System (NFS). Название происходит от исследовательской группы Университета Ньюкасла под руководством Брайана Рэнделла , которая разработала его.
Термин «UNIX United» описывает схему объединения полных файловых систем участвующих UNIX-машин; «Newcastle Connection» описывает нижележащий коммуникационный уровень, который делает это возможным. Система UNIX United, построенная с помощью Newcastle Connection, функционально неотличима от централизованной системы UNIX на уровне системных вызовов.
По сути, понятие «родительский каталог» было повторно интерпретировано в корне файловой системы, где оно изначально не имело особого значения, как означающее «этот каталог находится на удаленной машине», аналогично последующему « суперкорневому ( Unix) ".
UNIX United
Напоминаем, что типичное одиночное дерево каталогов UNIX может напоминать:
- /
- дом
- Брайан (текущий каталог '.')
- а
- б
- Брайан (текущий каталог '.')
- дом
UNIX United действует как дополнительный уровень выше /
корневого. Если машина-пример названа «unix1», общая схема UNIX United с дополнительной второй машиной «unix2» будет выглядеть так:
- / ..
- unix1
- дом
- Брайан (текущий каталог '.')
- а
- б
- Брайан (текущий каталог '.')
- дом
- unix2
- дом
- Брайан
- б
- c
- Брайан
- дом
- unix1
Если мы хотим , чтобы скопировать файл a
из «unix1» в «unix2» , чтобы сидеть рядом с файлами b
и c
иллюстративные эквивалентные команды могут быть:
cp /home/brian/a /../unix2/home/brian/a
cp a /../unix2/home/brian/a
( cd /../unix2/home/brian ; cp /../unix1/home/brian/a a )
Внутренности
Это не потребовало изменений в ядре UNIX. Скорее, он работал в пользовательском пространстве, используя модифицированную версию стандартной библиотеки C того времени, которая была способна распознавать эту новую семантику. В первом приближении это должно было распознавать имена путей, начинающиеся с "/.."
. Соответствие перенаправит такую ссылку на новое программное обеспечение, которое затем будет использовать удаленные вызовы процедур на удаленную машину. Все остальные пути будут просто передаваться в локальное ядро, как обычно. (Если текущий рабочий каталог сам по себе удален, это необходимо учитывать.)
Однако требовалось, чтобы все программное обеспечение, предназначенное для его использования, включая оболочки, команду «cp» и т. Д., Было повторно связано с этой новой библиотекой.
Продолжая один из предыдущих примеров, команда «cp» пытается, как и ожидалось, открыть два файла:
open("a", ...)
open("/../unix2/home/brian/a", ...)
Предполагая, что команда была повторно связана с исправленной C-библиотекой, первое open()
происходит как обычно в локальной системе. Второй, однако, перенаправляется в программу "Newcastle Connection" из-за того, что имя файла начинается с " /..
".
Портативность
Первоначальная реализация в Ньюкасле была для UNIX V7 на наборе компьютеров PDP-11, соединенных сетью Cambridge Ring . Последующие реализации добавили поддержку других версий UNIX (включая BSD 4.2 и System V ), сетевых технологий, протоколов и аппаратной архитектуры ( VAX , Motorola 68000 ).