Thứ Sáu, 15 tháng 2, 2019

Textual description of firstImageUrl

GNU Hurd - Wikipedia



GNU Hurd ist der Multiserver-Mikrokernel, der als Teil von GNU geschrieben wurde. Es wurde seit 1990 vom GNU-Projekt der Free Software Foundation entwickelt, das als Ersatz für den Unix-Kernel [3] konzipiert und als freie Software unter der GNU General Public License veröffentlicht wurde. Während sich der Linux-Kernel bald als praktikabler erwies, wurde die Entwicklung von GNU Hurd fortgesetzt, wenn auch in einem langsamen Tempo. [4]

GNU Hurd besteht aus einer Reihe von Protokollen und Serverprozessen (oder Daemons in Unix-Terminologie), die auf Unix laufen der GNU Mach-Mikrokern. [3] Der Hurd will den Unix-Kernel in Funktionalität, Sicherheit und Stabilität übertreffen und dabei weitgehend kompatibel sein. Das GNU-Projekt wählte den Multiserver-Mikrokern [5] für das Betriebssystem aufgrund von Vorteilen gegenüber der traditionellen monolithischen Unix-Kernel-Architektur [6] eine Ansicht, die von einigen Entwicklern in den achtziger Jahren befürwortet wurde. [4]




edit ]


Im Dezember 1991 bezeichnete der Hauptarchitekt des Hurd den Namen als wechselseitig rekursives Akronym: [7]


Es ist Zeit [to]was "Hurd" bedeutet. "Hurd" steht für "Hird of Unix-Replacing Daemons". Und dann steht "Hird" für "Hurd of Interfaces Representing Depth". Wir haben hier meines Wissens die erste Software, die von zwei sich gegenseitig rekursiven Akronymen benannt wurde.



Da beide hurd und hird Homophone des englischen Wortes sind ] herd der vollständige Name GNU Hurd ist auch ein Spiel mit den Wörtern von Gnus in dem die Funktionsweise des Kerns beschrieben wird. [8] Das Logo wird genannt ] Hurd-Boxen und reflektiert auch die Architektur. Das Logo ist eine Grafik, in der Knoten die Server des Hurd-Kernels darstellen und gerichtete Kanten IPC-Nachrichten sind. [7]


Entwicklungsgeschichte [ edit


Richard Stallman gründete das GNU-Projekt im September 1983 mit einem Ziel ist es, ein kostenloses GNU-Betriebssystem zu erstellen. Zunächst wurden die für die Kernel-Entwicklung erforderlichen Komponenten geschrieben: Editoren, Shell, Compiler und alle anderen. 1989 wurde die GNU GPL gegründet, und der einzige Hauptbestandteil, der fehlte, war der Kernel. [9][10]

Die Entwicklung des Hurd begann 1990 nach einem abgebrochenen Kernelversuch im Jahr 1986, der auf dem von Professor Steve Ward und Dr. Seine Gruppe am MITs Laboratory for Computer Science (LCS). [11] Laut Thomas Bushnell, dem ursprünglichen Hurd-Architekten, bestand ihr früherer Plan darin, den 4.4BSD-Lite-Kernel anzupassen und im Nachhinein: "Es ist jetzt völlig offensichtlich dass dies großartig gelungen wäre und die Welt heute ein ganz anderer Ort wäre. "[12] 1987 schlug Richard Stallman die Verwendung des Mikrokernels Mach vor, der an der Carnegie Mellon University entwickelt wurde. Die Arbeit daran wurde um drei Jahre verzögert, weil Ungewissheit darüber herrschte, ob CMU den Mach-Code unter einer geeigneten Lizenz freigeben würde. [11]

Mit der Veröffentlichung des Linux-Kernels im Jahr 1991 wurde der Hauptbenutzer der GNU-Userland-Komponenten bald zu Betriebssystemen, die auf Betriebssystemen basierten der Linux-Kernel (Linux-Distributionen), der zur Prägung des Begriffs GNU / Linux führt.

Die Entwicklung des Hurd verlief langsam. Trotz einer optimistischen Ankündigung von Stallman aus dem Jahr 2002, die eine Veröffentlichung von GNU / Hurd im selben Jahr vorhersagte, [13] wird der Hurd noch immer nicht für Produktionsumgebungen als geeignet angesehen. Die Entwicklung entsprach im Allgemeinen nicht den Erwartungen und es gibt immer noch eine beträchtliche Anzahl von Fehlern und Fehlfunktionen. [14] Dies hat zu einem schlechteren Produkt geführt, als viele (einschließlich Stallman) erwartet hatten. [15] Im Jahr 2010, nach zwanzig Jahren unter Während der Entwicklung sagte Stallman, er sei "nicht sehr optimistisch in Bezug auf den GNU Hurd. Er macht einige Fortschritte, aber um wirklich überlegen zu sein, müssten viele tiefe Probleme gelöst werden", fügte er jedoch hinzu, dass "es nicht entscheidend ist" für die GNU System, da bereits ein freier Kernel vorhanden war (Linux), und das Abschließen von Hurd würde das verbleibende Hauptproblem eines freien Betriebssystems nicht beheben: Geräteunterstützung. [16]

Das Debian-Projekt haben unter anderem arbeitete an dem Hurd-Projekt zur Erstellung von Binärdistributionen von Hurd-basierten GNU-Betriebssystemen für IBM PC-kompatible Systeme.

Nach Jahren der Stagnation nahm die Entwicklung 2015 und 2016 mit vier Veröffentlichungen in diesen zwei Jahren wieder zu. [17]

Am 20. August 2015, inmitten des Google Summer of Code, Es wurde bekannt gegeben, dass GNU Guix auf GNU Hurd [18] portiert wurde.


Architektur [ edit ]


Allgemeine Struktur von monolithischen, Mikrokernel- bzw. Hybridkern-basierten Betriebssystemen

Im Gegensatz zu den meisten Unix-artigen Kerneln verwendet der Hurd-Server einen Server - Client-Architektur, die auf einem Mikrokern aufgebaut ist, der für die Bereitstellung der grundlegendsten Kernel-Services verantwortlich ist - die Koordination des Zugriffs auf die Hardware: die CPU (über Prozessverwaltung und Zeitplanung), den RAM (über die Speicherverwaltung) und andere verschiedene Eingabe- / Ausgabegeräte ( per I / O-Scheduling) für Sound, Grafik, Massenspeicher usw. Theoretisch könnten alle Gerätetreiber als Server ausgeführt werden, die im Benutzerbereich arbeiten. Die meisten Treiber dieser Art sind jedoch immer noch in der GNU enthalten Mach-Kernel-Raum [19]

Laut Hurd-Entwicklern besteht der Hauptvorteil des Mikrokernel-basierten Designs in der Möglichkeit, das System zu erweitern: Die Entwicklung eines neuen Moduls würde keine eingehenden Kenntnisse des Restes erfordern des Kernel, und ein Fehler in einem Modul würde nicht das gesamte System zum Absturz bringen. Hurd liefert ein Konzept von Übersetzern einem Rahmen von Modulen zur Erweiterung der Dateisystemfunktionalität. [20]

Der Hurd wurde von Anfang an zur Verwendung von GNU Mach as entwickelt der mikrokernel. Dies war eine technische Entscheidung von Richard Stallman, der glaubte, er würde die Arbeit beschleunigen, indem er einen großen Teil davon rettet. Er hat zugegeben, dass er sich damit geirrt hat. [21] Andere Unix-ähnliche Systeme, die am Mach-Mikrokernel arbeiten, sind OSF / 1, Lites und MkLinux. macOS und NeXTSTEP verwenden auf Mach basierende Hybridkerne.


Andere Mikrokerne [ edit ]


Ab 2004 wurden verschiedene Anstrengungen unternommen, um den Hurd auf modernere Mikrokerne zu portieren. Der L4-Mikrokernel war 2004 die erste Wahl, aber der Fortschritt bremste ab. Trotzdem beendete Hurd-Entwickler Neal Walfield im Jahr 2005 die anfängliche Speicherverwaltung für den L4 / Hurd-Port, und Marcus Brinkmann portierte wesentliche Teile von glibc. nämlich den Prozessstartcode zum Laufen bringen, so dass Programme ausgeführt werden können, wodurch die ersten Benutzerprogramme (triviale Programme wie das Hallo-Welt-Programm) in C ausgeführt werden können.

Seit 2005 forschten Brinkmann und Walfield nach Coyotos als neuem Kern für HURD. [23] Im Jahr 2006 traf Brinkmann mit Jonathan Shapiro (einem Hauptarchitekten des Coyotos Operating System) zusammen, um die Verwendung des Coyotos-Kernels zu unterstützen und zu diskutieren für GNU / Hurd. In einer weiteren Diskussion erkannten die Entwickler von HURD, dass Coyotos (und andere ähnliche Kernel) nicht für HURD geeignet sind. [24]

Im Jahr 2007 gaben die Hurd-Entwickler Neal Walfield und Marcus Brinkmann eine Kritik an der Hurd Architektur, die als "Kritik" bekannt ist, [25] und ein Vorschlag, wie ein zukünftiges System entworfen werden kann, als "Positionspapier". [26] Neal Walfield begann 2008 als moderner Einheimischer am Viengoos-Mikrokernel zu arbeiten Kernel für HURD. Ab 2009 wird die Entwicklung auf Viengoos angehalten, weil Walfield keine Zeit für die Bearbeitung hat. [27]

In der Zwischenzeit haben andere an der Mach-Variante von Hurd weitergearbeitet. 19659045] Unix-Erweiterungen [ edit ]

Eine Reihe traditioneller Unix-Konzepte werden im Hurd ersetzt oder erweitert.

Unter Unix ist jedem laufenden Programm eine Benutzer-ID zugeordnet, die normalerweise dem Benutzer entspricht, der den Prozess gestartet hat. Diese ID gibt weitgehend die für das Programm zulässigen Aktionen vor. Kein externer Prozess kann die Benutzer-ID eines laufenden Programms ändern. Ein Hurd-Prozess läuft dagegen unter einer -Sammlung von Benutzer-IDs, die mehrere, eine oder keine IDs enthalten kann. Ein ausreichend privilegierter Prozess kann IDs zu einem anderen Prozess hinzufügen und entfernen. Zum Beispiel gibt es einen Passwort-Server, der IDs gegen ein korrektes Login-Passwort ausgibt.

Bezüglich des Dateisystems kann ein geeignetes Programm als -Übersetzer für eine einzelne Datei oder eine ganze Verzeichnishierarchie bezeichnet werden. Jeder Zugriff auf die übersetzte Datei oder auf Dateien unterhalb einer Hierarchie im zweiten Fall wird vom Programm ausgeführt. Beispielsweise kann ein Dateiübersetzer einfach Lese- und Schreibvorgänge in eine andere Datei umleiten, beispielsweise in einen symbolischen Unix-Link. Der Effekt der Montage von Unix wird durch das Einrichten eines Dateisystem-Übersetzers (mit dem Befehl "settrans") erreicht. Übersetzer können auch verwendet werden, um dem Benutzer Dienste bereitzustellen. Mit dem ftpfs-Umsetzer kann ein Benutzer beispielsweise entfernte FTP-Sites in einem Verzeichnis kapseln. Dann können Standardwerkzeuge wie ls, cp und rm verwendet werden, um Dateien auf dem Remote-System zu bearbeiten. Noch leistungsfähigere Übersetzer sind beispielsweise UnionFS, mit deren Hilfe ein Benutzer mehrere Verzeichnisse zu einem vereinheitlichen kann. Das Auflisten des vereinheitlichten Verzeichnisses enthüllt den Inhalt aller Verzeichnisse.

Für den Hurd ist ein Multiboot-kompatibler Bootloader wie GRUB erforderlich.


Architektur der Server [ edit ]


Gemäß der Debian-Dokumentation gibt es 24 Server (18 Core-Server und 6 Dateisystem-Server) mit der folgenden Bezeichnung: [29]


Core servers [ edit ]


  • auth (Authentifizierungsserver): Empfängt Anforderungen und Kennwörter von Programmen und gibt ihnen eine ID, die die Berechtigungen des Programms ändert.

  • Absturz

  • (Absturzserver): Behandelt alle schwerwiegenden Fehler.

  • eieio (Übersetzungsserver): TODO (siehe Computer kaufte die Farm)

  • exec (Ausführungsserver): Übersetzt ein ausführbares Bild (derzeit ELF und a.out werden zu einem ausführbaren Bild im Speicher unterstützt.

  • FIFO (FIFO-Übersetzer): Implementiert Named Pipes.

  • New-FIFO (neuer FIFO-Server): Ein alternativer Server für Named Pipes.

  • Firmlink (der Firmlink-Übersetzer): Implementiert Firmlinks - "auf halbem Weg zwischen einem symbolischen Link und einem harten Lin k ". [30]

  • fwd (Forward-Server): Leitet Anforderungen an andere Server weiter, die von Fifo- und Symlink-Servern verwendet werden.

  • Hostmux (Host-Multiplexer-Server) [19659057] ifsock (Server für Sockets-Schnittstelle): Hilft bei UNIX-Domänen-Socketadressen.

  • init (init-Server): Grundlegendes Systembooten und -konfiguration.

  • magic (magischer Server): Gibt an, dass eine Namenssuche intern von einem Prozess aufgelöst werden muss, wenn das Ergebnis den Status des Prozesses umfasst.

  • null (Null-Server): Implementiert / dev / null und /dev/zero.[19659057>19659004] (pfinet-Server): Implementiert die PF_INET-Protokollfamilie.

  • pflocal (pflocal-Server): Implementiert UNIX-Domänensockets.

  • proc (Prozessserver): Weist PIDs zu und verwaltet Aktionen auf Prozessebene. 19659057] symlink (symbolischer Link-Übersetzer): Implementiert symbolische Links für Dateisysteme, die sie nicht unterstützen.

  • Begriff (Terminalserver): Ein POSIX-Terminal

  • usermux (Benutzermultiplexerserver): Ruft benutzerspezifische Übersetzer auf.

Dateisystemserver [ edit


ext2fs

Der ext2-Dateisystem-Übersetzer. Es empfängt Plattenblöcke vom Mikrokernel und übergibt Dateien und Verzeichnisse an die Anwendungen.

isofs

Der Übersetzer für das ISO 9660-Dateisystem. Übersetzt Blöcke einer CD oder DVD in Dateien und Verzeichnisse für die Anwendungen.

nfs

Siehe Network File System.

ufs

Übersetzer für das gleichnamige BSD-Dateisystem, UFS.

ftpfs

Dateiübertragungsprotokoll-Dateisystemübersetzer

storeio

Der Speicherübersetzer

Die Server implementieren gemeinsam die POSIX-API, wobei jeder Server einen Teil der Schnittstelle implementiert. Beispielsweise implementieren die verschiedenen Dateisystem-Server jeweils die Aufrufe des Dateisystems. Der Speicherserver funktioniert ähnlich wie die Blockschicht von Linux als Wrapping-Layer. Das Äquivalent von VFS von Linux wird durch libdiskfs- und libpager-Bibliotheken erreicht.


Computer kaufte die Farm [ edit ]


"Computer kaufte die Farm" ist die Meldung, wenn ein Fehler mit einigen Befehlen auftritt. Entsprechend der FAQ von GNU Hurd: [31]


Dies ist die Fehlermeldung für EIEIO. Dieser Fehlercode wird für eine Vielzahl von "hoffnungslosen" Fehlerbedingungen verwendet. Höchstwahrscheinlich werden Sie darauf stoßen, wenn ein Übersetzer abstürzt, während Sie versuchen, eine Datei zu verwenden, die er bedient.

Sie können es sich also als Äquivalent des "blauen Bildschirms des Todes" oder "Oops" vorstellen ... außer dass es nur ein fehler ist! Es nimmt nicht Ihr gesamtes System mit sich, nur die bestimmten Operationen, die gerade ausgeführt wurden.


Zu den GNU-Distributionen, die Hurd [ edit ]



zu Hurd-basierten GNU-Distributionen gehören:


Siehe auch [ edit ]



Referenzen [ edit



  1. ^ "2016-12-18-Veröffentlichungen". GNU Hurd . 2016-12-18 .

  2. ^ http://git.savannah.gnu.org/cgit/hurd/hurd.git/tree/COPYING a b "Was ist der GNU-Hurd?". GNU . Abgerufen 2010-03-04 .

  3. ^ a b Tozzi, Christopher (2015-04-20). "30 Jahre später, HURD lebt: GNU aktualisiert den Open Source Unix Kernel". thevarguy.com . 2017-04-17 .

  4. ^ "Was ist ein Multiserver-Mikrokernel?" Gnu.org. 2013-04-13 . 2015-08-11 .

  5. ^ "Vorteile" abgerufen. GNU . 2011-12-07 .

  6. ^ a b Vervloesem, Koen (7. Juli 2010). "The Hurd: GNUs Suche nach dem perfekten Kernel". LWN.net . 5. Oktober 2012 .

  7. ^ "GNU Hurd: Ursprung des Namens". GNU . 2010-03-04 .

  8. ^ Hillesley, Richard (30. Juni 2010). "GNU HURD: Veränderte Visionen und verlorenes Versprechen" . Abgerufen 1. Oktober 2012 .

  9. ^ "Linux and the GNU Project". GNU . 2010-01-26 . 2010-03-04 .

  10. ^ a b "Die Geschichte der GNU Hurd", wie es begann ] ". GNU . 2006-08-27 .

  11. ^ Salus, Peter. "Der Dämon, die GNU und der Pinguin" . 2006-08-08 .

  12. ^ Ribeiro, John (2002-03-11). "Freie Software sieht GNU Loose von Linux". PC World . 2012-10-05 .

  13. ^ "Status" abgerufen. GNU . 2010-03-04 .

  14. ^ Stallman, Richard (2006-03-09). "Die Bewegung freier Software und die Zukunft der Freiheit" (ogg) . Free Software Foundation . Zagreb. Laien Zusammenfassung Dies ist auch der Weg, den die Leute für 1990 als den saubersten Weg für das Design von Kernels gedacht haben. Nun, es hat viele, viele Jahre gedauert, bis dieser Kernel überhaupt zum Laufen gebracht wurde, und es läuft immer noch nicht gut und es scheint, dass es grundlegende Probleme mit diesem Entwurf geben könnte, von denen 1990 niemand etwas wusste.

  15. ^ Stallman, Richard (2010-07-29). "RMS AMA". Reddit . Abgerufen 2011-12-07 .

  16. ^ "Stiftung für freie Software ändert Prioritäten - SD Times". SD Times . 2017-01-17 . 2017-04-17 .

  17. ^ Ragkousis, Manolis (20. August 2015). "[GSoC update] Portierung von Guix zu GNU / Hurd" (Mailingliste). guix-devel . 20. August 2015 .

  18. ^ Kousoulos, Constantine (2007-03-21). "Re: Gerätetreiber in Mach?" bug-hurd (Mailing-Liste).

  19. ^ Döppner, Thomas W. (20. Dezember 2010). Betriebssysteme im Detail: Design und Programmierung . John Wiley & Sons. p. 160. ISBN 978-0-471-68723-8 . 29. November 2012 .

  20. ^ Stallman, Richard (2000-10-12). "Zur Verteidigung von Red Hat". Linux Today . Abgerufen 2011-12-07 . Ich übernehme die volle Verantwortung für die technische Entscheidung, den auf Mach basierenden GNU-Kernel zu entwickeln, eine Entscheidung, die für die Langsamkeit der Entwicklung verantwortlich zu sein scheint. Ich dachte, die Verwendung von Mach würde die Arbeit beschleunigen, indem er uns einen großen Teil des Jobs erspart, aber ich habe mich geirrt.


  21. ^ Bachmann, Tom (2006-07-07). "Re: se4, L4.sec und Coyotos-Chaos". 14-Hurd (Mailing-Liste).

  22. ^ "Portierung des Hurd zu einem anderen Mikrokernel". GNU Hurd . Free Software Foundation . 2017-05-06 .

  23. ^ Walfield, Neal H .; Brinkmann, Marcus (Juli 2007). "Eine Kritik des GNU Hurd Multi-Server-Betriebssystems" (PDF) . GNU . 2011-12-07 .

  24. ^ Walfield, Neal H .; Brinkmann, Marcus (2007-01-04). "Verbesserung der Benutzerfreundlichkeit durch Zugriffszerlegung und Policy-Verfeinerung" (PDF) . GNU . 2011-12-07 .

  25. ^ "viengoos". GNU . 2010-03-04 .

  26. ^ "Was ist mit den Mikrokernen L4 / Coyotos / viengoos passiert?" GNU . Abgerufen 2011-01-07 .

  27. ^ "Vorläufige GNU / Hurd-Benutzeroberflächen-Beschreibung". Debian . 1996-10-10 . 2010-03-04 .

  28. ^ "GNU / Hurd - Documentation". Debian 1996-10-10 . 2012-07-12 .

  29. ^ "EIEIO:" Der Computer hat die Farm gekauft ... "Äh, was ?!". Debian . 2. Februar 2019 .

  30. ^ "GNU Hurd / hurd / running / distrib". www.gnu.org . 03.05.2015 . 2017-09-21 .

  31. ^ "GNU Hurd / Hurd / Laufen / Live-CD". www.gnu.org . 2013-04-09 . 2017-09-21 .

  32. ^ "Nix-basiertes GNU / Hurd-System". Gnu.org. 2012-03-21 . 2012-07-12 .


Externe Links [ edit ]












Không có nhận xét nào:

Đăng nhận xét