Funcții microkernel. Microkernel vs. monolit și „triumful” lui MINIX. Vedeți ce este „Microkernel” în alte dicționare

  • Programarea sistemului,
  • dezvoltare Linux
  • Recent, Andrew Tatenbaum, profesor la Vrije Universiteit Amsterdam și autorul sistemului educațional și miniatural Unix Minix, s-a trezit din nou în centrul acțiunii datorită genului epistolar. În scrisoarea sa către Intel, el a mulțumit companiei pentru că a folosit Minix, s-a plâns că nu l-a trâmbițat la fiecare pas și a declarat că din această cauză, puțini oameni știu că Minix este astăzi. cel mai popular sistem de operare din lume.



    Spre meritul său, profesorul știe să aleagă destinatarul, ora și locul pentru a crea un efect zgomotos și de durată printr-un simplu mesaj trimis prin e-mail. Corespondentul său anterior a fost Linus Torvalds, iar corespondența lor despre monolitic și microkernel a intrat în analele istoriei IT. Fără aceasta, este greu de înțeles de ce Andrew Tanenbaum este atât de încântat de presupusul succes al Minix, care timp de numai zece ani a asigurat funcționarea backdoor-ului IME a Intel.

    Nașterea Linux și critica la adresa nucleului monolitic

    În urmă cu 26 de ani, programarea pentru Unix nu era o sarcină banală pentru studentul obișnuit, deoarece toate aromele Unix erau plătite. Pentru a stăpâni acest sistem de operare, Linus decide să instaleze Minix. Internetul la acea vreme era încă la început, comanda sistemului de operare se făcea prin poștă obișnuită, precum și prin livrare. Pentru Minix a trebuit să iau 169 de dolari.


    Am o mulțime de plângeri despre Minix. Cel mai rău lucru a fost emularea terminalului, un program foarte important pentru mine pentru că era ceea ce obișnuiam să mă conectez la computerul universității. Am depins de această emulare de fiecare dată când m-am conectat la computerul universității pentru a lucra cu puternicul sistem Unix sau pur și simplu să intru online.

    Curând, viitorul creator de Linux a descoperit deficiențele serioase ale Minix. Deoarece era doar o versiune educațională a Unix, profesorul a distorsionat-o în mod deliberat. Multe dintre aceste neajunsuri puteau fi eliminate cu un patch de la cel mai faimos hacker Minix, Bruce Evans, dar pentru a-l instala trebuia să faci destul de mult lăutari. Cel mai semnificativ dezavantaj pentru Linus a fost programul de emulare a terminalului, care a trebuit să fie înlocuit cu al său. Apoi a fost nevoie de un driver de sistem de fișiere și plecăm, nucleul noului sistem de operare s-a născut ca un terci dintr-un topor.


    25 august 1991 Linus trimite faimosul său mesaj că lucrează la un sistem de operare gratuit, dar nu va fi un proiect atât de mare și profesionist precum GNU. Printre altele, de remarcat este faptul că Linus trimite acest și alte anunțuri timpurii ale sistemului său de operare la conferința Minix, atrăgând utilizatorii acestuia din urmă.


    Andrew Tanenbaum nu a reacționat la acest lucru în niciun fel deocamdată, dar Linux a crescut ca un bulgăre de zăpadă. Deja în ianuarie 1992, a fost lansată versiunea 0.12, în care a fost implementată paginarea pe disc - ceva care nu era disponibil în Minix. La scurt timp după aceasta, profesorul s-a condescendent față de parvenit să-i răspundă personal, iar pe 29 ianuarie, Linus a primit un mesaj la conferința comp.os.minix cu conținut moralizator. Începutul a fost încurajator.


    Din: [email protected](Andy Tanenbaum)
    Asta: Grupuri de știri: comp.os.minix
    Subiect: LINUX este depășit
    Data: 29 ianuarie 92 12:12:50 GMT

    Am fost plecat în SUA pentru câteva săptămâni, așa că nu am scris prea multe despre LINUX (nu că aș scrie dacă aș fi aici). Cu toate acestea, acum vreau să fac câteva comentarii.
    După cum știți cei mai mulți dintre voi, pentru mine MINIX este un hobby pe care îl fac serile când mă săturasesc să scriu cărți și nu există războaie, revoluții sau audieri parlamentare pe CNN. Principala mea activitate este predarea și cercetarea în domeniul sistemelor de operare.

    Aceasta a fost urmată de informații de fundal despre nucleul monolitic, microkernel și sistemul de operare care profesează unul sau altul. Apoi a venit argumentul logic insuportabil că printre specialiștii în dezvoltarea sistemelor de operare, dezbaterea pe această temă a încetat deja din cauza avantajelor clare ale microkernel-ului. Alte declarații că Minix este progresiv, iar Linux este o întoarcere la anii 1970. În plus, Linux este blocat la o singură arhitectură, în timp ce Minix a fost portat de la procesoarele Intel pe alte platforme: Atari, Amiga, Macintosh, SPARC și NS32016.


    Aș putea spune multe despre meritele relative ale acestor două abordări, dar este suficient să spun că dezbaterea dintre dezvoltatorii de sisteme de operare s-a încheiat. Microkernel-ul a câștigat. Minix este un sistem cu microkernel. Sistemul de fișiere și managementul memoriei sunt procese separate care rulează în afara nucleului. I/O se realizează și separat. LINUX este un sistem monolitic. Acesta este un mare pas înapoi în anii 70. ani.


    La începutul anilor 90, microkernel-ul era într-adevăr un favorit printre designerii de sisteme de operare. În opinia lor, nucleul sistemului de operare ar trebui să fie minim și să conțină doar elementele esențiale: managementul memoriei, planificatorul și IPC, iar orice altceva ar trebui implementat ca servicii. Prin împărțirea întregului în multe părți simple, complexitatea dispare și serviciile ușoare comunică cu ușurință cu microkernel-ul. O defecțiune a unui sistem de fișiere sau a unui driver de card de rețea a fost astfel pur și simplu restabilită prin repornirea serviciului corespunzător.

    Linus acceptă provocarea

    Linus avea o părere diferită în această chestiune. Deși a apreciat eleganța și grația arhitecturii microkernel din punct de vedere teoretic, el a considerat totuși microkernel-ul nepotrivit pentru scopuri practice. Simplitatea imaginară a microkernel-ului are ca rezultat faptul că interacțiunea și interfața dintre părțile simple ale microkernel-ului creează complicații care neutralizează toate avantajele sale „de hârtie”. În răspunsul său, el și-a conturat viziunea asupra acestei probleme. După câteva atacuri îndrăznețe asupra adversarului său, Linus ajunge la subiect.


    Din: [email protected](Linus Benedict Torvalds)
    Subiect: Re: LINUX este depășit
    Data: 29 ianuarie 92 23:14:26 GMT
    Organizație: Universitatea din Helsinki

    ...
    Da, Linux este un sistem monolitic și sunt de acord că microkernel-ul este mai bun. Dacă postarea ta nu ar avea un titlu atât de controversat, probabil că aș fi de acord cu cele mai multe din ceea ce spui. Din punct de vedere teoretic (și estetic), Linux pierde. Dacă nucleul GNU ar fi fost gata în primăvara trecută, nu mi-aș fi început dezvoltarea: problema este că nu era gata atunci și nu este încă gata. Linux câștigă în primul rând pentru că este deja gata.

    Apoi enumeră problemele Minix cu multitasking-ul sistemului de fișiere.


    Dacă acesta ar fi singurul criteriu pentru calitatea nucleului, ai avea dreptate. Cu toate acestea, nu scrieți despre faptul că microkernel-ul din minix este prost realizat și apar probleme cu multitasking (în kernel). Dacă aș face un sistem de operare al cărui sistem de fișiere ar avea probleme cu multitasking-ul, nu aș fi atât de repede să-i judec pe alții: dimpotrivă, m-aș apleca pe spate pentru a-i face pe toți să uite de eșecul meu. Da, știu că există o mulțime de patch-uri pentru minix pentru a suporta multi-threading, dar sunt doar patch-uri, iar Bruce Evans spune că există încă o mulțime de probleme de sincronizare.

    Încărcarea din conferință continuă, noi participanți intră în dispută. Andrew Tanenbaum și Linus Torvalds își continuă dezbaterea, dar într-un mod mai supus. Mai jos este o traducere gratuită a citatelor selectate.


    Andrew Tanebaum: Am scris în mod deliberat Minix atât de stângaci încât studenții să-l poată rula pe o varietate de hardware de computer ieftin, dar designul sistemului meu de operare este normal și nu ca Linux-ul tău înapoiat. Mai mult, nu poate fi transferat pe alte platforme. ți-aș da o notă la examen.

    David Feustel: Nu e mare lucru, iar Einstein a avut note proaste la matematică și fizică.

    Ken Thompson: Utilizatorilor nu le pasă dacă software-ul de pe computerul lor este actualizat, performanța este mult mai importantă. Da, viitorul aparține microkernel-ului, dar un nucleu monolitic este mai ușor de gătit. Cu toate acestea, este mai ușor să o dai peste cap dacă scrii codul în grabă.

    Randy Burns: Apelurile de sistem Linux sunt compatibile cu sistemele de operare portabile, așa că plângerile privind blocarea într-o singură platformă sunt irelevante. Dimpotrivă, Linux reduce decalajul, permițându-ne să folosim programe GNU. Poate că peste câțiva ani, când sistemele Hurd și BSD low-cost devin larg răspândite și Linux devine învechit, dar deocamdată ne putem bucura de gcc, bash, bison pentru aproape nimic și putem scrie cod pentru un sistem de operare mai bun..

    Pete French: Nu sunt microkernel-urile și nucleele monolitice artefacte ale limbajului de programare în care sunt scrise? Care este diferența dintre un microkernel scris în C și un nucleu monolitic scris în OCCAM?

    Linus Torvalds: Ai încercat atât de mult de dragul studenților, ei bine, atunci este de înțeles. Dar multitasking-ul în sistemul de operare este încă o problemă, indiferent de cum ați privi, dar pe Linux-ul meu monolitic „înapoi” totul zboară. Nu vor fi probleme mari cu portabilitatea, deoarece API-ul Linux este portabil - dacă ar exista oameni dispuși să o facă. Și oricum nu iau note bune, m-am certat recent cu un alt profesor de arhitectură a sistemului de operare.

    Lawrence C. Foard: Teoreticienii sunt teoreticieni. Au idei grozave, dar nimeni nu s-a obosit să le testeze în practică. Procesoarele Intel pe 32 de biți sunt disponibile pe piață de aproape 10 ani, dar nimeni, în afară de Linus, nu a scris un sistem de operare pentru ei, pe care îl puteți atinge fără a fi nevoie să cumpărați 100.000 USD AT&T Unix. Sistemul de operare finit costă zeci de hârtie. eu Astăzi pot scrie cod pentru Linux si experimenteaza dupa bunul plac.

    peter da silva: Este grozav că Linux există, iar nucleul monolitic este unul dintre motivele pentru care a fost creat atât de repede. Acesta este un argument puternic în favoarea unui nucleu monolitic, dar nu înseamnă că un microkernel trebuie să fie lent sau că este de hârtie.

    Argumentele în favoarea microkernel-ului la acea vreme au depășit cu adevărat, dar astăzi experiența utilizării ambelor principii de construcție a sistemului de operare

    Microkernel- Aceasta este o parte minimă a sistemului de operare, care stă la baza extensiilor modulare și portabile. Ideea principală a unui microkernel este de a crea mediul necesar de nivel superior din care să poată fi accesate toate funcțiile la nivel hardware.

    Microkernel-ul conține cantitatea minimă de cod necesară pentru implementarea apelurilor de sistem de bază. Aceste apeluri includ transmiterea de mesaje și alte comunicări între procese externe nucleului, gestionarea întreruperilor și alte funcții. Funcțiile rămase sunt implementate ca suplimente modulare care interacționează între ele folosind mesaje.

    Microkernel-ul rulează la cea mai mare prioritate și alimentează restul sistemului de operare ca un set de aplicații server. Tehnologia Mach microkernel a fost creată la Universitatea Carnegie Mellon și servește drept bază pentru multe sisteme de operare.

    Funcționalitatea microkernel-ului este limitată pentru a-și reduce dimensiunea și a transfera cea mai mare parte a sistemului de operare la rangul unui program de aplicație. De obicei, un microkernel acceptă cinci tipuri diferite de servicii:

    managementul memoriei virtuale,

    Gestionarea lucrărilor și a firelor

    Comunicare între procese (IPC – comunicare între procese),

    I/O și managementul întreruperilor

    Furnizarea serviciului client-server.

    Alte funcții ale sistemului de operare se află în alte servicii OS care rulează ca aplicații microkernel.

    Esența arhitecturii microkernel este următoarea. Doar o parte foarte mică a sistemului de operare, numită microkernel, rulează în modul privilegiat. Microkernel-ul este protejat de restul sistemului de operare și de aplicații. Setul de funcții al unui microkernel corespunde funcțiilor stratului de mecanisme de bază ale unui nucleu obișnuit. Acestea sunt funcții care nu pot fi efectuate în modul utilizator. Figura 1.2 prezintă mecanismul de mutare a majorității funcțiilor nucleului în spațiul utilizatorului.

    Datorită dimensiunii și capacității sale de a suporta servicii de programare standard, un microkernel este mai simplu decât nucleele sistemelor de operare monolitice sau modulare.

    Figura 4.1 – Transferul majorității funcțiilor kernelului în spațiul utilizatorului

    Toate celelalte funcții ale nucleului sunt ambalate ca aplicații care rulează în modul utilizator. Nu există recomandări clare cu privire la funcțiile sistemului care trebuie efectuate în modul privilegiat și care în modul utilizator.

    Managerii de resurse plasați în modul utilizator se numesc servere OS, deoarece scopul lor principal este de a servi cererile de la aplicații și alte module OS. Pentru a implementa acest mecanism, sistemul de operare trebuie să aibă o modalitate eficientă de a apela procedurile unui proces de la altul. Sprijinirea acestui mecanism este funcția principală a microkernel-ului.

    Figura 4.2 prezintă mecanismul de accesare a funcțiilor OS concepute ca servere. Clientul, care poate fi fie un program de aplicație, fie o altă componentă a sistemului de operare, solicită executarea unei anumite funcții de la serverul corespunzător, trimițându-i un mesaj. Transferul direct de mesaje între aplicații nu este posibil, deoarece spațiile lor de adrese sunt izolate unele de altele. Microkernel-ul, care rulează în modul privilegiat, are acces la toate spațiile de adrese și, prin urmare, poate acționa ca intermediar. Astfel, funcționarea unui sistem de operare microkernel corespunde modelului client-server, în care rolul de transport este îndeplinit de microkernel.

    Cel mai proeminent reprezentant al sistemelor de operare microkernel este sistemul de operare în timp real QNX. Microkernel-ul QNX planifică numai programarea și expedierea proceselor, comunicarea procesului, gestionarea întreruperilor și servicii de rețea de nivel inferior. Un astfel de microkernel oferă doar două duzini de apeluri de sistem și are o dimensiune de la 8 la 46 de kiloocteți.

    Figura 4.2 – Implementarea unui apel de sistem în arhitectura microkernel

    Pentru a construi un sistem QNX minim, la microkernel trebuie adăugat un manager de proces, care creează procese și le gestionează și memoria lor. Pentru a utiliza QNX pe un computer desktop, la microkernel trebuie să fie adăugate și un sistem de fișiere și un manager de dispozitive.

    Toți acești manageri rulează în afara spațiului de kernel, astfel încât nucleul rămâne mic.

    Să luăm în considerare pe scurt avantajele și dezavantajele sistemelor de operare microkernel. Avantajele lor includ:

    Portabilitate datorită faptului că tot codul dependent de mașină este izolat în microkernel,

    Extensibilitate datorită unui set limitat de interfețe microkernel bine definite; adăugarea unui nou subsistem necesită dezvoltarea unei noi aplicații, care nu afectează integritatea microkernel-ului,

    Fiabilitate datorită faptului că fiecare server rulează ca un proces separat în propria zonă de memorie, care îl protejează de alte servere OS (într-un sistem de operare tradițional, toate modulele se pot influența reciproc); Volumul redus de cod microkernel contribuie, de asemenea, la creșterea fiabilității,

    Potrivit pentru calcularea distribuită, deoarece utilizează mecanisme de interacțiune client-server, iar serverele OS microkernel pot fi localizate fie pe același computer, fie pe computere diferite.

    Principalul dezavantaj al unui sistem de operare microkernel este performanța sa redusă în comparație cu un sistem de operare clasic. Faptul este că, odată cu organizarea clasică a sistemului de operare, execuția unui apel de sistem este însoțită de două comutatoare de mod și cu o arhitectură microkernel - patru. Situația este ilustrată în Figura 4.3.

    Figura 4.3 – Schimbarea modurilor la efectuarea unui apel de sistem

    Severitatea acestui neajuns este bine ilustrată de istoria dezvoltării Windows NT. În versiunile 3.1 și 3.5, managerul de ferestre, shell-ul grafic și driverele de dispozitiv grafic de nivel înalt au fost incluse în serverul în modul utilizator, iar aceste funcții au fost apelate conform designului microkernel-ului. Cu toate acestea, dezvoltatorilor a devenit clar că un astfel de mecanism reduce semnificativ performanța sistemului, astfel încât în ​​versiunea 4.0 modulele enumerate mai sus au fost incluse în nucleu. Acest fapt a îndepărtat sistemul de operare de arhitectura ideală de microkernel, dar a făcut sistemul mai productiv.

  • gestionarea spațiului de adrese de memorie virtuală.
  • managementul proceselor și firelor de execuție (threads).
  • mijloace de comunicare între procese.
  • Toate celelalte servicii OS, furnizate direct de nucleu în nucleele monolitice clasice, sunt implementate în spațiul de adrese utilizator (Ring3) în arhitecturile microkernel și sunt numite servicii. Exemple de astfel de servicii aduse în spațiul utilizatorului în arhitecturile microkernel sunt serviciile de rețea, sistemul de fișiere și driverele.

    Principalul avantaj al arhitecturii microkernel este gradul ridicat de modularitate al nucleului sistemului de operare. Acest lucru face mult mai ușor să adăugați componente noi la acesta. Într-un sistem de operare microkernel, puteți încărca și descărca noi drivere, sisteme de fișiere etc. fără a întrerupe funcționarea acestuia Procesul de depanare a componentelor kernelului este mult simplificat, deoarece o nouă versiune a driverului poate fi încărcată fără a reporni întregul sistem de operare. . Componentele nucleului sistemului de operare nu sunt fundamental diferite de programele utilizatorului, așa că puteți folosi instrumente obișnuite pentru a le depana. Arhitectura microkernel îmbunătățește fiabilitatea sistemului deoarece o defecțiune la nivel de program neprivilegiat este mai puțin periculoasă decât o defecțiune la nivelul modului kernel.

    Și pentru a adăuga un driver pentru un anumit dispozitiv la un sistem de operare cu microkernel, nu trebuie să recompilați întregul nucleu, ci doar să compilați separat acest driver și să-l rulați în spațiul utilizatorului.

    În același timp, arhitectura sistemului de operare microkernel introduce o suprasarcină suplimentară de mesagerie, care are un impact negativ asupra performanței. Pentru ca un sistem de operare microkernel să fie la fel de rapid ca sistemele de operare bazate pe un nucleu monolitic, este necesar să se proiecteze foarte atent împărțirea sistemului în componente, încercând să minimizeze interacțiunea dintre ele. Astfel, principala dificultate în crearea sistemelor de operare microkernel este necesitatea unui design foarte atent.

    Un exemplu clasic de sistem microkernel este Symbian OS. Acesta este un exemplu de sistem de operare microkernel comun și dovedit (și începând cu Symbian OS v8.1 și nanokernel).

    Creatorii Symbian OS au reușit să combine eficiența și armonia conceptuală, în ciuda faptului că versiunile moderne ale acestui sistem oferă capabilități extinse, inclusiv instrumente pentru lucrul cu date în flux, stive de protocoale care sunt esențiale pentru latența kernelului, grafică și video de înaltă rezoluție) . Dezvoltatorii Symbian au mutat aproape toate sarcinile aplicației (adică, dincolo de competența nucleului) în module de server care operează în spațiul de adrese ale utilizatorului.

    În Windows NT versiunea 3.x, a fost utilizată o arhitectură microkernel cu un proces de service pentru subsistemul grafic și interfața cu utilizatorul. În special, driverul grafic a fost încărcat în contextul procesului de service, nu nucleul. Începând cu versiunea 4, aceasta a fost abandonată, procesul de service a fost reținut doar pentru gestionarea ferestrelor consolei din linia de comandă, iar subsistemul grafic însuși, împreună cu driverul hardware (inclusiv grafica 3D) s-a mutat într-o regiune special separată a nucleului sistemului de operare.

    Sistemul de operare Windows CE (și ansamblurile create pe baza acestuia, cum ar fi Windows Mobile), fiind aproape complet compatibil (ca subset) cu Windows NT în ceea ce privește apelurile și metodele de programare a aplicațiilor, este totuși complet diferit de Windows NT în arhitectura internă și este OS microkernel cu eliminarea tuturor driverelor de dispozitiv, a stivelor de rețea și a subsistemului grafic din procesele de serviciu.

    Dezavantaj - taxa pentru „schimbarea” forțată a proceselor din nucleu (schimbarea contextului); acest fapt explică de fapt dificultățile în proiectarea și scrierea nucleelor ​​unui astfel de design. Aceste neajunsuri pot fi depășite de sistemele de operare care utilizează arhitectura exokernel, care este o dezvoltare ulterioară a arhitecturii microkernel.

    Vezi si

    Micro-sâmburi
    Sistem de operare bazat pe microkernel

    Fundația Wikimedia. 2010.

    Sinonime:

    Vedeți ce este un „Microkernel” în alte dicționare:

      Microkernel... Dicționar de ortografie - carte de referință

      Partea centrală a sistemului de operare, care îndeplinește principalele funcții de management al sistemului: managementul memoriei virtuale; suport pentru executarea procesului; organizarea interacțiunii proceselor; deservirea datelor de intrare/ieșire și întreruperi. De… … Dicţionar financiar- Acest termen are alte semnificații, vezi L4. Acest articol ar trebui să fie Wikified. Vă rugăm să-l formatați conform regulilor de formatare a articolelor... Wikipedia

      Acest termen are alte semnificații, vezi Amoeba (sensuri). Amoeba Dezvoltator Andrew Tanenbaum și alții Cod sursă Deschide Prima ediție 1983 Ultima versiune 5.3 1996 Tip kernel Mick ... Wikipedia

      Spring este un sistem de operare experimental orientat pe obiecte microkernel dezvoltat de Sun Microsystems la începutul anilor 1990. A folosit principii similare cu cele utilizate în nucleul Mach. Dezvoltarea s-a oprit la mijloc... Wikipedia

      Aceasta este o listă de sisteme de operare cunoscute. Sistemele de operare pot fi clasificate în funcție de tehnologia subiacentă (descendenți de tip UNIX, post-UNIX/UΝΙΧ), tip de licență (proprietar sau open source), indiferent dacă sunt în curs de dezvoltare (moștenire sau... Wikipedia

      Acest termen are alte semnificații, vezi Core. Nucleul este partea centrală a sistemului de operare (OS), oferind aplicațiilor acces coordonat la resursele computerului, cum ar fi timpul procesorului, memoria și hardware-ul extern... ... Wikipedia

      O listă de servicii de articole create pentru a coordona activitatea de dezvoltare a subiectului. Acest avertisment nu este setat... Wikipedia

      O listă de servicii de articole create pentru a coordona activitatea de dezvoltare a subiectului. Acest avertisment nu se aplică articolelor informaționale, listelor și glosarelor... Wikipedia

      3.1.3a Dezvoltatorul Andrew Tanenbaum ... Wikipedia

      Desktop QNX 6 (Neutrino) de... Wikipedia

    În sistemele de operare microkernel, se poate distinge un modul compact central care aparține părții de supraveghere a sistemului. Acest modul este de dimensiuni foarte mici și realizează un număr relativ mic de funcții de control, dar permite transferul controlului către alte module de control, care vor îndeplini funcția solicitată. Microkernel- aceasta este partea principală (de bază) minimă a sistemului de operare, servind drept bază pentru extensii modulare și portabile. Microkernel-ul în sine este un modul software de sistem care rulează în starea de cea mai mare prioritate a computerului și comunică cu restul sistemului de operare, care este considerat un set de aplicații (servicii) server.

    În anii 90 ai secolului al XX-lea, era o credință foarte comună că majoritatea sistemelor de operare ale generațiilor următoare vor fi construite ca microkernel. Cu toate acestea, practica arată că acest lucru nu este în întregime adevărat. Dezvoltatorii doresc să aibă un microkernel compact, dar în același timp să includă cât mai multe funcții care sunt realizate direct de acest modul software. Deoarece executarea funcției solicitate de către un alt modul numit din microkernel duce la întârzieri suplimentare și complicații suplimentare. Mai mult, există o mulțime de opinii diferite despre modul în care ar trebui să fie organizate serviciile sistemului de operare în raport cu microkernel-ul; cum să proiectați driverele de dispozitiv pentru a obține cea mai mare eficiență, dar să păstrați funcțiile driverului cât mai independente de hardware; dacă operațiunile non-kernel ar trebui efectuate în spațiul kernel sau spațiul utilizatorului; Merită să păstrați programele subsistemelor existente (de exemplu, UNIX) sau este mai bine să aruncați totul și să începeți de la zero.

    Ideea principală din spatele tehnologiei microkernel este de a crea mediul necesar la nivelul superior al ierarhiei din care să poată fi accesate cu ușurință toate funcționalitățile la nivel de hardware. În acest caz, microkernel-ul este punctul de plecare pentru crearea tuturor celorlalte module de sistem. Toate aceste alte module, care implementează funcțiile necesare sistemului, sunt apelate din microkernel și îndeplinesc un rol de serviciu. În același timp, ei primesc statutul unui proces sau sarcină normală. Putem spune că arhitectura microkernel corespunde tehnologiei client-server. Această tehnologie face posibilă implementarea principiilor de mai sus de proiectare a sistemului de operare într-o măsură mai mare și cu mai puțină muncă.

    Cea mai importantă sarcină a dezvoltării unui microkernel este de a selecta primitivele de bază care trebuie să fie în microkernel pentru a oferi serviciul necesar și suficient. Microkernel-ul conține și execută cantitatea minimă de cod necesară pentru implementarea apelurilor de sistem de bază. Aceste apeluri includ transmiterea mesajelor și alte comunicări între procesele externe microkernel-ului, suport pentru gestionarea întreruperilor și o serie de alte funcții foarte puține. Funcțiile de sistem rămase caracteristice sistemelor de operare „obișnuite” (non-microkernel) sunt furnizate ca procese adiționale modulare care interacționează în primul rând între ele și interacționează prin transmiterea mesajelor.

    Pentru majoritatea sistemelor de operare microkernel, baza acestei arhitecturi este tehnologia microkernel-ului Mach. Acest sistem de operare a fost creat la Universitatea Carnegie Mellon, iar mulți dezvoltatori i-au urmat exemplul.

    Funcțiile efectuate de microkernel sunt limitate pentru a reduce dimensiunea acestuia și a maximiza cantitatea de cod care rulează ca un program de aplicație. Microkernel-ul include doar acele funcții care sunt necesare pentru a defini un set de medii abstracte de procesare pentru programele de aplicație și pentru a permite aplicațiilor să lucreze împreună. Ca rezultat, microkernel-ul oferă doar cinci tipuri diferite de servicii:

    • managementul memoriei virtuale;
    • suport pentru joburi și fire;
    • interacțiunea între procese (Inter-Process Communication, IPC);
    • Suport I/O și gestionarea întreruperilor;
    • servicii de gazdă și procesor.

    Alte subsisteme și funcții ale sistemului de operare, cum ar fi sistemele de fișiere, suportul pentru dispozitive externe și interfețele software tradiționale, sunt împachetate ca servicii de sistem sau au statutul de sarcini obișnuite de procesare. Aceste programe rulează ca aplicații microkernel.

    Folosind conceptul de fire multiple de execuție per job, microkernel-ul creează un mediu de aplicație care permite utilizarea multiprocesoarelor; nu este deloc necesar ca mașina să fie multiprocesor: pe o mașină cu un singur procesor, diferite fire se execută pur și simplu în momente diferite. Tot suportul necesar pentru mașinile multiprocesor este concentrat într-un microkernel relativ mic și simplu.

    Datorită dimensiunii lor mici și capacității de a sprijini alte servicii ca procese normale care rulează împreună cu programele de aplicație, microkernel-urile în sine sunt mai simple decât nucleele monolitice sau modulare ale sistemului de operare. Cu un microkernel, partea de supraveghere a sistemului de operare este împărțită în părți modulare care pot fi configurate în mai multe moduri, permițând construirea de sisteme mai mari prin adăugarea de părți la cele mai mici. De exemplu, fiecare serviciu neutru independent de hardware este separat din punct de vedere logic și poate fi configurat în moduri diferite. De asemenea, microkernel-urile facilitează suportarea multiprocesoarelor prin crearea unui mediu software standard care poate folosi mai multe procesoare dacă există, dar rulează pe unul dacă nu există. Codul specializat pentru multiprocesoare este limitat la microkernel-ul însuși. Mai mult, rețelele de microkernel-uri care comunică între ele pot fi folosite pentru a oferi suport de sistem operațional pentru clasa în curs de dezvoltare a mașinilor masiv paralele.

    În unele cazuri, utilizarea abordării microkernel în practică întâmpină anumite dificultăți, care se manifestă printr-o ușoară încetinire a vitezei de execuție a apelurilor de sistem la trecerea mesajelor prin microkernel față de abordarea clasică. Pe de altă parte, se poate afirma contrariul. Deoarece microkernel-urile sunt mici și extrem de optimizate, în anumite condiții pot oferi performanța în timp real necesară pentru controlul dispozitivului și comunicațiile de mare viteză. În cele din urmă, microkernel-urile bine structurate oferă un strat de izolație împotriva diferențelor hardware care nu sunt mascate de utilizarea limbajelor de programare de nivel înalt. Astfel, facilitează portarea codului și măresc nivelul de reutilizare a codului.

    Cel mai proeminent reprezentant al sistemelor de operare microkernel este sistemul de operare în timp real QNX. Microkernel-ul QNX acceptă doar programarea și expedierea proceselor, comunicarea proceselor, gestionarea întreruperilor și servicii de rețea de nivel inferior. Acest microkernel oferă doar câteva zeci de apeluri de sistem, dar datorită acesteia poate fi localizat în întregime în memoria cache internă chiar și a procesoarelor, cum ar fi Intel 486. După cum se știe, diferite versiuni ale acestui sistem de operare aveau dimensiuni diferite ale nucleului - de la 8 până la 46 KB.