Ньюкасл Коннекшн - 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

Если мы хотим , чтобы скопировать файл 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 ).

Рекомендации