Linux (kärna)

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif
Tux är den officiella maskoten för Linux.

Linux är en fri, Unix-liknande operativsystemskärna mest känd för sin del i operativsystemet GNU/Linux. Linux används också utan GNU-programvaran, främst i inbyggda system

Projektet påbörjades av Linus Torvalds 1991 och utvecklades från början inte med allmänt bruk i åtanke, utan mest för att Torvalds ville lära sig mer om hur man bygger operativsystem[1]. Torvalds leder fortsättningsvis utvecklingsarbetet, också om han delegerat många enskilda helheter.

Då Torvalds började arbeta på Linux hade GNU-projektet redan skapat många av de nödvändiga komponenterna för ett fritt operativsystem, men deras egen kärna, GNU Hurd hade stora problem och var inte ännu användbar. Linux kunde fylla detta behov och trots att de tidiga versionerna var mycket begränsade, blev kombinationen GNU och Linux snabbt populär.

Källkoden till Linux har nästan ända sen starten använt GNUs programvarulicens GPL, något som många påstår är anledningen till att den blivit så framgångsrik och populär. Licensen kräver nämligen att om man har gjort ändringar i systemet som man vill sprida vidare måste man även göra ändringarna i källkoden offentlig och fri för alla att använda. På det sättet kommer alla förbättringar alla till godo. I en intervju 1997 sa Torvalds att bytet till GPL var "det bästa han någonsin gjort"[2]. Kärnan Linux har trots detta aldrig ersatt Hurd som officiell kärna inom GNU, utan Hurd utvecklas alltjämt separat.

Innehåll

Bakgrund

Kärnan i ett operativsystem har som uppgift att hålla reda på och kommunicera med de olika delarna av datorns hårdvara, som CPU, arbetsminne och hårddiskar, samt fördela tillgång och resurser till de olika program som körs i systemet. Även om stöd och sammansättning kan varieras när man bygger en kärna så brukar vanligtvis det mesta utrymmen tas upp av drivrutiner för olika sorters hårdvara.

Kärnan är det första programmet som startas i ett system, på PC:n vanligtvis av BIOS och en bootloader. Kärnans första uppgifter brukar vara att samla in information om vilken hårdvara som finns tillgänglig och ladda in alla drivrutiner för dessa. Efter detta lämnar kärnan över till resten av systemet och lägger sig i bakgrunden för att fördela och ge tillgång till olika resurser för programmen som körs.

Linux är, liksom i de flesta andra Unix-liknande system, en monolitisk kärna. Med detta menas att de flesta systemprocesser som in- och utmatning, minneshantering och drivrutiner kör som en del av kärnan och inte som separata processer. Denna arkitektur kan vara riskabel, då ett fel i en relativt oviktig modul kan stoppa processen och därmed hela systemet. Fördelen är en enklare konstruktion med något högre prestanda, då kommunikationen mellan olika delar är enklare och man undviker en del kontextbyten.

Teknik

Linux är i princip en traditionell UNIX-kärna, monolitisk och skriven i C. Den stora skillnaden ligger i hur Linux utvecklas. Vissa andra speciella drag kan dock noteras:

  • laddningsbara moduler för drivrutiner, mindre centrala nätverksprotokoll, filsystem och flera andra egenskaper, vilket betydligt ökar flexibiliteten
  • VFS, det virtuella filsystemet, som gör det lätt för Linux att stöda ett stort antal olika filsystem (ext2/3, jfs, reiserfs, fat, ntfs m.fl.)
  • virtualkonsoler, vilka tillåter flera samtidiga sessioner vid systemkonsolen (d.v.s. vid själva datorn)
  • arrangemangen vid systemstart
  • stöd för ett otal olika hårdvaruplattformer, från inbyggda system till stordatorer

Startprocedur

Eftersom Linux ofta körs på datorer avsedda för andra operativsystem och ofta delar hårddisk med andra operativsystem krävs speciella arrangemang vid starten. Normalt används en bootloader som i samarbete med PCns BIOS eller motsvarande program i andra arkitekturer laddar kärnan och eventuellt ett filsystem (initrd, "initial ramdisk") till datorns arbetsminne och överför kontrollen till kärnan. Kärnan arrangerar sin omgivning, dekomprimerar sig själv och laddar behövliga moduler från filsystemet. Därefter ansluts rotfilsystemet och programmet /sbin/init körs. init sköter bl.a. kontroll av filsystemen på hårddisken och uppstart av övriga systemprogram, liksom i övriga Unix-system.

Minneshantering

Linux' minneshantering innehåller alla egenskaper man kan förvänta sig av en modern Unix.

Användargränssnitt

Liksom andra unix-system stöder Linux dels användandet av kommandorad, dels X Window System, som används för grafiska användargränssnitt. Speciellt för linux är virtualkonsolerna: datorns konsol kan användas i ett flertal samtida sessioner, mellan vilka man kan växla med speciella tangentkombinationer. Linux stöder också en terminal som konsol, kopplad via en serieport. Särskilt stöd för det grafiska användargränssnittet erbjuds genom att X står för drivrutiner för skärmkorten och linux erbjuder behövlig kontakt till hårdvaran.

Tidsaxel[3]

<timeline>

  1. EasyTimeline syntax: http://www.mediawiki.org/wiki/Extension:EasyTimeline/syntax
  2. Color definitions #

Colors =

 id:col0.0.1   value:limegreen
 id:col1.0   	value:yellowgreen
 id:col1.1	value:drabgreen
 id:col1.2	value:teal
 id:col1.3	value:kelleygreen
 id:colbeta	value:gray(0.7)
 id:colbeta-l1 value:black
 id:col2.0	value:orange
 id:col2.0-l1	value:black
 id:col2.0-l2	value:lightorange
 id:col2.2	value:lightpurple
 id:col2.2-l1	value:black
 id:col2.2-l2	value:lavender
 id:col2.4	value:oceanblue
 id:col2.4-l1	value:black
 id:col2.4-l2	value:skyblue
 id:col2.6	value:green
 id:col2.6-l1	value:black
 id:col2.6-l2	value:drabgreen
 id:colbg    	value:gray(0.98)
 id:colgrmaj	value:gray(0.5)
 id:colgrmin	value:gray(0.8)

ImageSize = width:556 height:900 PlotArea = left:40 right:10 bottom:20 top:10

DateFormat = dd/mm/yyyy Period = from:1991 till:2009

TimeAxis = orientation:ver Alignbars = justify

ScaleMajor = gridcolor:colgrmaj unit:year increment:1 start:01/01/1991 ScaleMinor = gridcolor:colgrmin unit:month increment:3 start:01/01/1991

BackgroundColors = canvas:colbg

PlotData=

 ##################################################
 # 0.01-1.3 filled bar ver:0.01-0.99.15	   #
 ##################################################
 bar:0.01-1.3 width:40 from:17/09/1991 till:03/02/1994 color:col0.0.1 mark:(line,col0.0.1)
 ##################################################
 # 0.01-1.3 filled bar ver:1.0-patch9		   #
 ##################################################
 bar:0.01-1.3 width:40 from:13/03/1994 till:16/04/1994 color:col1.0 mark:(line,col1.0)
 ##################################################
 # 0.01-1.3 filled bar ver:1.1.0-1.1.95	   #
 ##################################################
 bar:0.01-1.3 width:40 from:06/04/1994 till:02/03/1995 color:col1.1 mark:(line,col1.1)
 ##################################################
 # 0.01-1.3 filled bar ver:1.2.0-1.2.13	   #
 ##################################################
 bar:0.01-1.3 width:40 from:07/03/1995 till:02/08/1995 color:col1.2 mark:(line,col1.2)
 ##################################################
 # 0.01-1.3 filled bar ver:1.3.0-1.3.100	   #
 ##################################################
 bar:0.01-1.3 width:40 from:12/06/1995 till:10/05/1996 color:col1.3 mark:(line,col1.3)
 ##################################################
 # 0.01-1.3 important versions	ver:0.01-1.3.100   #
 ##################################################
 bar:0.01-1.3 mark:(line,black) align:center fontsize:S
 at:17/09/1991 text:"0.01"
 at:13/03/1994 text:"1.0" fontsize:XS
 at:06/04/1994 text:"1.1.0" fontsize:XS
 at:07/03/1995 text:"1.2.0"
 at:12/06/1995 text:"1.3.0"
 at:10/05/1996 text:"1.3.100"
 ##################################################
 # pre2.0 betavers. pre2.0.1 - pre2.0.14	   #
 ##################################################
 bar:pre2.0 width:40 from:12/05/1996 till:06/06/1996 color:colbeta mark:(line,colbeta)
 ##################################################
 # pre2.0 line & text for first & last version  #
 ##################################################
 bar:pre2.0 mark:(line,colbeta-l1) align:center fontsize:XS
 at:12/05/1996 text:"pre2.0.1"
 at:06/06/1996 text:"pre2.0.14"
 ##################################################
 # 2.0 filled bar				   #
 ##################################################
 bar:2.0 width:40 from:09/06/1996 till:08/02/2004 color:col2.0 mark:(line,col2.0)
 ##################################################
 # 2.0 line & text for first version every year   #
 ##################################################
 bar:2.0 mark:(line,col2.0-l1) align:center fontsize:S
 at:09/06/1996 text:"2.0"
 at:14/01/1997 text:"2.0.28"
 at:04/06/1998 text:"2.0.34"
 at:15/06/1999 text:"2.0.37"
 at:09/01/2001 text:"2.0.39"
 at:08/02/2004 text:"2.0.40"
 ##################################################
 # 2.0 line for all other versions		   #
 ##################################################
 bar:2.0 mark:(line,col2.0-l2)
 at: 03/07/1996 # 2.0.1
 at: 05/07/1996 # 2.0.2
 at: 06/07/1996 # 2.0.3
 at: 08/07/1996 # 2.0.4
 at: 10/07/1996 # 2.0.5
 at: 12/07/1996 # 2.0.6
 at: 15/07/1996 # 2.0.7
 at: 25/07/1996 # 2.0.8
 at: 26/07/1996 # 2.0.9
 at: 27/07/1996 # 2.0.10
 at: 05/08/1996 # 2.0.11
 at: 09/08/1996 # 2.0.12
 at: 16/08/1996 # 2.0.13
 at: 20/08/1996 # 2.0.14
 at: 25/08/1996 # 2.0.15
 at: 31/08/1996 # 2.0.16
 at: 02/09/1996 # 2.0.17
 at: 05/09/1996 # 2.0.18
 at: 11/09/1996 # 2.0.19
 at: 13/09/1996 # 2.0.20
 at: 20/09/1996 # 2.0.21
 at: 08/10/1996 # 2.0.22
 at: 18/10/1996 # 2.0.23
 at: 30/10/1996 # 2.0.24
 at: 08/11/1996 # 2.0.25
 at: 22/11/1996 # 2.0.26
 at: 01/12/1996 # 2.0.27
 at: 07/02/1997 # 2.0.29
 at: 08/04/1997 # 2.0.30
 at: 17/10/1997 # 2.0.31
 at: 18/11/1997 # 2.0.32
 at: 16/12/1997 # 2.0.33
 at: 13/07/1998 # 2.0.35
 at: 16/11/1998 # 2.0.36
 at: 25/08/1999 # 2.0.38
 ##################################################
 # 2.1(dev) betavers. 2.1.0 - 2.2.0pre9		   #
 ##################################################
 bar:2.1(dev) width:40 from:30/09/1996 till:21/01/1999 color:colbeta mark:(line,colbeta)
 ##################################################
 # 2.1(dev) line & text for first & last version  #
 ##################################################
 bar:2.1(dev) mark:(line,colbeta-l1) align:center fontsize:S
 at:30/09/1996 text:"2.1.0"
 at:21/01/1999 text:"2.2.0pre9"
 ##################################################
 # 2.2 filled bar				   #
 ##################################################
 bar:2.2 width:40 from:26/01/1999 till:24/02/2004 color:col2.2  mark:(line,col2.2)
 ##################################################
 # 2.2 line & text for first version every year   #
 ##################################################
 bar:2.2 mark:(line,col2.2-l1) align:center fontsize:S
 at:26/01/1999 text:"2.2.0"
 at:04/01/2000 text:"2.2.14"
 at:25/03/2001 text:"2.2.19"
 at:20/05/2002 text:"2.2.21"
 at:05/03/2003 text:"2.2.24"
 at:24/02/2004 text:"2.2.26"
 ##################################################
 # 2.2 line for all other versions		   #
 ##################################################
 bar:2.2 mark:(line,col2.2-l2)
 at:28/01/1999 # 2.2.1
 at:23/01/1999 # 2.2.2
 at:09/03/1999 # 2.2.3
 at:23/03/1999 # 2.2.4
 at:29/03/1999 # 2.2.5
 at:16/04/1999 # 2.2.6
 at:27/04/1999 # 2.2.7
 at:11/05/1999 # 2.2.8
 at:13/05/1999 # 2.2.9 
 at:14/06/1999 # 2.2.10
 at:09/08/1999 # 2.2.11
 at:26/08/1999 # 2.2.12
 at:20/10/1999 # 2.2.13
 at:04/05/2000 # 2.2.15
 at:07/05/2000 # 2.2.16
 at:04/09/2000 # 2.2.17
 at:11/12/2000 # 2.2.18
 at:02/11/2001 # 2.2.20
 at:16/09/2002 # 2.2.22
 at:29/11/2002 # 2.2.23
 at:17/03/2003 # 2.2.25
 ##################################################
 # 2.3(dev) betavers. 2.3.0 - 2.3.99pre9	   #
 ##################################################
 bar:2.3(dev) width:40 from:11/05/1999 till:23/05/2000 color:colbeta mark:(line,colbeta)
 ##################################################
 # 2.3(dev) line & text for first & last version  #
 ##################################################
 bar:2.3(dev) mark:(line,colbeta-l1) align:center fontsize:S
 at:11/05/1999 text:"2.3.0"
 at:23/05/2000 text:"2.3.99pre9"
 ##################################################
 # 2.4 filled bar				   #
 ##################################################
 bar:2.4 width:40 from:04/01/2001 till:31/12/2009 color:col2.4  mark:(line,col2.4)
 ##################################################
 # 2.4 line & text for first version every year   #
 ##################################################
 bar:2.4 mark:(line,col2.4-l1) align:center fontsize:S
 at:04/01/2001 text:"2.4.0"
 at:25/02/2002 text:"2.4.18"
 at:13/06/2003 text:"2.4.21"
 at:05/01/2004 text:"2.4.24"
 at:19/01/2005 text:"2.4.29"
 at:11/08/2006 text:"2.4.33"
 at:26/07/2007 text:"2.4.35"
 at:01/01/2008 text:"2.4.36"
 ##################################################
 # 2.4 line for all other versions		   #
 ##################################################
 bar:2.4 mark:(line,col2.4-l2)
 at:30/01/2001 # 2.4.1
 at:22/02/2001 # 2.4.2
 at:30/03/2001 # 2.4.3
 at:28/04/2001 # 2.4.4
 at:26/05/2001 # 2.4.5
 at:04/07/2001 # 2.4.6
 at:20/07/2001 # 2.4.7
 at:11/08/2001 # 2.4.8
 at:16/08/2001 # 2.4.9
 at:23/09/2001 # 2.4.10
 at:09/10/2001 # 2.4.11
 at:11/10/2001 # 2.4.12
 at:24/10/2001 # 2.4.13
 at:05/11/2001 # 2.4.14
 at:23/11/2001 # 2.4.15
 at:26/11/2001 # 2.4.16
 at:21/12/2001 # 2.4.17
 at:03/08/2002 # 2.4.19
 at:28/11/2002 # 2.4.20
 at:25/08/2003 # 2.4.22
 at:28/11/2003 # 2.4.23
 at:18/02/2004 # 2.4.25
 at:14/04/2004 # 2.4.26
 at:04/08/2004 # 2.4.27
 at:17/11/2004 # 2.4.28
 at:04/04/2005 # 2.4.30
 at:01/06/2005 # 2.4.31
 at:16/11/2005 # 2.4.32
 at:23/12/2006 # 2.4.34
 at:02/12/2008 # 2.4.37
 ##################################################
 # 2.5(dev) betavers. 2.5.0-2.5.75 (2.4.15=2.5.0)  #
 ##################################################
 bar:2.5(dev) width:40 from:23/11/2001 till:10/06/2003 color:colbeta mark:(line,colbeta)
 ##################################################
 # 2.5(dev) line & text for first & last version  #
 ##################################################
 bar:2.5(dev) mark:(line,colbeta-l1) align:center fontsize:S
 at:23/11/2001 text:"2.5.0"
 at:10/06/2003 text:"2.5.75"
 ##################################################
 # 2.6 filled bar				   #
 ##################################################
 bar:2.6 width:40 from:18/12/2003 till:31/12/2009 color:col2.6  mark:(line,col2.6)
 
 ##################################################
 # 2.6 line & text for first version every year   #
 ##################################################  
 bar:2.6 mark:(line,col2.6-l1) align:center fontsize:S
 at:18/12/2003 text:"2.6.0" fontsize:XS
 at:09/01/2004 text:"2.6.1" fontsize:XS
 at:02/03/2005 text:"2.6.11"
 at:03/01/2006 text:"2.6.15"
 at:04/02/2007 text:"2.6.20"
 at:24/01/2008 text:"2.6.24"
 at:23/03/2009 text:"2.6.29"


 ##################################################
 # 2.6 line for all other versions		   #
 ##################################################
 bar:2.6 mark:(line,col2.6-l2)
 at:04/02/2004 # 2.6.2
 at:18/02/2004 # 2.6.3
 at:11/03/2004 # 2.6.4
 at:04/04/2004 # 2.6.5
 at:10/05/2004 # 2.6.6
 at:16/06/2004 # 2.6.7
 at:14/08/2004 # 2.6.8
 at:19/10/2004 # 2.6.9
 at:24/12/2004 # 2.6.10
 at:17/06/2005 # 2.6.12
 at:29/08/2005 # 2.6.13
 at:28/10/2005 # 2.6.14
 at:20/03/2006 # 2.6.16
 at:18/06/2006 # 2.6.17
 at:20/09/2006 # 2.6.18
 at:29/11/2006 # 2.6.19
 at:26/04/2007 # 2.6.21
 at:08/07/2007 # 2.6.22
 at:09/10/2007 # 2.6.23
 at:17/04/2008 # 2.6.25
 at:13/07/2008 # 2.6.26
 at:09/10/2008 # 2.6.27
 at:24/12/2008 # 2.6.28

</timeline>

Se även

Referenser

  1. Torvalds annonserar sitt hobbyprojekt, som senare skulle komma att bli Linux, på comp.os.minix.
  2. The Pragmatist of Free Software, intervju med Linus Torvalds av Hiroo Yamagata.
  3. http://www.kernel.org/pub/linux/kernel/

Externa länkar

Personliga verktyg