XNU - XNU

XNU
XNU -kernen Graphic.svg
XNU -kernen
Udvikler Apple Inc.
Skrevet i C , C ++
OS familie Unix-lignende , Unix
Arbejdstilstand Nuværende
Kildemodel Open-source
Første udgivelse December 1996 ; 24 år siden ( 1996-12 )
Depot Rediger dette på Wikidata
Tilgængelig i Engelsk, andre
Platforme Nuværende: x86-64 , 64-bit ARM , 32-bit ARM (32-bit ARM-understøttelse er lukket kilde)
Historisk: PowerPC (32-bit og 64-bit), IA-32
Kernel type Hybrid
Licens Apple Public Source License 2.0
Forud af Mach , Nukernel
Officiel hjemmeside opensource .apple .com /source /xnu

XNU er computerens operativsystem (OS) kerne udviklet på Apple Inc. siden december 1996 til brug i Mac OS X (nu macOS ) operativsystem og udgivet som gratis og open source software som en del af Darwin OS, som er grundlag for Apple TV Software , iOS , iPadOS , watchOS og tvOS OS'er. XNU er en forkortelse af X er Not Unix .

Oprindeligt udviklet af NeXT til NeXTSTEP -operativsystemet, XNU var en hybridkerne afledt af version 2.5 af Mach -kernen udviklet ved Carnegie Mellon University , selv en efterkommer af 4.3BSD og inkorporerede hovedparten af ​​4.3BSD -kernen sammen med en applikationsprogrammering interface (API) i Objective-C til skrivning af drivere med navnet Driver Kit.

Efter at Apple erhvervede NeXT, blev kernen opdateret med kode, der stammer fra OSFMK 7.3 fra OSF , og FreeBSD -projektet, og Driver Kit blev erstattet med en C ++ API til skrivning af drivere ved navn I/O Kit.

Kernel design

XNU er en hybrid kerne , som indeholder træk fra begge monolitisk kerne og microkernels , der forsøger at gøre bedst mulig brug af begge teknologier, såsom besked passerer evne microkernels muliggør større modularitet og større dele af OS til gavn af beskyttelse hukommelse , og fastholdelse hastigheden af ​​monolitiske kerner til nogle kritiske opgaver.

Fra 2021 kører XNUARM64- og x86-64- processorer, både én processor og symmetrisk multiprocessing (SMP) -modeller. PowerPC -understøttelse blev fjernet fra versionen i Mac OS X 10.6 . Understøttelse af IA-32 blev fjernet fra versionen i Mac OS X 10.7 ; understøttelse af 32-bit ARM blev fjernet fra versionen i iOS 11 .

Mach

Grundlaget for XNU -kernen er en stærkt modificeret (hybrid) Open Software Foundation Mach -kerne ( OSFMK ) 7.3. Som sådan er det i stand til at køre kernen i et operativsystem som adskilte processer, hvilket giver en stor fleksibilitet (det kan køre flere operativsystemer parallelt over Mach-kernen), men dette reducerer ofte ydeevnen på grund af tidskrævende kerne/ brugertilstands kontekstskifte og overhead, der stammer fra kortlægning eller kopiering af meddelelser mellem adresserummet i kernen og servicedemonernes. Med macOS har designerne forsøgt at strømline nogle opgaver, og derfor blev BSD -funktioner indbygget i kernen med Mach. Resultatet er en stærkt modificeret (hybrid) OSFMK 7.3 -kerne, Apple -licenseret OSFMK 7.3, som er en mikrokerne, fra OSF. OSFMK 7.3 inkluderer gældende kode fra University of Utah Mach 4 -kernen og fra de mange Mach 3.0 -varianter, der er forgafflet fra den originale Carnegie Mellon University Mach 3.0 -mikrokerne.

BSD

Den Berkeley Software Distribution (BSD) del af kernen giver den bærbare Operating System Interface ( POSIX ) application programming interface (API, BSD systemkald), den Unix procesmodel toppen Mach opgaver, grundlæggende sikkerhedspolitikker, bruger- og gruppe-id'er, tilladelser, netværket protokol stakken (protokoller), det virtuelle filsystem kode (herunder en filsystem uafhængig journal lag), flere lokale filsystemer såsom Hierarchical File System (HFS, HFS Plus (HFS +)) og Apple File System (APFS), den Netværksfilsystem (NFS) -klient og -server, kryptografiske rammer, UNIX System V interprocess-kommunikation (IPC), revisionsundersystem, obligatorisk adgangskontrol og nogle af de låsende primitiver. BSD -koden i XNU er senest blevet synkroniseret med den fra FreeBSD -kernen. Selvom meget af det er blevet ændret betydeligt, forekommer der stadig kodedeling mellem Apple og FreeBSD -projektet fra 2009.

K32/K64

XNU i Mac OS X Snow Leopard , v10.6, ( Darwin version 10) findes i to varianter, en 32-bit version kaldet K32 og en 64-bit version kaldet K64 . K32 kan køre 64-bit applikationer i brugerlandet . Det nye i Mac OS X 10.6 var muligheden for at køre XNU i 64-bit kernerum . K32 var standardkernen for 10.6 Server, når den blev brugt på alle maskiner undtagen Mac Pro- og Xserve- modeller fra 2008 og fremefter og kan køre 64-bit applikationer. K64 har flere fordele i forhold til K32:

  • Kan administrere mere end 32 GB RAM, da hukommelseskortet vil forbruge et uforholdsmæssigt stort område af 32-bit kernerummet.
  • Cache-bufferstørrelser kan være større end hvad 32-bit kernerummet tillader, hvilket muligvis øger I/O-ydelsen.
  • Ydeevnen øges ved brug af højtydende netværksenheder eller flere grafikprocessorenheder (GPU'er), da kernen kan kortlægge alle enhederne i 64-bit plads, selvom flere har meget store direkte hukommelsesadgang (DMA) buffere.

Opstart, mens du holder 6 og 4 nede, tvinger maskinen til at starte K64 på maskiner, der understøtter 64-bit kerner. K64 kører 32-bit applikationer, men det kører ikke 32-bit kerneudvidelser (KEXT'er), så disse skal portes til K64 for at kunne indlæses.

XNU i OS X Mountain Lion , v10.8, og senere giver kun en 64-bit kerne.

I/O -sæt

I/O Kit er enhedsdriverrammen , skrevet i et undersæt af C ++ baseret på Embedded C ++ . Ved hjælp af sit objektorienterede design leveres funktioner inden for alle førerklasser inden for rammen, der hjælper enhedsdrivere med at blive skrevet på kortere tid og kode. I/O-kittet er multi-threaded, symmetrisk multiprocessing (SMP) -sikkert og giver mulighed for hot-pluggbare enheder og automatisk, dynamisk enhedskonfiguration.

Mange drivere kan skrives til at køre fra brugerplads , hvilket yderligere forbedrer systemets stabilitet. Hvis en user-space-driver går ned, vil den ikke nedbryde kernen. Men hvis en kernel-space-driver går ned, vil den nedbryde kernen. Eksempler på kernel-space-drivere omfatter diskadapter- og netværksadapterdrivere, grafikdrivere, drivere til Universal Serial Bus ( USB ) og FireWire- hostcontrollere og drivere til virtuel maskinsoftware som VirtualBox , Parallels Desktop til Mac og VMware Fusion .

Se også

Referencer

  • Loepere, Keith. "MK ++: A High Performance, High Assurance Microkernel" .

eksterne links