GNU Hurd - GNU Hurd

GNU Hurd
Hurd-logo.svg
Screenshot debian-HURD 2019-02-05 17-41-41.png
Udvikler GNU -projekt
Thomas Bushnell
Roland McGrath
Marcus Brinkmann
Neal Walfield
Samuel Thibault
Skrevet i Samling , C
OS familie Unix-lignende
Arbejdstilstand Nuværende
Kildemodel Gratis software
Første udgivelse 1990 ; 31 år siden (1990)
Seneste udgivelse 0,9 / 7 juli 2019 ; 2 år siden (2019-07-07)
Platforme IA-32 , i686
Kernel type Multiserver mikrokernel
Licens GPL-2.0 eller nyere
Officiel hjemmeside www .gnu .org /software /hurd /

GNU Hurd er mikroserlen med flere serier skrevet som en del af GNU . Det har været under udvikling siden 1990 af GNU -projektet fra Free Software Foundation , designet som en erstatning for Unix -kernen og udgivet som gratis software under GNU General Public License . Da Linux -kernen viste sig at være en levedygtig løsning, bremsede udviklingen af ​​GNU Hurd, til tider skiftevis mellem stasis og fornyet aktivitet og interesse.

Hurdens design består af et sæt protokoller og serverprocesser (eller dæmoner i Unix -terminologi), der kører på GNU Mach -mikrokernen . Hurd har til formål at overgå Unix -kernen i funktionalitet, sikkerhed og stabilitet, mens den stadig er forenelig med den. GNU -projektet valgte multiserver -mikrokernen til operativsystemet på grund af opfattede fordele i forhold til den traditionelle Unix -monolitiske kerne -arkitektur, en opfattelse, som nogle udviklere havde anbefalet i 1980'erne.

I december 1991 beskrev Hurdens primære arkitekt navnet som et gensidigt rekursivt akronym :

Det er tid [til] at forklare betydningen af ​​"Hurd". "Hurd" står for "Hird of Unix-Replacement Daemons". Og så står "Hird" for "Hurd of Interfaces Representing Depth". Vi har her, så vidt jeg ved, den første software, der blev navngivet af et par gensidigt rekursive akronymer.

Da både hurd og hird er homofoner af det engelske ord besætning , det fulde navn GNU Hurd er også en leg med ordene besætning af gnuer , hvilket afspejler, hvordan kernen fungerer.

Logoet kaldes Hurd -boksene, og det reflekterer også over arkitektur. Logoet er en graf, hvor noder repræsenterer Hurd -kernens servere og rettet kanter er IPC -meddelelser.

Udviklingshistorie

Richard Stallman grundlagde GNU -projektet i september 1983 med det formål at skabe et gratis GNU -operativsystem. Oprindeligt blev de komponenter, der kræves til udvikling af kerne, skrevet: redaktører , shell , compiler , debugger osv. I 1989 blev GNU GPL til, og den eneste store komponent, der manglede, var kernen.

Udviklingen på Hurd begyndte i 1990 efter et forladt kerneforsøg i 1986, baseret på forsknings -TRIX -operativsystemet udviklet af professor Steve Ward og hans gruppe på MIT's Laboratory for Computer Science (LCS). Ifølge Thomas Bushnell , den indledende Hurd -arkitekt, var deres tidlige plan at tilpasse 4.4BSD -Lite -kernen og i bakspejlet: "Det er nu helt indlysende for mig, at dette ville være lykkedes glimrende, og verden ville være et helt andet sted i dag." I 1987 foreslog Richard Stallman at bruge Mach -mikrokernel udviklet af Richard Rashid ved Carnegie Mellon University . Arbejdet med dette blev forsinket i tre år på grund af usikkerhed om CMU ville frigive Mach -koden under en passende licens.

Med frigivelsen af Linux -kernen i 1991 blev den primære bruger af GNUs brugerlandskomponenter hurtigt operativsystemer baseret på Linux -kernen ( Linux -distributioner ), hvilket fremkaldte udformningen af ​​udtrykket GNU/Linux .

Udviklingen af ​​Hurd er gået langsomt. På trods af en optimistisk meddelelse fra Stallman i 2002, der forudsagde en frigivelse af GNU/Hurd senere samme år, anses Hurd stadig ikke for egnet til produktionsmiljøer. Udviklingen generelt har ikke levet op til forventningerne, og der er stadig et betydeligt antal fejl og manglende funktioner. Dette har resulteret i et dårligere produkt, end mange (inklusive Stallman) havde forventet. I 2010, efter tyve år under udvikling, sagde Stallman, at han "ikke var særlig optimistisk med hensyn til GNU Hurd. Det gør nogle fremskridt, men for at være virkelig overlegen ville det kræve at løse mange dybe problemer", men tilføjede, at "det var færdigt er ikke afgørende "for GNU -systemet, fordi der allerede eksisterede en gratis kerne ( Linux ), og at fuldføre Hurd ville ikke løse det største tilbageværende problem for et gratis operativsystem: enhedsunderstøttelse.

Den Debian -projektet, blandt andet har arbejdet på Hurd-projektet til at producere binære distributioner af Hurd-baserede GNU operativsystemer til IBM PC-kompatible systemer.

Efter år med stilstand tog udviklingen igen fart i 2015 og 2016 med fire udgivelser i løbet af disse to år.

Den 20. august 2015 blev det midt i Google Summer of Code annonceret, at GNU Guix var blevet overført til GNU Hurd.

Arkitektur

Generel struktur for henholdsvis monolitiske, mikrokernel- og hybridkerne-baserede operativsystemer.

I modsætning til de fleste Unix-lignende kerner bruger Hurd en server-klient-arkitektur , bygget på en mikrokernel, der er ansvarlig for at levere de mest grundlæggende kernetjenester -koordinerer adgang til hardwaren : CPU'en (gennem processtyring og planlægning ), RAM (via hukommelsesstyring ) og andre forskellige input/output -enheder (via I/O -planlægning ) til lyd, grafik, masselagring osv. I teorien ville mikrokerneldesignet tillade, at alle enhedsdrivere bygges som servere, der arbejder i brugerrum , men i dag er de fleste drivere af denne art stadig indeholdt i GNU Mach -kerneområdet .

Ifølge Hurd-udviklere er den største fordel ved mikrokernelbaseret design evnen til at udvide systemet: Udvikling af et nyt modul ville ikke kræve indgående kendskab til resten af ​​kernen, og en fejl i et modul ville ikke ødelægge hele systemet . Hurd giver et koncept med oversættere , en ramme af moduler, der bruges til at udvide et filsystems funktionalitet.

Fra tidligt af blev Hurd udviklet til at bruge GNU Mach som mikrokernen. Dette var en teknisk beslutning truffet af Richard Stallman , som troede, at det ville fremskynde arbejdet ved at spare en stor del af det. Han har indrømmet, at han tog fejl. Andre Unix-lignende systemer, der arbejder på Mach-mikrokernen, inkluderer OSF/1 , Lites og MkLinux . macOS og NeXTSTEP bruger hybridkerner baseret på Mach.

Andre mikrokerner

Fra 2004 og fremefter blev der iværksat forskellige bestræbelser på at overføre Hurd til mere moderne mikrokerne. Den L4 mikrokernen var det oprindelige valg i 2004, men udviklingen gik i stå. Ikke desto mindre afsluttede Hurd -udvikleren Neal Walfield i løbet af 2005 de første hukommelsesstyringsrammer for L4/Hurd -porten, og Marcus Brinkmann portede væsentlige dele af glibc ; nemlig at få processtartkoden til at fungere, så programmer kan køre, og dermed tillade de første brugerprogrammer (trivielle programmer som f.eks. Hello World -programmet ) i C at køre.

Siden 2005 begyndte Brinkmann og Walfield at undersøge Coyotos som en ny kerne til HURD. I 2006 mødtes Brinkmann med Jonathan Shapiro (en primær arkitekt for Coyotos -operativsystemet) for at hjælpe og diskutere brugen af ​​Coyotos -kernen til GNU/Hurd. I yderligere diskussion indså HURD -udviklere, at Coyotos (såvel som andre lignende kerner) ikke er egnede til HURD.

I 2007 gav Hurd -udviklerne Neal Walfield og Marcus Brinkmann en kritik af Hurd -arkitekturen, kendt som "kritikken", og et forslag til, hvordan et fremtidigt system kan designes, kendt som "positionspapiret". I 2008 begyndte Neal Walfield at arbejde på Viengoos mikrokernel som en moderne indfødt kerne til HURD. Fra 2009 blev udviklingen på Viengoos standset på grund af, at Walfield ikke havde tid til at arbejde på det.

I mellemtiden har andre fortsat arbejdet med Mach -varianten af ​​Hurd.

Unix -udvidelser

En række traditionelle Unix -koncepter erstattes eller udvides i Hurd.

Under Unix har hvert kørende program et tilknyttet bruger -id , som normalt svarer til den bruger, der startede processen . Denne id dikterer stort set de handlinger, der er tilladt for programmet. Ingen ekstern proces kan ændre bruger -id'et for et kørende program. En Hurd -proces kører derimod under et sæt bruger -id'er, som kan indeholde flere id'er, en eller ingen. En tilstrækkeligt privilegeret proces kan tilføje og fjerne id'er til en anden proces. For eksempel er der en password -server, der vil uddele id'er til gengæld for en korrekt login -adgangskode.

Med hensyn til filsystemet kan et passende program udpeges som oversætter til en enkelt fil eller et helt bibliotekshierarki. Hver adgang til den oversatte fil eller filer under et hierarki i det andet tilfælde håndteres faktisk af programmet. For eksempel kan en filoversætter simpelthen omdirigere læse- og skriveoperationer til en anden fil, f.eks. Et Unix symbolsk link . Virkningen af Unix montering opnås ved at oprette et filsystem oversætter (ved hjælp af kommandoen "settrans"). Oversættere kan også bruges til at levere tjenester til brugeren. F.eks. Tillader ftpfs -oversætteren en bruger at indkapsle eksterne FTP -websteder i et bibliotek. Derefter kan standardværktøjer som ls , cp og rm bruges til at manipulere filer på det eksterne system. Endnu mere kraftfulde oversættere er dem som UnionFS , som giver en bruger mulighed for at forene flere mapper til en; dermed viser en liste over det forenede bibliotek indholdet af alle bibliotekerne.

Hurd kræver en multiboot -kompatibel boot loader , såsom GRUB .

Arkitektur af serverne

Ifølge Debians dokumentation er der 24 servere (18 kerneservere og 6 filsystemservere) navngivet som følger:

Kerne servere

  • auth ( godkendelsesserver ): Modtager anmodninger og adgangskoder fra programmer og giver dem et id, som ændrer programmets rettigheder.
  • crash ( crash server): Håndterer alle fatale fejl.
  • eieio (oversættelsesserver): TODO (se Computeren købte gården )
  • exec (eksekveringsserver): Oversætter et eksekverbart billede (i øjeblikket understøttes ELF og a.out ) til et billede, der kan køres i hukommelsen.
  • fifo ( FIFO -oversætter): Implementerer navngivne rør.
  • ny-fifo (ny FIFO-server): En alternativ server til navngivne rør.
  • firmlink (firmlink-oversætteren): Implementerer firmlinks-"halvvejs mellem et symbolsk link og et hårdt link ".
  • fwd (videresend server): Videresender anmodninger til andre servere, der bruges af fifo og symlink servere.
  • hostmux ( hostmultiplexerserver )
  • ifsock (server til sockets interface): Hjælper med UNIX domæne socket adresser.
  • init ( init -server): Grundlæggende systemstart og konfiguration.
  • magic ( magic server): Signaler om, at et navnesøg skal løses internt af en proces, når resultatet involverer procesens tilstand.
  • null (null -server): Implementerer /dev /null og /dev /zero.
  • pfinet (pfinet server): Implementerer PF_INET protokolfamilien.
  • pflocal (pflocal server): Implementerer UNIX -domæne -sockets .
  • proc (processerver): Tildeler PID'er og administrerer handlinger på procesniveau.
  • symlink ( symbolsk linkoversætter): Implementerer symbolske links til filsystemer, der ikke understøtter dem.
  • term (terminalserver): En POSIX -terminal.
  • usermux ( brugermultiplexerserver ): Påkalder brugerspecifikke oversættere.

Filsystem servere

ext2fs
Den ext2 filsystemet oversætter. Det modtager diskblokke fra mikrokernen og giver filer og mapper til applikationerne.
isofs
Oversætteren til ISO 9660 -filsystemet. Oversætter blokke af en cd eller dvd til filer og mapper til applikationerne.
nfs
Se Netværksfilsystem .
ufs
Oversætter til BSD -filsystemet med samme navn, UFS .
ftpfs
Filoverførselsprotokol filsystemoversætter.
storeio
Opbevaring oversætter.

Serverne implementerer kollektivt POSIX API , hvor hver server implementerer en del af grænsefladen. For eksempel implementerer de forskellige filsystemservere hvert filsystemopkald. Lagerserveren fungerer som et indpakningslag, der ligner bloklaget i Linux. Tilsvarende til VFS for Linux opnås af libdiskfs og libpager biblioteker.

GNU -distributioner, der kører Hurd

Debian GNU/Hurd med Xfce4 og webbrowser Midori

Hurd-baserede GNU-distributioner omfatter:

Se også

Referencer

eksterne links