GNU Hurd

редактировать
Ядро операционной системы разработано как замена Unix
GNU Hurd
Hurd-logo.svg
Снимок экрана debian-HURD 2019-02-05 17-41-41.png
Developer GNU Project. Thomas Bushnell....
Написано на Assembly, C
Семейство ОСUnix-like
Рабочее состояниеТекущее
Исходная модельБесплатное программное обеспечение
Первоначальный выпуск1990; 30 лет назад (1990 г.)
Последний выпуск 0.9 / 18 декабря 2016 г.; 3 года назад (18.12.2016)
ПлатформыIA-32, i686
Тип ядра Мультисерверное микроядро
Лицензия GPLv2 +
Официальный сайтwww.gnu.org / software / hurd /

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

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

Содержание

  • 1 Имя и логотип
  • 2 История разработки
  • 3 Архитектура
    • 3.1 Другие микроядра
    • 3.2 Расширения Unix
    • 3.3 Архитектура серверов
      • 3.3.1 Основные серверы
      • 3.3.2 Файловая система серверы
  • 4 дистрибутива GNU, на которых работает Hurd
  • 5 См. также
  • 6 Ссылки
  • 7 Внешние ссылки

Имя и логотип

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

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

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

Поскольку и hard, и hird являются омофонами английского языка. слово «стадо», полное название GNU Hurd также является игрой слов стадо из gnus, отражающих принцип работы ядра.

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

История разработки

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

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

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

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

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

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

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

Архитектура

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

В отличие от большинства Unix-подобных ядер, Hurd использует серверно-клиентскую архитектуру, построенную на микроядре, которое отвечает за обеспечение самого простого службы ядра - координация доступа к оборудованию : CPU (через управление процессами и планирование ), RAM (через управление памятью ) и другие различные устройства ввода / вывода (через планирование ввода / вывода ) для звука, графики, запоминающих устройств и т. Д.. Теоретически конструкция микроядра позволяет создавать все драйверы устройств как серверы, работающие в user space, но сегодня большинство драйверов этого типа все еще содержится в GNU Mach kernel space.

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

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

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

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

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

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

Тем временем другие продолжали работать над вариантом Hurd для Mach.

Расширения Unix

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

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

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

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

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

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

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

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

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

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

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

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

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

на основе Hurd дистрибутивы GNU включают :

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

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

Викискладе есть материалы, относящиеся к GNU Hurd.
Последняя правка сделана 2021-05-21 09:11:09
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте