
Unnucleu hibrid este o architectură anucleuluisistemului de operare care încearcă să combine aspecte și beneficii al arhitecturilor de nucleumicronucleu șimonolitică utilizate în sisteme de operare pentrucalculator.[1][2]
Categoriile de nucleu tradiționale suntnucleele monolitice șimicronucleele (iarnanonucleele șiexonucleele sunt privite ca versiuni mai extreme al micronucleelor). Categoria "hibridă" e controversată, din cauza similitudinii nucleelor hibride și al nucleelor monolitice ordinare; termenul a fost respins deLinus Torvalds ca o simplă publicitate.[3]
Idea la spatele unui nucleu hibrid e să fie o structură de nucleu similară cu cea a unui micronucleu, dar să se implementeze structura dată într-o maniera ca a unui nucleu monolitic. În contrast cu un micronucleu, toate (sau aproape toate) serviciile sistemului de operare în nucleul hibrid totuși sunt înspațiul nucleului. Comparativ cu unmicronucleu nu există beneficii de siguranță de servicii fiindcă ele nu sunt amplasate înspațiul utilizatorului. Dar, la fel ca și unnucleu monolitic ordinar, nu este nici o penalizare de performanță pentru transmiterea mesajelor și schimbarea contextului între nucleu și modul utilizator care în mod normal vin cu unmicronucleu.

Un exemplu prominent de un nucleu hibrid enucleul NT dinMicrosoftWindows care stă la baza tuturor sistemelor de operare din familiaWindows NT, până la și inclusiv șiWindows 10 șiWindows Server 2019, și stă la bazaWindows Phone 8,Windows Phone 8.1, șiXbox One.
Windows NT a fost primul sistem de operare Windows bazat pe un nucleu hibrid. Nucleu hibrid a fost proiectat ca unmicronucleu modificat, influențat demicronucleul Mach dezvoltat deRichard Rashid la Universitatea Carnegie Mellon , dar fără a îndeplini toate cerințele unui micronucleu pur. Windows bazat pe NT se clasifică ca un nucleu hibrid (sau ca macronucleu[4]) decât ca un nucleu monolitic deoarece emularea subsistemelor rulează în procese server la nivel de utilizator, comparativ cu nivelul nucleului din nucleele monolitice, și încă din cauza numărului mare de obiective de proiectare care se aseamănă cu obiectivele de proiectare Mach (în particular separareapersonalităților SO de designul general al nucleului). În schimb, cauza de ce NT nu e sistem micronucleu e din cauza că majoritatea componentelor de sistem rulează în acelașispațiu de adrese ca și nucleul, fix ca în cazul unui design monolitic (într-un design monolitic tradițional, nu ar fi un micronucleu per se, dar nucleul ar implementa funcționalitate similară cu micronucleul din NT și subsistemele la nivel nucleu).
Principalapersonalitate sistem de operare în Windows esteWindows API, care este prezentă tot timpul. Subsistema de emulare care implementează personalitatea Windows se numeșteClient/Server Runtime Subsystem (csrss.exe). În versiunile NT înainte de 4.0, aceast process subsistemă mai conținea și gestionarul de ferestre, interfața pentru dispozitive grafice și driverele dispozitivelor grafice. Din motive de performanță, însă, în versunea 4.0 și următoarele, aceste module (care deseori îs implementate în spațiul utilizatorului chiar în sisteme monolite , mai ales acelea proiectate fără suport pentru grafică internă) rulează ca subsisteme la nivel nucleu.[4]
Aplicațiile care rulează pe NT sunt scrise pentru una din personalitățile SO (de obicei Windows API), și nu pentru APIul nativ NT pentru care documentația nu este disponibilă public (cu excepția rutinelor utilizate în dezvoltarea driverelor de dispozitiv). O personalitate SO e implementată ca un set de DLLuri (veziLibrărie cu legătură dinamică) în spațiul utilizatorului, care sunt mapate în spațiile de adrese al proceselor aplicațiilor la necesitate, împreună cu un proces server al subsistemului de emulare (cum a fost descris anterior). Aplicațiile accesează serviciile sistemului chemând DLLurile personalității SO mapate în spațiul lora de adrese, care la rândul lora cheamă librăria în timp de rulare NT (ntdll.dll), de asemenea mapată în spațiul de adrese al procesului. Librăria NT în timp de rulare procesează aceste chemări prinîntreruperea în nivelul nucleu fie să chemerutine executive la nivel nucleu sau să facăchemari de procedure locale (LPCuri) la procesele server subsistemă corespunzătoare la nivelul utilizatorului, care la rândul lora utilizează APIul NT pentru a comunica cu procesele aplicațiilor, subsistemele la nivel nucleu și între ele.[5]

XNU enucleul pe careApple Inc. l-a achiziționat și dezvoltat pentru uz în sistemele de operaremacOS șiiOS și scos caprogram liber cu sursă deschisă ca parte dinsistemul de operare Darwin.XNU e unacronim pentruX nu eUnix.[6]
Inițial dezvoltat deNeXT pentru sistemul de operareNeXTSTEP, XNU a fost un nucleu hibrid combinând versiunea 2.5 denucleul Mach cu componente din4.3BSD și un API orientat obiect pentru a scri drivere numitDriver Kit.
După ce Apple a procurat NeXT, componenta Mach a fost actualizată la OSFMK 7.3,[7] care e un micronucleu.[8] Apple utilizează un OSFMK 7.3 modificat substanțial care funcționează ca un nucleu hibrid cu părți din FreeBSD incluse.[7] (OSFMK 7.3 include cod aplicabil din nucleul Mach 4 al Universității Utah și cod aplicabil din multe variante Mach 3.0 care au apărut din nucleul Mach 3.0 original al universității Carnegie Mellon.) Componentele BSD au fost actualizate cu cod din proiectulFreeBSD șiDriver Kit a fost înlocuit cu unAPIC++ pentru a scri drivere numit I/O Kit.
Ca și altenuclee moderne, XNU e hibrid, conținând funcționalițăți atât dinnuclee monolitice și dinmicronuclee, încercând să scoată cea mai bună utilizare din ambele technologii, ca de exemplu capabilitateatransmiterea mesajelor al micronucleelor permițând modularitatea mai mare[necesită citare] și porțiuni mai mari de SO să beneficieze dememorie protejată,[necesită citare] dar în același timp păstrând viteza nucleelor monolitice pentru anumite sarcini critice.
As to the whole "hybrid kernel" thing - it's just marketing. It's "Oh, those microkernels had good PR, how can we try to get good PR for our working kernel? Oh, I know, let's use a cool name and try to imply that it has all the PR advantages that that other system has.
Nucleu (sistem de operare)Nucleu (sistem de operare)