Linux (kärna)
Från Rilpedia
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>
- EasyTimeline syntax: http://www.mediawiki.org/wiki/Extension:EasyTimeline/syntax
- 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
- ↑ Torvalds annonserar sitt hobbyprojekt, som senare skulle komma att bli Linux, på comp.os.minix.
- ↑ The Pragmatist of Free Software, intervju med Linus Torvalds av Hiroo Yamagata.
- ↑ http://www.kernel.org/pub/linux/kernel/