For faster navigation, this Iframe is preloading the Wikiwand page for XNU.

XNU

XNU är den operativsystemkärna som Apple förvärvade och utvecklade för att använda i sitt operativsystem Mac OS och har släppts som fri programvara och som öppen källkod som en del av Darwin. Beteckningen "XNU" är en 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 monolitisk kä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 som var en mikrokärna, men Apple lade stora delar i samma adressutrymme av prestandaanledning så det är numera en hybridkärna, 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 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- och AMD-baserade datorer (med x86-processorer), såväl som på PowerPC-baserade och ARM-baserade datorer.

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-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 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.

Externa länkar

[redigera | redigera wikitext]
{{bottomLinkPreText}} {{bottomLinkText}}
XNU
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?