Nucleu hibrid
Un nucleu hibrid este o architectură a nucleului sistemului de operare care încearcă să combine aspecte și beneficii al arhitecturilor de nucleu micronucleu și monolitică utilizate în sisteme de operare pentru calculator.[1][2]
General
[modificare | modificare sursă]Categoriile de nucleu tradiționale sunt nucleele monolitice și micronucleele (iar nanonucleele și exonucleele 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 de Linus 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 în spațiul nucleului. Comparativ cu un micronucleu nu există beneficii de siguranță de servicii fiindcă ele nu sunt amplasate în spațiul utilizatorului. Dar, la fel ca și un nucleu 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 un micronucleu.
Exemple
[modificare | modificare sursă]Nucleul NT
[modificare | modificare sursă]Un exemplu prominent de un nucleu hibrid e nucleul NT din Microsoft Windows care stă la baza tuturor sistemelor de operare din familia Windows NT, până la și inclusiv și Windows 10 și Windows Server 2019, și stă la baza Windows Phone 8, Windows Phone 8.1, și Xbox One.
Windows NT a fost primul sistem de operare Windows bazat pe un nucleu hibrid. Nucleu hibrid a fost proiectat ca un micronucleu modificat, influențat de micronucleul Mach dezvoltat de Richard 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 separarea personalităț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și spaț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).
Principala personalitate sistem de operare în Windows este Windows API, care este prezentă tot timpul. Subsistema de emulare care implementează personalitatea Windows se numește Client/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 (vezi Libră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ă cheme rutine 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]
Nucleul XNU
[modificare | modificare sursă]XNU e nucleul pe care Apple Inc. l-a achiziționat și dezvoltat pentru uz în sistemele de operare macOS și iOS și scos ca program liber cu sursă deschisă ca parte din sistemul de operare Darwin. XNU e un acronim pentru X nu e Unix.[6]
Inițial dezvoltat de NeXT pentru sistemul de operare NeXTSTEP, XNU a fost un nucleu hibrid combinând versiunea 2.5 de nucleul Mach cu componente din 4.3BSD și un API orientat obiect pentru a scri drivere numit Driver 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 proiectul FreeBSD și Driver Kit a fost înlocuit cu un API C++ pentru a scri drivere numit I/O Kit.
Descrierea
[modificare | modificare sursă]Ca și alte nuclee moderne, XNU e hibrid, conținând funcționalițăți atât din nuclee monolitice și din micronuclee, încercând să scoată cea mai bună utilizare din ambele technologii, ca de exemplu capabilitatea transmiterea mesajelor al micronucleelor permițând modularitatea mai mare [necesită citare] și porțiuni mai mari de SO să beneficieze de memorie protejată,[necesită citare] dar în același timp păstrând viteza nucleelor monolitice pentru anumite sarcini critice.
Alte
[modificare | modificare sursă]- BeOS
- Syllable
- bazate pe BSD
- DragonFly BSD (primul non-Mach SO BSD care utilizează un nucleu hibrid)
- NetWare[9]
- Plan 9 de Bell Labs
- OS/2[10]
- eComStation
- ArcaOS
- OS/4
- ReactOS
- Tru64 UNIX (în trecut Digital UNIX)
Note
[modificare | modificare sursă]- ^ „Hybrid Kernel - OSDev Wiki”. wiki.osdev.org. Accesat în .
- ^ „What is Hybrid Kernel? - Definiția din Techopedia”. Techopedia.com (în engleză). Accesat în .
- ^ „Linus Torvalds”.
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.
- ^ a b „MS Windows NT Kernel-mode User and GDI White Paper”. Microsoft Corporation. . Accesat în .
- ^ Probert, Dave (). „Overview of Windows Architecture”. Using Projects Based on Internal NT APIs to Teach OS Principles. Microsoft Research/Asia - Beijing. Accesat în .
- ^ „Porting UNIX/Linux Applications to OS X: Glossary”. Apple Computer. . Accesat în .
- ^ a b Jim Magee. WWDC 2000 Session 106 - Mac OS X: Kernel. 14 minutes in. https://www.youtube.com/watch?v=ggnFoDqzGMU.
- ^ Douglas M. Wells. „A Trusted, Scalable, Real-Time Operating System Environment” (PDF). Arhivat din original (PDF) la .
- ^ Drew Major; Greg Minshall; Kyle Powell. „An Overview of the NetWare Operating System”.
- ^ „OS/2 Kernel”. Arhivat din original la . Accesat în .
- ^ WWDC 2000 Session 106 - Mac OS X: Kernel, de Jim Magee URL : [1]
Nucleu (sistem de operare)Nucleu (sistem de operare)
Vezi și
[modificare | modificare sursă]- Micronucleu
- Exonucleu
- Nanonucleu
- Nucleu monolitic
- Sistem de operare cu spațiu de adrese unic
- Arhitectura Windows NT
- XNU
Legături externe
[modificare | modificare sursă]- Mark Russinovich (). „Inside the Native API”. Sysinternals. Arhivat din original la . Accesat în .