Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

GNU Hurd - это мультисерверное микроядро, написанное как часть GNU . Он разрабатывается с 1990 года в рамках проекта GNU Фонда свободного программного обеспечения , разработан как замена ядра Unix [3] и выпущен как бесплатное программное обеспечение под Стандартной общественной лицензией GNU . Когда ядро Linux оказалось жизнеспособным решением, разработка GNU Hurd замедлилась, временами переходя между застоем и возобновлением активности и интереса. [4]

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

[ править ]

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

Пришло время объяснить значение слова «Херд». «Hurd» означает «Hird демонов, заменяющих Unix». И тогда «Hird» означает «Hurd of Interfaces, представляющие глубину». Насколько мне известно, мы имеем здесь первое программное обеспечение, названное парой взаимно рекурсивных сокращений.

-  Томас (затем Майкл) Бушнелл

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

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

История развития [ править ]

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

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

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

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

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

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

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

Архитектура [ править ]

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

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

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

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

Другие микроядра [ править ]

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

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

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

Тем временем другие продолжали работать над вариантом Херда Маха. [28]

Расширения Unix [ править ]

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

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

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

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

Архитектура серверов [ править ]

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

Основные серверы [ править ]

  • auth ( сервер аутентификации ): получает запросы и пароли от программ и выдает им идентификатор, который изменяет привилегии программы.
  • сбой ( аварийный сервер): обрабатывает все критические ошибки.
  • eieio (сервер перевода): TODO (см. Компьютер купил ферму )
  • exec (сервер выполнения): переводит исполняемый образ (в настоящее время поддерживаются ELF и a.out ) в исполняемый образ в памяти.
  • fifo ( переводчик FIFO ): реализует именованные каналы.
  • new-fifo (новый сервер FIFO): альтернативный сервер для именованных каналов.
  • Фирменная ссылка (переводчик твердой ссылки ): Реализует твердые ссылки - «на полпути между символической ссылкой и жесткой ссылкой ». [30]
  • fwd (прямой сервер): перенаправляет запросы на другие серверы, используемые серверами fifo и символическими ссылками.
  • hostmux (сервер мультиплексора хоста)
  • ifsock (сервер для интерфейса сокетов): помогает с адресами сокетов домена UNIX.
  • init ( сервер инициализации ): базовая загрузка и настройка системы.
  • magic ( magic server): сигнализирует о том, что поиск имени должен быть разрешен внутри процесса, если результат включает состояние процесса.
  • null (нулевой сервер): реализует / dev / null и / dev / zero.
  • pfinet (сервер pfinet): реализует семейство протоколов PF_INET.
  • pflocal (сервер pflocal): реализует сокеты домена UNIX .
  • proc (сервер процесса): назначает PID и управляет действиями на уровне процесса.
  • символическая ссылка ( переводчик символических ссылок ): реализует символические ссылки для файловых систем, которые их не поддерживают.
  • термин (терминальный сервер): терминал POSIX .
  • usermux (пользовательский мультиплексорный сервер): вызывает пользовательские переводчики.

Серверы файловой системы [ править ]

ext2fs
Ext2 файловой системы США. Он получает дисковые блоки из микроядра и передает приложениям файлы и каталоги.
isofs
Переводчик файловой системы ISO 9660 . Преобразует блоки CD или DVD в файлы и каталоги для приложений.
нфс
См. Сетевая файловая система .
ufs
Транслятор одноименной файловой системы BSD, UFS .
ftpfs
Транслятор файловой системы протокола передачи файлов .
storeio
Переводчик памяти.

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

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

Debian GNU / Hurd с Xfce4 и веб-браузером Midori

Распределения GNU на основе Hurd включают:

  • Арч Херд
  • Bee GNU / Hurd (снято с производства) [31]
  • Debian GNU / Hurd
  • Gentoo GNU Hurd (снято с производства)
  • GNU / Hurd Live CD [32] (снято с производства) [ неудачная проверка ]
  • Guix System (в разработке)

См. Также [ править ]

  • Дистрибутивы GNU
  • GNU Mach
  • GNU Linux-libre - бесплатная версия ядра Linux
  • Сравнение ядер операционных систем
  • Виртуальная машина на основе ядра (KVM)
  • Спецификация мультизагрузки

Ссылки [ править ]

  1. ^ "2016-12-18-релизы" . GNU Hurd . Проверено 18 декабря 2016 .
  2. ^ «КОПИРОВАНИЕ - hurd / hurd.git - Hurd» . Git.savannah.gnu.org . Проверено 25 февраля 2019 .
  3. ^ a b "Что такое GNU Hurd?" . GNU . Проверено 4 марта 2010 .
  4. ^ a b Тоцци, Кристофер (2015-04-20). «30 лет спустя HURD живет: GNU обновляет ядро ​​Unix с открытым исходным кодом» . Архивировано из оригинала на 2015-04-24.
  5. ^ "Что такое мультисерверное микроядро?" . Gnu.org. 2013-04-13 . Проверено 11 августа 2015 .
  6. ^ "преимущества" . GNU . Проверено 7 декабря 2011 .
  7. ^ a b Vervloesem, Коэн (7 июля 2010 г.). "The Hurd: GNU в поисках идеального ядра" . LWN.net . Проверено 5 октября 2012 года .
  8. ^ «GNU Hurd: Происхождение имени» . GNU . Проверено 4 марта 2010 .
  9. ^ Hillesley, Ричард (30 июня 2010). «GNU HURD: изменившееся видение и потерянное обещание» . Проверено 1 октября 2012 года .
  10. ^ «Linux и проект GNU» . GNU . 2010-01-26 . Проверено 4 марта 2010 .
  11. ^ a b «История GNU Hurd,« Как это начиналось » » . GNU . Проверено 27 августа 2006 .
  12. ^ Салус, Питер . «Демон, GNU и Пингвин» . Проверено 8 августа 2006 .
  13. Рибейро, Джон (11 марта 2002). «Свободное программное обеспечение видит GNU свободным от Linux» . Мир ПК . Архивировано из оригинала на 2016-09-22 . Проверено 5 октября 2012 .
  14. ^ "Статус" . GNU . Проверено 4 марта 2010 .
  15. ^ Столмен, Ричард (2006-03-09). «Движение за свободное программное обеспечение и будущее свободы» (ogg) . Фонд свободного программного обеспечения . Загреб . Выложите резюме . Это тот способ, который люди считали наиболее чистым из возможных способов разработки ядер еще в 1990 году. Что ж, потребовалось много-много лет, чтобы заставить это ядро ​​вообще работать, и оно все еще работает плохо, и оно похоже, что с этой конструкцией могут быть фундаментальные проблемы, о которых еще в 1990 году никто не знал.
  16. ^ Столмен, Ричард (2010-07-29). «СКО АМА» . Reddit . Проверено 7 декабря 2011 .
  17. ^ «Фонд свободного программного обеспечения меняет приоритеты - SD Times» . SD Times . 2017-01-17 . Проверено 17 апреля 2017 .
  18. ^ Ragkousis, Манолис (20 августа 2015). «[Обновление GSoC] Перенос Guix на GNU / Hurd» (список рассылки). guix-devel . Проверено 20 августа 2015 года .
  19. ^ Kousoulos, Константин (2007-03-21). "Re: драйверы устройств в Mach?" . bug-hurd (список рассылки).
  20. ^ Doeppner, Thomas W. (20 декабря 2010). Операционные системы в глубине: дизайн и программирование . Джон Вили и сыновья. п. 160. ISBN 978-0-471-68723-8. Проверено 29 ноября 2012 года .
  21. ^ Столмен , Ричард (2000-10-12). «В защиту Red Hat» . Linux сегодня . Проверено 7 декабря 2011 . Я беру на себя полную ответственность за техническое решение по разработке ядра GNU на основе Mach, решение, которое, по-видимому, привело к медлительности разработки. Я думал, что использование Mach ускорит работу, сэкономив нам большую часть работы, но я ошибался.
  22. ^ Шапиро, Джонатан С. (2005-10-27). «Re: Комментарий по поводу смены ядер» . l4-hurd (Список рассылки).
  23. Перейти ↑ Bachmann, Tom (2007-07-07). "Re: seL4, L4.sec и беспорядок койотов" . l4-hurd (Список рассылки).
  24. ^ "Перенос Hurd на другое микроядро" . GNU Hurd . Фонд свободного программного обеспечения . Проверено 6 мая 2017 .
  25. ^ Уолфилд, Нил Х .; Бринкманн, Маркус (июль 2007 г.). «Критика многосерверной операционной системы GNU Hurd» (PDF) . GNU . Проверено 7 декабря 2011 .
  26. ^ Уолфилд, Нил Х .; Бринкманн, Маркус (2007-01-04). «Повышение удобства использования с помощью декомпозиции доступа и уточнения политик» (PDF) . GNU . Проверено 7 декабря 2011 .
  27. ^ "viengoos" . GNU . Проверено 4 марта 2010 .
  28. ^ "Что случилось с микроядрами L4 / Coyotos / viengoos?" . GNU . Проверено 7 января 2011 .
  29. ^ «Предварительное описание пользовательского интерфейса GNU / Hurd» . Debian . 1996-10-10 . Проверено 4 марта 2010 .
  30. ^ «GNU / Hurd - Документация» . Debian. 1996-10-10 . Проверено 12 июля 2012 .
  31. ^ "GNU Hurd / hurd / running / distrib" . Gnu.org . 2015-05-03 . Проверено 21 сентября 2017 .
  32. ^ "GNU Hurd / hurd / running / live cd" . Gnu.org . 2013-04-09 . Проверено 21 сентября 2017 .

Внешние ссылки [ править ]

  • Официальный веб-сайт