GNU Hurd är en fri unixliknande operativsystemskärna avsedd att vara en ersättning för Unix-kärnan, utgiven under GNU General Public License. Hurd har varit under utveckling sedan 1990, som en del av Free Software Foundations GNU-projekt, för deras fria operativsystem GNU.

Hurd
Hurds logga, föreställande samverkande daemoner
Live-CD med GNU och Hurd efter uppstart.
Företag / utvecklareGNU-projektet
OS-familjUnixliknande
ArbetsstatusPågående
KällkodFri programvara
Senaste versionIngen stabil version släppt ännu
LicensGPL
KärntypGNU Mach, L4 med flera
Webbplatshttp://www.gnu.org/software/hurd

Hurd består i sig av ett antal daemoner som körs ovanpå en mikrokärna, i kontrast till de traditionella Unix-kärnorna som istället är monolitiska. Daemonerna och mikrokärnan (GNU Mach) är tillsammans tänkt att utgöra kärnan i operativsystemet GNU. Utvecklarna siktar på att få Hurd att bli överlägsen andra Unix-kärnor i datasäkerhet, stabilitet och funktionalitet, samtidigt som den fortfarande i stort ska vara kompatibel med dessa. Utvecklingen har emellertid dragit ut på tiden, varför det vanliga istället är att det övriga GNU-systemet används i en kombination med kärnan Linux, som än så länge har högre funktionalitet. Detta system kallas ofta i dagligt tal "Linux", men Free Software Foundation och dess anhängare insisterar på att det bör kallas GNU/Linux.

Hurd är en dubbel rekursiv akronym, där HURD står för "HIRD of Unix Replacing Daemons"[1] och HIRD står för "HURD Interfaces Representing Depth".

Historia redigera

Från början kördes Hurd på mikrokärnan GNU Mach (en vidareutveckling av Machkärnan) och den är fortfarande den mest stabila kärnan, men under utvecklingen av systemet har man upptäckt djupgående problem med Mach som har gjort att man på senare tid börjat planera för att flytta Hurd till en annan mikrokärna[2]. Bland annat har försök gjorts med L4, och utveckling pågår av en helt ny kärna vid namn Viengoos.[3] Valet att använda Mach som kärna för systemet gjordes av Richard Stallman, och han beskrev det senare som ett misstag.[4] Tanken var att så mycket som möjligt av systemet skulle köras i användarrymden för att göra det stabilare och lättare att felsöka- och utveckla med vanliga programmeringsverktyg. En av de stora fördelarna med detta designval är att en krasch i ett program i användarrymden som värst innebär att detta program måste startas om, medan en krasch i operativsystemets kärna i regel kräver en omstart av hela systemet.

Arkitektur redigera

Till att börja med så är Hurd, till skillnad från de flesta BSD-systemen och Linux en mikrokärna, där bara små delar av systemet, drivrutiner och minneshantering exempelvis[5], faktiskt körs i kärnan. Resten av den funktionalitet som behövs, som exempelvis inloggningskonsoler, nätverk och filsystemsåtkomst, körs i användarrymden av daemonprogram.[6]

Hurd tar också fasta på det gamla Unix-valspråket att "allting är en fil", även exempelvis mappar kan läsas som filer.[7] Detta blir viktigt för ett annat Hurd-specifikt koncept: översättare (eng. translators), som är program som körs i användarrymden och som interagerar med det virtuella filsystemet[8]. De fungerar så att det virtuella filsystemet associerar en översättare med en specifik nod (en mapp eller fil) i det virtuella filsystemet med översättaren, och istället för att direkt ge användaren ett svar när noden anropas så körs översättaren först. Hurds system för filsystemsåtkomst är översättare, men de kan användas till andra saker också. Exempelvis har det föreslagits översättare för tar-filer som transparent visar tar-arkiv som en mappstruktur och lägger till- och tar bort filer i dem. Översättarna delas upp i två kategorier; aktiva översättare, som startar en gång och körs till de avslutas, antingen normalt, av en krasch eller av exempelvis en omstart, och passiva översättare som inte startar förrän den nod i filsystemet som associeras med dem anropas. [9]

Exempel på daemoner [10] redigera

Notera att detta inte är en komplett lista!

  • auth – har hand om autentisering daemoner emellan
  • term – implementerar en POSIX-terminal
  • null – har hand om enheterna /dev/null och /dev/zero
  • crash – tar hand om program som kraschar
  • exec – kör processer

Översättare redigera

Se även redigera

Källor redigera

Externa länkar redigera