Diagramă de comparație
Bazele comparației | microkernel | Kernelul monolitic |
---|---|---|
De bază | În serviciile și kernelurile utilizatorilor microkernel, serviciile sunt păstrate în spațiu de adrese separat. | În kernelul monolitic, atât serviciile de utilizator cât și serviciile de kernel sunt păstrate în același spațiu de adrese. |
mărimea | Microkernelul are dimensiuni mai mici. | Nucleul monolitic este mai mare decât microkernel. |
Execuţie | Execuție lentă. | Execuția rapidă. |
Extensibil | Microkernelul este ușor de extensibil. | Miezul monolitic este greu de prelungit. |
Securitate | Dacă un serviciu se blochează, acesta are efect asupra funcționării microkernelului. | Dacă un serviciu se blochează, întregul sistem se prăbușește în kernelul monolitic. |
Cod | Pentru a scrie un microkernel, este necesar un cod mai mult. | Pentru a scrie un kernel monolitic, este necesar un cod mai mic. |
Exemplu | QNX, Symbian, L4Linux, Singularitate, K42, Mac OS X, Integritate, PikeOS, HURD, Minix și Coyotos. | Linux, BSD (FreeBSD, OpenBSD, NetBSD), Microsoft Windows (95, 98, Me), Solaris, OS-9, AIX, HP-UX, DOS, OpenVMS, XTS-400 etc. |
Definiția Microkernel
Microkernel fiind un kernel gestionează toate resursele sistemului. Dar într-un microkernel, serviciile de utilizator și serviciile de kernel sunt implementate în spațiul de adrese diferit. Serviciile de utilizator sunt păstrate în spațiul de adrese al utilizatorului, iar serviciile kernel-ului sunt păstrate în spațiul de adrese al kernel-ului . Aceasta reduce dimensiunea kernelului și reduce în continuare dimensiunea sistemului de operare.
Pe lângă comunicarea dintre aplicație și hardware a sistemului, microkernelul oferă servicii minime de gestionare a proceselor și memoriei. Comunicarea dintre programul / aplicația client și serviciile care rulează în spațiul de adrese al utilizatorului este stabilită prin trecerea mesajului. Nu interacționează direct. Aceasta reduce viteza de execuție a microkernelului.
Într-un microkernel, serviciile de utilizator sunt izolate de serviciile de kernel, astfel încât, dacă un serviciu de utilizator nu reușește, acesta nu afectează serviciul de kernel și, prin urmare, sistemul de operare rămâne neafectat . Acesta este unul dintre avantajele microkernelului. Microkernelul este ușor de extensibil . Dacă se adaugă noile servicii, ele se adaugă la spațiul de adrese al utilizatorului și, prin urmare, spațiul kernel-ului nu necesită nicio modificare. Microkernelul este, de asemenea, ușor portabil, sigur și sigur.
Definiția Monolithic Kernel
Nucleul monolitic gestionează resursele de sistem între aplicația și hardware-ul sistemului. Dar, spre deosebire de microkernel, serviciile pentru utilizatori și serviciile de kernel sunt implementate în același spațiu de adrese. Acest lucru crește mărimea kernelului crește și mai mult dimensiunea sistemului de operare.
Kernelul monolitic oferă programarea CPU, gestionarea memoriei, gestionarea fișierelor și alte funcții ale sistemului de operare prin apeluri de sistem. Dat fiind că serviciile de utilizator și serviciile de kernel se află în același spațiu de adrese, rezultă sistemul de operare rapid executat.
Unul dintre dezavantajele kernelului monolit este dacă un singur serviciu nu reușește întregul sistem să se prăbușească. Dacă se adaugă un nou serviciu în kernelul monolitic, întregul sistem de operare va fi modificat.
Diferențe cheie între kernelul microkernel și monolit
- Punctul de bază pe care se distinge kernelul microkernel și monolit este că microkernelul pune în aplicare servicii de utilizator și servicii de kernel în diferite spații de adrese și kernel monolitic, implementând atât servicii de utilizator, cât și servicii de kernel în același spațiu de adrese .
- Mărimea microkernelului este mică deoarece numai serviciile de kernel se află în spațiul de adrese al kernelului. Cu toate acestea, mărimea kernelului monolit este relativ mai mare decât microkernel, deoarece ambele servicii de kernel și serviciile de utilizator se află în același spațiu de adrese.
- Execuția kernelului monolit este mai rapidă, deoarece comunicația dintre aplicație și hardware este stabilită folosind apelul de sistem . Pe de altă parte, execuția microkernel-ului este lentă, deoarece comunicația dintre aplicație și hardware-ul sistemului este stabilită prin trecerea mesajului .
- Este ușor să extindeți microkernelul deoarece un serviciu nou va fi adăugat în spațiul de adrese al utilizatorului care este izolat de spațiul kernel-ului, astfel încât kernelul nu trebuie modificat. Opus este cazul cu kernelul monolit dacă un nou serviciu urmează să fie adăugat în kernelul monolitic, atunci întregul kernel trebuie modificat.
- Microkernelul este mai sigur decât kernelul monolitic, ca și cum un serviciu nu reușește în microkernel, sistemul de operare rămâne neafectat. Pe celelalte mâini, dacă un serviciu nu reușește în kernelul monolitic, întregul sistem nu reușește.
- Proiectarea kernelului monolitic necesită mai puțin cod, ceea ce conduce în continuare la mai puține bug-uri. Pe de altă parte, proiectarea microkernelului necesită un cod mai mult, ceea ce conduce la mai multe bug-uri.
Concluzie:
Microkernelul este mai lent, dar mai sigur și mai sigur decât kernelul monolitic. Nucleul monolitic este rapid, dar mai puțin sigur, deoarece orice defecțiune a serviciului poate duce la accidente de sistem.