Hoppa till innehållet

XNU

Från Wikipedia

XNUär denoperativsystemkärnasomAppleförvärvade och utvecklade för att använda i sittoperativsystemMac OSoch har släppts somfri programvaraoch somöppen källkodsom en del avDarwin.Beteckningen "XNU" är enakronymför"X is notUnix"(X är inte Unix)[1]

Ursprungligen utvecklades XNU avNeXTför deras operativsystemNextstep.XNU var en monolitisk kärna som kombinerade version 2.5 avMachmed komponenter från version 3.4 avBSDochDriver Kit,ett objektorienteratAPIför att skriva drivrutiner.

Efter att NeXT hade köpts upp av Apple uppgraderades Mach-komponenten till 3.0 som var enmikrokärna,men Apple lade stora delar i samma adressutrymme av prestandaanledning så det är numera enhybridkärna,BSD-komponenterna uppgraderades med kod frånFreeBSD-projektet, och Driver Kit ersattes av ett API som hetteI/O Kit,baserat påC++.

Design av operativsystemskärnan

[redigera|redigera wikitext]

Precis som många andra moderna operativsystemskärnor är XNU enhybridkärnasom innehåller funktioner från både mikrokärnor ochmonolitiska kärnor.På så vis kan man utnyttja en del fördelar och undvika en del nackdelar som finns i dessa båda teknologier.

Mach uppfattades från början som en enkel mikrokärna eftersom den kan köra ett operativsystems kärna som en separat process vilket tillåter flexibilitet (man kunde köra flera operativsystem parallellt ovanpå Mach-kärnan) men samtidigt försämrades prestandan. Därför valde Mac OS X utvecklare att implementera funktionalitet från BSD i kärnan tillsammans med Mach. Resultatet blev då alltså en kombination av Mach:s och BSD:s kärna med några fördelar och nackdelar från vardera.

XNU kan köras påIntel- ochAMD-baserade datorer (medx86-processorer), såväl som påPowerPC-baserade ochARM-baserade datorer.

Kärnan av XNUoperativsystemskärnanär Mach, och den tillförtrådar,processer,hantering avvirtuellt minne,väldigt mjuktrealtidsstöd,skyddat minne, och konsol-I/O. Mach-komponenten gör det också möjligt för operativsystemet att ha binärer för flera skilda processorarkitekturer inuti samma fil – såsom x86 och PowerPC – eftersom den använder det binära formatetMach-O.

En variant av Mach (GNU Mach) användes som utgångspunkt förHurd-kärnan.

BSD-komponenterna av operativsystemskärnan tillförPOSIXAPI, Unix processmodell ovanpå Machs arbetsuppgifter, grundläggandesäkerhetspolicier,användare ochgrupp-id,tillstånd,nätverksstacken,kod tillvirtuellt filsystem,kryptografiskstruktur,System VIPC och några låsfunktioner. BSD-koden som finns i XNU kom ursprungligen från FreeBSD:s operativsystemskärna. Denna kod har emellertid förändrats högst markant sedan starten, och Apple har tidigare fört en aktiv dialog medFreeBSD Foundationunder vidareutvecklingen av XNU.

I/O Kitbeskriver strukturen överdrivrutiner.Det är skrivet i C++ och sålundaobjektorienterattill sin design, vilket gör att drivrutiner kan skrivas snabbare och med mindre kod än annars. I/O Kit är multi-trådat ochSMP-säkert, samt tillåter automatisk, dynamisk enhetskonfiguration.

Många drivrutiner kan skrivas så att de körs från användarrymden, vilket ytterligare ökar stabiliteten av systemet: om en drivrutin kraschar i användarrymden så kommer detta inte medföra att själva operativsystemskärnan också kraschar.

Skydd av delade tillgångar

[redigera|redigera wikitext]

För att kunna köras säkert på maskiner med flera processorer så måste filer och datastrukturer särskiljas, så att inte trådar eller processer samtidigt försöker ändra samma källa. Exempel på metoder som kan användas för förhindra detta äratomiska operationer,spinlocks,kritiska sektioner,mutexeroch särskiljande symboler.

Externa länkar

[redigera|redigera wikitext]