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