Linux (kärna)
Linux kärna | |
Senaste utgåva | 6.10.5 (2024-08-14) |
---|---|
Skriven i | C |
Licens | GPLv2 |
Webbplats | www |
Linux är en fri, Unix-liknande operativsystemskärna mest känd för sin del i operativsystemet Linux. Linux är också kärnan i de mobila operativsystemen Android och Sailfish.
Bakgrund
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] Han hade också privat behov av ett operativsystem för sin egen dator – han ville inte ha Windows, Minix var för begränsat och kommersiella Unix-versioner för dyra.
Torvalds leder fortsättningsvis utvecklingsarbetet, även 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 sedan starten använt GNU:s 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 offentliga och fria för alla att använda. På det sättet kommer de flesta 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.
Linux används också utan GNU-programvaran, främst i inbyggda system.
Teknik
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 drivrutiner för olika sorters hårdvara behöva det mesta utrymmet.
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 andra delar av systemet och lägger sig i bakgrunden men har till uppgift att fördela olika resurser till de program 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 denna enda process och därmed hela systemet. Fördelen är en enklare konstruktion med något högre prestanda, eftersom kommunikationen mellan olika delar är enklare och man undviker tidsförluster då processer ska turas om att köras.
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årdvaruplattformar, 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 PC:ns 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
Linuxs minneshantering innehåller alla egenskaper man kan förvänta sig av ett modernt Unix-system.[3]
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.
Linux används också med andra användargränssnitt, i synnerhet vad gäller inbyggda system. Användargränssnittet kan av kärnan hanteras som en terminal, men också andra lösningar används. Till exempel kan systemen användas med fjärrkontroll, med speciella knappsatser eller via nätet.
Tidsaxel
Ref:www.kernel.org[4]
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.
- ^ ”What is Linux”. kernel.org. http://www.kernel.org/#whatislinux. Läst 2 november 2009.
- ^ http://www.kernel.org/pub/linux/kernel/
Externa länkar
Media som används på denna webbplats
Författare/Upphovsman: Larry Ewing, Simon Budig, Garrett LeSage, Licens: CC0
penguin Tux, the Linux Mascot
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Illustration of the ubiquity of the Linux kernel; on the left, you see different classes of peripherals, on the right, suitable graphical shells.