XNU

Från Wikipedia
Hoppa till: navigering, sök

XNU är den operativsystemkärna som Apple förvärvade och utvecklade för att använda i sitt operativsystem Mac OS X och har släppts som fri programvara och som öppen källkod som en del av Darwin. Beteckningen "XNU" är en rekursiv akronym för "X is not Unix" (X är inte Unix)[1]

Ursprungligen utvecklades XNU av NeXT för deras operativsystem Nextstep. XNU var en hybridkärna som kombinerade version 2.5 av Mach med komponenter från version 3.4 av BSD och Driver Kit, ett objektorienterat API för att skriva drivrutiner.

Efter att NeXT hade köpts upp av Apple uppgraderades Mach-komponenten till 3.0. BSD-komponenterna uppgraderades med kod från FreeBSD-projektet, och Driver Kit ersattes av ett API som hette I/O Kit, baserat på C++.

Design av operativsystemskärnan[redigera | redigera wikitext]

Precis som många andra moderna operativsystemskärnor är XNU en hybridkärna som innehåller funktioner från både mikrokärnor och monolitiska 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 mikrokernel 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 och BSD:s kärna med några fördelar och nackdelar från vardera.

XNU kan köras på Intel- och AMD-baserade datorer (med x86-processorer), såväl som på PowerPC-baserade och ARM-baserade datorer.

Mach[redigera | redigera wikitext]

Kärnan av XNU operativsystemskärnan är Mach, och den tillför trådar, processer, hantering av virtuellt minne, väldigt mjukt realtidsstö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 formatet Mach-O.

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

BSD[redigera | redigera wikitext]

BSD-komponenterna av operativsystemskärnan tillför POSIX API, Unix processmodell ovanpå Machs arbetsuppgifter, grundläggande säkerhetspolicier, användare och grupp-id, tillstånd, nätverksstacken, kod till virtuellt filsystem, kryptografisk struktur, System V IPC 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 med FreeBSD Foundation under vidareutvecklingen av XNU.

I/O Kit[redigera | redigera wikitext]

I/O Kit beskriver strukturen över drivrutiner. Det är skrivet i C++ och sålunda objektorienterat till sin design, vilket gör att drivrutiner kan skrivas snabbare och med mindre kod än annars. I/O Kit är multi-trådat och SMP-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 är atomiska operationer, spinlocks, kritiska sektioner, mutexer och särskiljande symboler.

Referenser[redigera | redigera wikitext]

  1. ^ ”Porting UNIX/Linux Applications to Mac OS X: Glossary”. Apple Computer. 2005. http://developer.apple.com/documentation/Porting/Conceptual/PortingUnix/glossary/chapter_998_section_1.html#//apple_ref/doc/uid/TP40002859-DontLinkElementID_38. Läst 13 december 2005. 

Externa länkar[redigera | redigera wikitext]