stringtranslate.com

GNU Херд

GNU Hurd — это набор серверов микроядер , написанных как часть GNU , для микроядра GNU Mach . Он разрабатывался с 1990 года проектом GNU из Free Software Foundation , был разработан как замена ядру Unix , [4] и выпущен как свободное программное обеспечение под лицензией GNU General Public License . Когда ядро ​​Linux оказалось жизнеспособным решением, разработка GNU Hurd замедлилась, временами переходя от застоя к возобновлению активности и интереса. [5]

Проект Hurd состоит из набора протоколов и серверных процессов (или демонов , в терминологии Unix), которые работают на микроядре GNU Mach. [4] Hurd стремится превзойти ядро ​​Unix по функциональности, безопасности и стабильности, оставаясь в значительной степени совместимым с ним. Проект GNU выбрал многосерверное микроядро [6] для операционной системы из-за предполагаемых преимуществ по сравнению с традиционной архитектурой монолитного ядра Unix , [7] точка зрения, которая отстаивалась некоторыми разработчиками в 1980-х годах. [5]

Название и логотип

В декабре 1991 года главный архитектор Hurd описал название как взаимно рекурсивную аббревиатуру : [8]

Пришло время [объяснить] значение "Hurd". "Hurd" означает "Hird of Unix-Replacing Daemons". И, затем, "Hird" означает "Hurd of Interfaces Representing Depth". Насколько мне известно, здесь мы имеем первое программное обеспечение, названное парой взаимно рекурсивных аббревиатур.

Поскольку и hurd, и hird являются омофонами английского слова herd , полное название GNU Hurd также является игрой слов herd от gnus , отражая принцип работы ядра. [9]

Логотип называется Hurd boxs и также отражает архитектуру. Логотип представляет собой граф, где узлы представляют серверы ядра Hurd, а направленные ребра — сообщения IPC . [8]

История развития

Ричард Столлман основал проект GNU в сентябре 1983 года с целью создания свободной операционной системы GNU . [10] Первоначально были написаны компоненты, необходимые для разработки ядра: редакторы , оболочка , компилятор , отладчик и т. д. К 1989 году появилась GPL , и единственным основным компонентом, в котором не хватало ядра, было ядро. [11] [12]

Разработка Hurd началась в 1990 году после заброшенной попытки создания ядра в 1986 году на основе исследовательской операционной системы TRIX , разработанной профессором Стивом Уордом и его группой в Лаборатории компьютерных наук Массачусетского технологического института (LCS). [13] По словам Томаса Бушнелла , первоначального архитектора Hurd, их первоначальный план состоял в том, чтобы адаптировать ядро ​​4.4BSD -Lite, и, оглядываясь назад, «теперь мне совершенно очевидно, что это бы блестяще удалось, и мир был бы сегодня совсем другим». [14] В 1987 году Ричард Столлман предложил использовать микроядро Mach, разработанное Ричардом Рашидом в Университете Карнеги-Меллона . Работа над этим была отложена на три года из-за неопределенности относительно того, выпустит ли CMU код Mach под подходящей лицензией. [13]

С выпуском ядра Linux в 1991 году основным пользователем пользовательских компонентов GNU вскоре стали операционные системы на основе ядра Linux ( дистрибутивы Linux ), что привело к появлению термина GNU/Linux .

Разработка Hurd продвигалась медленно. Несмотря на оптимистичное заявление Столлмана в 2002 году о том, что он предсказывает выпуск GNU/Hurd в том же году, [15] Hurd по-прежнему не считается подходящим для производственных сред. Разработка в целом не оправдала ожиданий, и все еще есть значительное количество ошибок и отсутствующих функций. [16] Это привело к более плохому продукту, чем ожидали многие, включая Столлмана. [17] В 2010 году, после двадцати лет разработки, Столлман сказал, что он «не очень оптимистичен в отношении GNU Hurd. Он делает определенный прогресс, но чтобы стать действительно лучшим, ему потребуется решить множество глубоких проблем», но добавил, что «завершение его не имеет решающего значения» для системы GNU, поскольку свободное ядро ​​уже существует ( Linux ), а завершение Hurd не решит главную оставшуюся проблему для свободной операционной системы: поддержку устройств. [18]

Проект Debian , среди прочих, работал над проектом Hurd по созданию бинарных дистрибутивов операционных систем GNU на базе Hurd для систем, совместимых с IBM PC .

После многих лет застоя разработка возобновилась в 2015 и 2016 годах, за эти два года было выпущено четыре игры [19] , но с тех пор больше их не было.

20 августа 2015 года в ходе Google Summer of Code было объявлено, что GNU Guix был портирован на GNU Hurd. [20]

Архитектура

Общая структура операционных систем на основе монолитного, микроядерного и гибридного ядра соответственно.

В отличие от большинства Unix-подобных ядер, Hurd использует архитектуру сервер-клиент , построенную на микроядре , которое отвечает за предоставление самых базовых служб ядра — координацию доступа к оборудованию : ЦП (через управление процессами и планирование ), ОЗУ (через управление памятью ) и другим различным устройствам ввода-вывода (через планирование ввода-вывода ) для звука, графики, массового хранения и т. д. Теоретически, конструкция микроядра позволила бы построить все драйверы устройств как серверы, работающие в пространстве пользователя , но сегодня большинство драйверов такого рода по-прежнему содержатся в пространстве ядра GNU Mach . [21]

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

С самого начала Hurd разрабатывался с использованием GNU Mach в качестве микроядра. Это было техническое решение, принятое Ричардом Столлманом , который считал, что это ускорит работу, сэкономив большую ее часть. Он признал, что ошибался. [23] Другие Unix-подобные системы, работающие на микроядре Mach, включают OSF/1 , Lites и MkLinux . macOS и NeXTSTEP используют гибридные ядра на основе Mach.

Другие микроядра

Начиная с 2004 года, предпринимались различные попытки перенести Hurd на более современные микроядра. Микроядро L4 было первоначальным выбором в 2004 году, но прогресс замедлился и остановился. Тем не менее, в 2005 году разработчик Hurd Нил Уолфилд закончил начальную структуру управления памятью для порта L4/Hurd, а Маркус Бринкманн перенес основные части glibc ; а именно, заставил работать код запуска процесса, позволяя программам запускаться, тем самым позволяя запускать первые пользовательские программы (тривиальные, такие как программа hello world ) на языке C.

С 2005 года Бринкманн и Уолфилд начали исследовать Coyotos как новое ядро ​​для HURD. [24] [25] В 2006 году Бринкманн встретился с Джонатаном Шапиро (главным архитектором операционной системы Coyotos), чтобы помочь и обсудить использование ядра Coyotos для GNU/Hurd. В ходе дальнейшего обсуждения разработчики HURD поняли, что Coyotos (а также другие подобные ядра) не подходят для HURD. [26]

В 2007 году разработчики Hurd Нил Уолфилд и Маркус Бринкманн дали критику архитектуры Hurd, известную как «критика», [27] и предложение о том, как может быть спроектирована будущая система, известное как «позиционный документ». [28] В 2008 году Нил Уолфилд начал работать над микроядром Viengoos как современным собственным ядром для HURD. По состоянию на 2009 год разработка Viengoos приостановлена ​​из-за нехватки времени у Уолфилда для работы над ним. [29]

В то же время другие продолжали работать над вариантом Hurd на основе Маха. [30]

Расширения Unix

В Hurd заменены или расширены ряд традиционных концепций Unix.

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

Что касается файловой системы , то подходящую программу можно назначить в качестве транслятора для одного файла или целой иерархии каталогов. Каждый доступ к переведенному файлу или файлам ниже иерархии во втором случае фактически обрабатывается программой. Например, транслятор файлов может просто перенаправить операции чтения и записи в другой файл, например, символическую ссылку Unix . Эффект монтирования Unix достигается путем настройки транслятора файловой системы (с помощью команды "settrans"). Трансляторы также могут использоваться для предоставления услуг пользователю. Например, транслятор ftpfs позволяет пользователю инкапсулировать удаленные FTP-сайты в каталог. Затем можно использовать стандартные инструменты, такие как ls , cp и rm, для управления файлами на удаленной системе. Еще более мощными трансляторами являются такие, как UnionFS , который позволяет пользователю объединять несколько каталогов в один; таким образом, перечисление объединенного каталога раскрывает содержимое всех каталогов.

Для Hurd требуется загрузчик , совместимый с мультизагрузкой , например GRUB .

Архитектура серверов

Согласно документации Debian, существует 24 сервера (18 основных серверов и 6 серверов файловой системы), названных следующим образом: [31]

Основные серверы

Файловые системы серверов

ext2fs
Транслятор файловой системы ext2 . Получает блоки диска от микроядра и отдает файлы и каталоги приложениям.
isofs
Транслятор для файловой системы ISO 9660. Транслирует блоки CD или DVD в файлы и каталоги для приложений.
нфс
См. Сетевая файловая система .
фтпфс
Транслятор файловой системы протокола передачи файлов .
storeio
Транслятор хранилища.

Серверы совместно реализуют API POSIX , причем каждый сервер реализует часть интерфейса. Например, различные серверы файловой системы реализуют вызовы файловой системы. Сервер хранения будет работать как слой-обертка, аналогичный блочному слою Linux. Эквивалент VFS Linux достигается библиотеками libdiskfs и libpager.

Дистрибутивы GNU, работающие под управлением Hurd

Debian GNU/Hurd с Xfce

Дистрибутивы GNU на базе Hurd включают в себя:

Смотрите также

Ссылки

  1. ^ "GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8 выпущены" . Получено 11 мая 2018 г. .
  2. ^ "GNU Hurd портирован на AArch64 и другие новости о Hurd". osnews.com . Получено 22 апреля 2024 г. .
  3. ^ "КОПИРОВАНИЕ - hurd/hurd.git - Hurd". Git.savannah.gnu.org . Получено 25 февраля 2019 г. .
  4. ^ ab "Что такое GNU Hurd?". GNU . Получено 2010-03-04 .
  5. ^ ab Tozzi, Christopher (2015-04-20). "30 Years On, HURD Lives: GNU Updates Open Source Unix Kernel". The VAR Guy . Архивировано из оригинала 2015-04-24.
  6. ^ "Что такое многосерверное микроядро?". GNU. 2013-04-13 . Получено 2015-08-11 .
  7. ^ "преимущества". GNU . Получено 2011-12-07 .
  8. ^ ab Vervloesem, Koen (7 июля 2010 г.). "The Hurd: GNU's quest for the perfect kernel". LWN.net . Получено 5 октября 2012 г. .
  9. ^ "GNU Hurd: Происхождение названия". GNU . Получено 2010-03-04 .
  10. ^ "История GNU". cs.stanford.edu . Получено 2024-09-03 .
  11. ^ Хиллсли, Ричард (30 июня 2010 г.). "GNU HURD: измененные видения и потерянные обещания" . Получено 1 октября 2012 г.
  12. ^ "Linux и проект GNU". GNU . 2010-01-26 . Получено 2010-03-04 .
  13. ^ ab "История GNU Hurd, 'Как это началось'". GNU . Получено 27-08-2006 .
  14. ^ Салус, Питер . "Демон, GNU и Пингвин" . Получено 2006-08-08 .
  15. ^ Рибейро, Джон (2002-03-11). «Свободное программное обеспечение видит, как GNU освобождается от Linux». PC World . Архивировано из оригинала 2016-09-22 . Получено 2012-10-05 .
  16. ^ "Статус". GNU . Получено 2010-03-04 .
  17. ^ Столлман, Ричард (2006-03-09). "Движение за свободное программное обеспечение и будущее свободы" (ogg) . Фонд свободного программного обеспечения . Загреб . Это также тот способ, который люди считали самым чистым из возможных способов проектирования ядер в 1990 году. Что ж, потребовалось много-много лет, чтобы заставить это ядро ​​работать вообще, и оно до сих пор работает не очень хорошо, и похоже, что в этой конструкции могут быть фундаментальные проблемы, о которых никто не знал в 1990 году.
    • Ричард Столлман. «Движение за свободное программное обеспечение и будущее свободы; 9 марта 2006 г.». Free Software Foundation Europe (стенограмма лекции). Архивировано из оригинала 2007-01-12.
  18. ^ Столлман, Ричард (29.07.2010). "RMS AMA". Reddit . Получено 07.12.2011 .
  19. ^ "Free Software Foundation меняет приоритеты - SD Times". SD Times . 2017-01-17 . Получено 2017-04-17 .
  20. ^ Ragkousis, Manolis (20 августа 2015 г.). "[Обновление GSoC] Портирование Guix на GNU/Hurd" (список рассылки). guix-devel . Получено 20 августа 2015 г. .
  21. ^ Кусулос, Константин (21.03.2007). "Re: Драйверы устройств в Mach?". bug-hurd (Список рассылки).
  22. ^ Доппнер, Томас В. (20 декабря 2010 г.). Операционные системы в деталях: проектирование и программирование. John Wiley & Sons. стр. 160. ISBN 978-0-471-68723-8. Получено 29 ноября 2012 г.
  23. ^ Столлман, Ричард (2000-10-12). "В защиту Red Hat". Linux Today . Получено 2011-12-07 . Я беру на себя полную ответственность за техническое решение разработать ядро ​​GNU на основе Mach, решение, которое, по-видимому, и стало причиной медленной разработки. Я думал, что использование Mach ускорит работу, сэкономив нам большую часть работы, но я ошибался.
  24. ^ Шапиро, Джонатан С. (27.10.2005). "Re: Комментарий о смене ядер". l4-hurd (список рассылки).
  25. ^ Бахманн, Том (2006-07-07). "Re: seL4, L4.sec и беспорядок с койотами". l4-hurd (список рассылки).
  26. ^ "Перенос Hurd на другое микроядро". GNU Hurd . Free Software Foundation . Получено 2017-05-06 .
  27. ^ Уолфилд, Нил Х.; Бринкманн, Маркус (июль 2007 г.). «Критика многосерверной операционной системы GNU Hurd» (PDF) . GNU . Получено 07.12.2011 .
  28. ^ Уолфилд, Нил Х.; Бринкманн, Маркус (2007-01-04). "Улучшение удобства использования с помощью декомпозиции доступа и уточнения политики" (PDF) . GNU . Получено 2011-12-07 .
  29. ^ "viengoos". GNU . Получено 2010-03-04 .
  30. ^ "Что случилось с микроядрами L4/Coyotos/viengoos?". GNU . Получено 2011-01-07 .
  31. ^ "Предварительное описание пользовательского интерфейса GNU/Hurd". Debian . 10.10.1996 . Получено 04.03.2010 .
  32. ^ "GNU/Hurd - Документация". Debian. 10.10.1996 . Получено 12.07.2012 .
  33. ^ "GNU Hurd/ hurd/ running/ distrib". GNU . 2015-05-03 . Получено 2017-09-21 .
  34. ^ "GNU Hurd/ hurd/ running/ live cd". GNU . 2013-04-09 . Получено 2017-09-21 .

Внешние ссылки