L4 | |
---|---|
Sorts | mikrokärna |
Författare | Jochen Liedtke |
Utvecklaren | Jochen Liedtke |
Skrivet i | assembleringsspråk |
Hemsida | l4hq.org |
L4 är en andra generationens mikrokärna utvecklad av Jochen Liedtke 1993 [ 1] .
L4-mikrokärnarkitekturen visade sig vara framgångsrik. Många implementeringar av L4-mikrokärnans ABI och API har skapats. Alla implementeringar blev kända som L4-familjen av mikrokärnor. Liedtkes implementering har informellt fått namnet "L4/x86" [2] .
1977 försvarade Jochen Liedtke sitt diplomprojekt i matematik vid universitetet i Bielefeld (Tyskland). Som en del av projektet skrev Liedtke en kompilator för ELAN- språket ( eng. ). ELAN-språket skapades 1974 på basis av språket Algol 68 för undervisning i programmering [3] . Liedtke kallade sitt verk "L1": bokstaven "L" är den första bokstaven i författarens efternamn ( L iedtke ); siffran "1" är verkets serienummer.
1977 tog Liedtke examen som matematiker, stannade vid universitetet i Bielefeld och började skapa en runtime-miljö för ELAN-språket.
8-bitars mikrokontroller blev allmänt tillgängliga. Det krävdes ett operativsystem som kunde köras på små arbetsstationer på gymnasier och universitet. CP/M passade inte. Det tyska nationella forskningscentret för datavetenskap och teknologi GMD och universitetet i Bielefeld beslutade att utveckla ett nytt operativsystem från grunden [4] .
1979 började Jochen Liedtke utveckla ett nytt operativsystem och döpte det till " Eumel " ( engelska ) från engelska. Utökningsbar fleranvändarmikroprocessor EL AN - system . _ _ Operativsystemet "Eumel" kallades också "L2", vilket betyder " Liedtkes andra verk " . Det nya operativsystemet stödde 8-bitars Zilog Z80-processorer , var multi-användare och multitasking byggdes på en mikrokärna och ortogonal persistens Stöd för ortogonal beständighet var följande: OS sparade med jämna mellanrum sitt tillstånd på disk (innehållet i minnet , processorregister , etc.); efter strömavbrott återställdes operativsystemet från ett sparat tillstånd; programmen fortsatte att fungera som om felet inte hade inträffat; endast ändringar gjorda sedan den senaste lagringen gick förlorade. Eumel OS var inspirerat av Multics OS och delade många likheter med Accent och Mach 4kärnorna
Eumel OS portades senare till Zilog Z8000 , Motorola 68000 och Intel 8086 processorer . Dessa processorer var 8-bitars och 16-bitars, innehöll ingen MMU och stödde inte en minnesskyddsmekanism . Eumel OS emulerade en virtuell maskin med 32-bitars adressering och en MMU [4] . Trots användningen av emulering kunde upp till fem terminaler anslutas till en arbetsstation som kör Eumel OS [4] .
Till en början var det möjligt att skriva program för Eumel OS endast på ELAN-språket. Kompilatorer för CDLPascal Basic och DYNAMO lades till senare men de användes inte i stor utsträckning 4
Sedan 1980 började användningen av Eumel OS, först för undervisning i programmering och ordbehandling, och sedan för kommersiella ändamål. Så i mitten av 1980-talet kördes Eumel OS redan på mer än 2000 datorer på advokatbyråer och andra företag [4] .
Med tillkomsten av processorer som stöder virtuellt minne (på grund av MMU) och mekanismer för dess skydd, har behovet av att emulera en virtuell maskin försvunnit.
1984 [ 5] gick Jochen Liedtke till jobbet vid GMD forskningscenter för att skapa ett OS som liknar Eumels, men utan emulering. GMD är för närvarande en del av Fraunhofer Society .
Sedan 1987 [4] har Jochen Liedtke och hans team vid SET Institute , en del av GMD, börjat utveckla en ny mikrokärna, kallad "L3" ("L3" från " L iedtkes 3: e verk ").
Jochen Liedtke ville se om det var möjligt att uppnå hög prestanda för IPC- komponenten genom att välja rätt arkitektur för kärnan och använda funktionerna i hårdvaruplattformen i implementeringen . Implementeringen av IPC-mekanismen visade sig vara framgångsrik (jämfört med den komplexa implementeringen av IPC i Mach-mikrokärnan). Senare implementerades en mekanism för att isolera minnesområden för processer som körs i användarutrymmet .
1988 slutfördes utvecklingen och operativsystemet med samma namn släpptes. L3-mikrokärnan skrevs i assemblerspråk , använde funktionerna hos Intel x86 -arkitekturprocessorerna , stödde inte andra plattformar och överträffade Mach-mikrokärnan i prestanda. L3 OS var kompatibelt med Eumel OS: program skapade för Eumel OS kördes under L3 OS, men inte vice versa [4] .
L3 mikrokärnkomponenter:
Sedan 1989 [4] har operativsystemet använts:
Under arbetet med L3-mikrokärnan upptäckte Jochen Liedtke brister i Mach-mikrokärnan. Liedtke ville förbättra prestandan och började koda den nya mikrokärnan i assemblerspråk med funktionerna i Intel i386- processorarkitekturen . Den nya mikrokärnan kallades "L4" (från " L iedtkes 4 :e verk ").
1993 slutfördes implementeringen av L4-mikrokärnan. IPC-komponenten visade sig vara 20 gånger snabbare än IPC från Mach-mikrokärnan [1] .
OS byggt på första generationens mikrokärnor (i synnerhet på Mach-mikrokärnan) kännetecknades av låg prestanda. På grund av detta började utvecklare i mitten av 1990 - talet ompröva konceptet med mikronukleär arkitektur. I synnerhet förklarades den dåliga prestandan för Mach-mikrokärnan genom att flytta den komponent som ansvarar för IPC till användarutrymmet.
Vissa komponenter i Mach-mikrokärnan returnerades tillbaka - inuti mikrokärnan . Detta kränkte själva idén om mikrokärnor (minsta storlek, isolering av komponenter), men tillät att öka prestanda hos operativsystemet.
Forskarna sökte efter orsakerna till Mach-mikrokärnans dåliga prestanda och analyserade noggrant de komponenter som är viktiga för god prestanda. Analysen visade att kärnan allokerade en för stor arbetsuppsättning (mycket minne) till processerna, vilket resulterade i att cachemissar hela tiden inträffade när kärnan fick åtkomst till minnet [ 6 ] . Analysen gjorde det möjligt att formulera en ny regel för mikrokärnutvecklare - mikrokärnan ska utformas så att de komponenter som är viktiga för att säkerställa hög prestanda placeras i processorns cache (helst den första nivån ( engelska nivå 1 , L1) och det är önskvärt att det fortfarande finns lite utrymme kvar i cachen ).
På grund av ökningen i prestanda hos IPC-komponenten kunde befintliga operativsystem inte hantera det ökade inflödet av IPC-meddelanden. Flera universitet (t.ex. Technical University Dresden , University of New South Wales ), institutioner och organisationer (t.ex. IBM ) har börjat skapa implementeringar av L4 och bygga nya operativsystem runt dem.
1996 försvarade Liedtke sin doktorsavhandling [7] vid Tekniska universitetet i Berlin på ämnet "skyddade sidtabeller" [8] .
Sedan 1996, vid Research Center, har och hans kollegor fortsatt forskning om L4-mikrokärnan, mikrokärnor i allmänhet och Sawmill OS operativsystem i synnerhet [9] . På grund av bristen på kommersiell framgång, operativsystemet " IBM Workspace OS ", byggt på den tredje versionen av Mach-mikrokärnan från CMU och utvecklat av IBM från januari 1991 till 1996 [10] istället för konceptet " L4 microkernel" använde konceptet "Lava Nucleus" eller "LN" för kort.
Med tiden släpptes L4-mikrokärnkoden från att vara bunden till plattformen, säkerhets- och isoleringsmekanismerna förbättrades.
1999 började Liedtke arbeta som professor i operativsystem vid Karlsruhe Institute of Technology (Tyskland) [7] .
1999 antogs Jochen Liedtke i Systems Architecture Group (SAG), som arbetar vid Karlsruhe Institute of Technology (Tyskland), och fortsatte forskning om mikronukleära operativsystem. SAG-gruppen är också känd som "L4Ka"-gruppen.
SAG -gruppen ville bevisa att en mikrokärna kunde implementeras på ett högnivåspråk och utvecklade mikrokärnan "L4Ka::Hazelnut". Arbetet utfördes vid Karlsruhes tekniska högskola med stöd av DFG [11] . Implementeringen skrevs i C++ och stödde IA-32- och ARM-arkitekturprocessorer . Prestandan för den nya mikrokärnan visade sig vara acceptabel och utvecklingen av assembly-språkkärnor avbröts.
1998 började Dresden Technical University Operating Systems Group utveckla sin egen implementering av L4-mikrokärnan, kallad "L4/Fiasco". Utvecklingen genomfördes i C++ parallellt med utvecklingen av mikrokärnan L4Ka::Hazelnut.
Vid den tiden stödde inte L4Ka::Hazelnut-mikrokärnan samtidighet mellan kärna och rymden, och "L4Ka::Pistachio"-mikrokärnan stödde endast kärn-space- avbrott vid specifika preemption-punkter. Utvecklarna av mikrokärnan "L4/Fiasco" har implementerat fullständig förebyggande multitasking (med undantag för vissa atomoperationer). Detta gjorde kärnarkitekturen mer komplex, men minskade avbrottslatenser, vilket är viktigt för ett realtidsoperativsystem.
Mikrokärnan "L4/Fiasco" användes i OS "DROPS" [12] - OS för "hård" realtid (när det är extremt viktigt att händelsen besvaras inom strikta tidsramar), även utvecklat vid Tekniska universitetet i Dresden.
På grund av komplexiteten i mikrokärnarkitekturen i senare versioner av Fiasco OS, återgick utvecklarna till det traditionella tillvägagångssättet - att starta kärnan med avstängda avbrott (med undantag för några få företrädespunkter).
Implementeringar av L4-mikrokärnan, skapade före lanseringen av L4Ka::Pistachio-mikrokärnan och senare versioner av "Fiasco"-mikrokärnan, använde funktionerna i datorarkitekturen (de var "bundna" till processorarkitekturen). Ett arkitekturoberoende API utvecklades. Trots tillägget av portabilitet gav API:et hög prestanda. Idéerna bakom mikrokärnarkitekturen har inte förändrats.
I början av 2001 publicerades ett nytt L4 API, mycket annorlunda än den tidigare versionens L4 API, med versionsnummer 4 ("version 4", även känd som "version X.2"), och annorlunda:
Efter lanseringen av den nya versionen av API:t började SAG-teamet skapa en ny mikrokärna, kallad "L4Ka::Pistachio" [13] [14] . Koden kompilerades från grunden i C++ med hjälp av erfarenheten från L4Ka::Hazelnut-projektet. Uppmärksamhet ägnades åt hög prestanda och portabilitet.
Den 10 juni 2001 dog Dr Jochen Liedtke [7] i en bilolycka. Därefter minskade utvecklingstakten av projektet markant.
År 2003 [15] slutfördes arbetet tack vare insatser från Liedtkes elever: Volkmar Uhlig, Uwe Dannowski och Espen Skoglund. Källkoden har släppts under BSD-licensen med 2 klausuler .
Parallellt fortsatte utvecklingen av L4/Fiasco-mikrokärnan. Stöd för flera hårdvaruplattformar ( x86 , AMD64 , ARM ) har lagts till. Noterbart är att en version av Fiasco kallad "FiascoUX" skulle kunna köras i användarutrymme som kör Linux OS .
Utvecklarna av L4/Fiasco-mikrokärnan har implementerat flera tillägg till L4v2 API.
Dessutom tillhandahöll mikrokärnan "Fiasco" mekanismer för hantering av kommunikationsrättigheter. Samma mekanismer fanns för att hantera resurserna som förbrukades av kärnan.
"L4Env" utvecklades, en uppsättning komponenter som körs ovanpå "Fiasco"-mikrokärnan i användarutrymmet. "L4Env" användes i "L4Linux", en implementering av paravirtualisering (virtualisering ABI) för Linux-kärnor version 2.6.x.
Utvecklare vid University of New South Wales har skapat mikrokärnorna L4/MIPS och L4/Alpha, implementeringar av L4 för 64-bitars MIPS- och DEC Alpha -seriens processorer . Den ursprungliga L4-mikrokärnan stödde endast x86-arkitekturprocessorer och blev informellt känd som "L4/x86". Implementeringarna skrevs från grunden i C och assemblerspråk och var inte bärbara. Efter lanseringen av den plattformsoberoende mikrokärnan L4Ka::Pistachio, slutade UNSW-gruppen att utveckla sina mikrokärnor och började porta L4Ka::Pistachio-mikrokärnan. Implementeringen av meddelandeöverföringsmekanismen visade sig vara snabbare än andra implementeringar (36 cykler på Itanium- arkitekturprocessorer ) [16] .
UNSW-gruppen har visat att en drivrutin för användarutrymme kan köras på samma sätt som en drivrutin för kärnutrymme [17] .
Hon utvecklade komponenter för paravirtualisering av Linux-kärnor. Komponenterna kördes ovanpå L4-mikrokärnan. Resultatet har kallats " Wombat OS ". Wombat OS kunde köras på x86, ARM och MIPS arkitekturer. På Intel XScale-processorer utförde Wombat OS en kontextväxling 30 gånger långsammare än en monolitisk Linuxkärna [18] .
UNSW-gruppen flyttade sedan till NICTA, skapade en gaffel av L4Ka::Pistachio-mikrokärnan och döpte den till "NICTA::L4-inbäddad". Den nya mikrokärnan skrevs för kommersiella inbäddade system , krävde lite minne och implementerade ett förenklat L4 API. Med ett förenklat API gjordes systemanrop så "korta" att de inte krävde förebyggande multitasking-punkter och tillät realtidsimplementering av OS [19] .
Qualcomm körde NICTA :s implementering av L4-mikrokärnan på en chipset kallad "Mobile Station Modem" (MSM) Detta rapporterades i november 2005 [20] av NICTA-representanter, och i slutet av 2006 började MSM-chipset säljas. Så implementeringen av L4-mikrokärnan hamnade i mobiltelefoner .
I augusti 2006 grundade Open Kernel Labs Vid den tiden tjänstgjorde Heiser som chef för ERTOS-programmet organiserat av NICTA [21] och var professor vid UNSW. OK Labs skapades för att
I april 2008 släpptes version 2.1 av "OKL4"-mikrokärnan, den första offentliga implementeringen av L4 som har kapacitetsbaserad säkerhet . I oktober 2008 släpptes version 3.0 [22] - den senaste versionen med öppen källkod av "OKL4" . Källkoden för följande versioner har stängts. Mikrokärnlagret som driver hypervisorn har skrivits om för att lägga till stöd för en inbyggd hypervisor som kallas "OKL4 microvisor" [23] .
OK Labs distribuerade ett paravirtualiserat Linux - operativsystem som heter OK :Linux [24] . OK : Linux var en ättling till Wombat OS . OK Labs distribuerade också paravirtualiserade versioner av operativsystemen Symbian och Android .
OK Labs har förvärvat rättigheterna till seL4 mikrokärnan från NICTA.
I början av 2012 såldes mer än 1,5 miljarder enheter utrustade med en implementering av L4-mikrokärnan [25] . De flesta av dessa enheter innehöll chips som implementerar trådlösa modem och släpptes av Qualcomm .
En implementering av L4 har också använts i underhållningssystem i bilen [26] .
OS, byggt på basis av L4-implementationen, exekverades av den säkra enklavprocessorn, som är en del av Apple A7 elektroniska krets som finns på chipet [27] . Samma L4-implementering användes i NICTA:s Darbat-projekt [28] . Enheter som innehåller Apple A7 levereras med iOS . Från och med 2015 fanns det cirka 310 miljoner iOS-enheter [29] .
2006 började utvecklingen av tredje generationens mikrokärna , kallad "seL4" [30] . Utvecklingen startade från början av en grupp programmerare från NICTA. Syfte: att skapa underlag för att bygga säkra och tillförlitliga system som kan uppfylla moderna säkerhetskrav, som t ex skrivits i dokumentet "Allmänna kriterier för bedömning av informationsteknologisäkerhet". Redan från början var mikrokärnkoden skriven på ett sådant sätt att det gick att verifiera den (korrekthetskontroll). Verifieringen utfördes med hjälp av Haskell-språket : kraven för mikrokärnan (specifikationen) skrevs på Haskell-språket; mikrokärnobjekt representerades som Haskell-objekt; arbete med utrustningen emulerades [31] . För att kunna få information om ett objekts tillgänglighet genom att utföra formella resonemang använde seL4 åtkomstkontroll baserad på förmågasbaserad säkerhet.
Under 2009 slutfördes beviset för att seL4-mikrokärnkoden [32] var korrekt . Förekomsten av ett bevis som säkerställde överensstämmelse mellan implementeringen och specifikationen bekräftade frånvaron av några buggar i implementeringen (till exempel frånvaron av dödlägen , livelås, buffertspill , aritmetiska undantag och fall av användning av oinitierade variabler). seL4-mikrokärnan var den första mikrokärnan som designats för ett generellt operativsystem och verifierad [32] .
seL4-mikrokärnan implementerade icke-standardiserad kärnresurshantering [33] :
Något liknande implementerades i det experimentella OS Barrelfish . Tack vare detta tillvägagångssätt för att hantera kärnresurser blev det möjligt att föra resonemang om isolering av egenskaper, och senare bevisades det att mikrokärnan seL4 säkerställer integriteten och konfidentialitet för egenskaper [34] . Beviset gjordes för den ursprungliga koden.
Ett team av forskare från NICTA-företaget bevisade riktigheten av att översätta text från C-språk till maskinkod. Detta gjorde det möjligt att utesluta kompilatorn från listan över tillförlitlig programvara och betrakta beviset som utförts för mikrokärnans källkod som giltigt även för den körbara mikrokärnfilen.
seL4-mikrokärnan blev den första kärnan i skyddat läge för vilken den värsta exekveringstidsanalysen utfördes i sin helhet, och resultaten av denna analys publicerades. Resultaten av analysen är nödvändiga för att använda mikrokärnan i ett hårt realtidsoperativsystem [34] .
29 juli 2014 NICTA och General Dynamics C4 Systemstillkännagav lanseringen av seL4-mikrokärnan (inklusive alla bevis på deras riktighet) under öppna licenser [35] . Mikrokärnans källkod och bevis släpptes under GPL v2-licensen. De flesta av biblioteken och verktygen distribuerades under BSD-licensen med 2 klausuler.
Ett intressant påstående från forskare [36] är att kostnaden för att utföra programvaruverifiering är lägre än kostnaden för traditionell programvaruforskning, trots att mycket mer tillförlitlig information kan erhållas under verifiering.
I augusti 2012 NICTA, Rockwell Collins, Galois Inc , Boeing och University of Minnesota , som en del av ett program för att utveckla högst pålitliga militära cybersystem [37] organiserat av DARPA- byrån , har börjat utveckla ett obemannat flygfarkost [38] . Huvudkravet för utvecklingen är att säkerställa enhetens höga tillförlitlighet. Var och en av de listade företagen hade en roll att spela i programmet. NICTA ansvarade för utvecklingen av operativsystemet och byggde upp det kring seL4-mikrokärnan. Ansvarsfulla uppgifter implementerades som mikrokärnkomponenter, medan icke-ansvariga kördes under ett paravirtualiserat Linux OS. Utvecklingen av programmet var planerad att användas i NICTA Unmanned Little Bird-helikoptern, som utvecklades av Boeing. Helikoptern var tvungen att stödja både pilotkontroll och obemannat läge. I november 2015 rapporterades ett framgångsrikt genomförande [39] .
Hurd/L4 . I november 2000 skapades e-postlistan "l4-hurd" för att diskutera idén om att portera " GNU Hurd "-kärnan till L4-mikrokärnan. Portering genomfördes under 2002-2004, resultatet kallades "Hurd / L4". Implementeringen av "Hurd/L4" slutfördes inte. 2005 stoppades projektet [40] .
Osker är ett operativsystem som implementerar L4 och skrevs i Haskell 2005 . Syftet med projektet: att testa möjligheten att implementera OS på ett funktionellt språk (och inte att studera mikrokärnan) [41] .
Codezero är en implementering av L4-mikrokärnan för inbäddade system som blev allmänt tillgänglig sommaren 2009 [42] . Skapad av utvecklarna av det brittiska företaget "B Labs" från grunden. Koden skrevs i C. Implementeringen stöder ARM -arkitekturprocessorer , implementerar en första ordningens hypervisor och stöder Linux- och Android OS-virtualisering [43] [44] . Trots uttalandet om leverans av koden under GPL v3-licensen är det omöjligt att ladda ner koden från den officiella webbplatsen.
F9 är en implementering av L4-mikrokärnan som blev allmänt tillgänglig i juli 2013 [45] . Skrivet från grunden i C. Designad för inbyggda system. Stöder ARM-arkitektur Cortex-M- processorserien . Koden tillhandahålls under en BSD-licens.
Fiasco.OC är en tredje generationens mikrokärna baserad på mikrokärnan "L4/Fiasco". Implementerar den kapacitetsbaserade säkerhetsmekanismen, stöder flerkärniga processorer och hårdvaruvirtualisering [46] .
L4 Runtime Environment (L4Re för kort) är ett ramverk som körs ovanpå mikrokärnan "Fiasco.OC" och är designat för att skapa komponenter för användarutrymme. L4Re tillhandahåller funktionalitet för att bygga klient-/serverapplikationer, implementera filsystem, implementera populära bibliotek som C-standardbiblioteket ("libc"), C++-standardbiblioteket ("libstdc++") och pthreads- biblioteket .
L4Re-ramverket och mikrokärnan "Fiasco.OC" stödde x86 (IA-32 och AMD64), ARM och PowerPC (WiP) arkitekturer.
L4Linux är ett undersystem för att köra Linux OS ovanpå mikrokärnan "Fiasco.OC" med hjälp av paravirtualisering [47] . Tidigare användes istället för paret "Fiasco.OC" - L4Re, paret "L4 / Fiasco" - L4Env.
NOVA ( N OVA O S v irtualiseringsarkitekturen ) är ett forskningsprojekt skapat för att skapa en säker och effektiv virtualiseringsmiljö [ 48 ] [49] [50] med en liten lista över betrodd programvara ( trusted computing base ) . NOVA inkluderar:
NOVA-projektet stödde x86-processorer med flera kärnor. För att köras under kontroll av en mikrohypervisor (en hypervisor byggd på en mikrokärna) NOVA måste gästoperativsystemet stödja Intel VT-x eller AMD-V . Källkoden tillhandahölls under GPL v2-licensen.
Xameleon är ett operativsystem baserat på L4-mikrokärnan [52] . Projektet grundades 2001 av den enda utvecklaren Alexei Mandrykin (född 19 januari 1973 ). OS byggdes ursprungligen ovanpå mikrokärnan " L4/Fiasco ". Senare migrerade författaren operativsystemet till " L4Ka::Pistachio " mikrokärnan. OS-källkoden är stängd.
WrmOS är ett realtidsoperativsystem med öppen källkod (RTOS) baserat på L4-mikrokärnan. WrmOS har sin egen implementering av kärnan, standardbibliotek och nätverksstacken. Processorarkitekturer som stöds är SPARC, ARM, x86, x86_64. WrmOS-kärnan är baserad på dokumentet L4 Kernel Reference Manual Version X.2 . Det finns en paravirtualiserad Linux-kärna ( w4linux ) som körs ovanpå WrmOS.