About microkernel
   arhitecture
    Bogdan Știrbăț




                     Page 1
Ce este un kernel?

Kernelul este o componentă software
deasupra hardware-ului.
Roluri:
 - este un intermediar între utilizatori și
mașina fizică;
 - oferă un enviroment în care utilizatorii
pot rula eficent și sigur programe;
 ...




                                          Page 2
Short Unix history

Prima versiune de Unix a apărut în 1969,
scrisă în assembler de Ken Thomson.
La început, kernelurile erau simple.
A început să crească după ce au apărut
tot mai multe dispozitive hardware, dar
mai ales după tranzicția de la 16 la 32 de
biți




                                         Page 3
Generalități kernel

- are, de obicei, câteva milioane de linii
cod;
-rulează în kernel space, adică un nivel de
privilegiu deasupra aplicațiilor obișnuite
(care rulează în user space)
-înglobează multe servicii de sistem:
process/user management, networking




                                          Page 4
Probleme

-codul din kernel space poate face absolut
orice cu sistemul; un bug/exploit aici
poate fi fatal => TCB (Trusted Code Base)
e destul de mare;
  consecință: Doqu s-a răspândit pe
Windows, folosindu-se de un bug în
parsarea de fonturi [1]
-greu de întreținut (după o modificare,
trebuie recompilat tot kernelul);
-greu de extins;




                                         Page 5
O soluție: microkerneluri

Filosifia: lăsăm în kernel doar ce e absolut
necesar, restul mutăm în kernel;
Rămân: interprocess communication, CPU
Scheduling, basic memory management




                                           Page 6
Alte proprietăți

-foarte mici, comparativ cu kernelurile
monolitice: 10000 linii de cod vs.
milioane;
-componentele scoase din kernel sunt
implementate ca servicii în user-space;
aceste servicii comunică prin transmitere
de mesaje;
-astfel se împrumută puțin din OOP:
sistemul devine împărțit în componente,
ce comunică între ele pentru a îndeplini
un task;




                                        Page 7
Avantaje

-securitatea: dacă serviciul de networking
are un buffer overflow, exploatarea sa e
mai puțin periculoasă în user-space decât
în kernel-space;
-availability:     poate      exista    un
“reincarnation server” care să dea ping la
celelalte; care nu răspund sunt restartate




                                         Page 8
Dezavantaje

-lipsa de performanță, cauzată de
   1) nevoia de a copia des date din user-
space în kernel-space;
   2) schimbări dese de context;

- sunt multe componente care se așteaptă
una pe cealaltă, riscul de a avea deadlock
e mare;




                                         Page 9
Soluții

Linus Torvalds, într-un debate cu Andrew
Tanenbaum [12] “The real issue, and it's
really fundamental, is the issue of sharing
address spaces.”

De aici, 2 soluții:
- creșterea microkernelui
- micșorarea acestuia




                                          Page 10
Generația 1

- prima generație a urmat prima cale;
-microkernelul a devenit hibrid, câteodată
mai mari ca dimensiuni decât unul
obișnuit;
-ex.: Windows NT




                                         Page 11
Generația a 2-a

-a urmat a 2-a cale: microkernelul a fost
micșorat și mai mult;
-kernelul e atât de mic, încât încape în L1
cache;
-operațiile sunt foarte optimizate;
-memory management nu mai e în user-
space, ci se oferă mecanisme de gestiune
(ex.: L4 are 3 primitive, map, grant,
flush)
-exemple: L4, QNX (Quick Unix), seL4
-problemele de performanță au fost
rezolvate;




                                          Page 12
Microkernel și VM

-microkernelurile   sunt    împărțite    în
module independente;
-următorul pas logic era apariția VM-urile
-ca și microkernelurile, resursele HW ale
unei mașini se împart în mai multe
contexte de execuție;




                                          Page 13
Microkernel și VM
   (cont)
Prin definiție,
  - un microkernel este un sistem minimal
peste care se pot construi alte sisteme;
    - o mașină virtuală este un sistem ce
permite rularea unor alte sisteme reale
deasupra;

Rezultă că orice microkernel poate fi o
mașină virtuală. Unii cercetătoti afirmă că
“un microkernel e soluția corectă de a
implementa o mașină virtuală”.

În prezent, granița dintre microkerneluri
și mașini virtuale se micșorează.



                                          Page 14
Microkernel și VM
     (cont)
Cerințe    ale  sistemelor   de   operare
embedded:
 - eficență
 - securitate;
 - small code base;

O soluție bună [2]:




                                        Page 15
Avantaje

-securitatea, dată de:
  1) dimensiunea mică a microkernelului;
   2) mașinile virtuale sunt independente,
nu comunică între ele;

-eficența, atât a sistemului propriu-zis,
cât și datorate microkernelului mic ca
dimensiune;

-ușor extensibil,   folosești   doar   ce-ai
nevoie.




                                           Page 16
Concluzii

-microkernelurile au apărut datorită
complexității kernelurilor monolitice;
-dacă prima generație avea probleme de
performanță, cea de-a doua a rezolvat
aceste probleme;
-granița dintre microkerneluri și virtual
machine monitors este din ce în ce mai
mică;
-oferă mecanisme, și nu servicii
-în ziua de azi sunt relevante în
dispozitivele    embedded,      construind
mașini      virtuale    deasupra       unui
microkernel.




                                          Page 17
Bibliografie

1)http://www.zdnet.com/blog/security/
microsoft-issues-temporary-fix-it-for-
duqu-zero-day/9764
2)http://www.rtcmagazine.com/articles
/vew/100958
3)http://www.cs.cornell.edu/home/ulfar
/ukernel/ukernel.html
4)http://microkerneldude.wordpress.co
m/2012/02/04/automotive-the-next-
frontier-for-virtualization/
5)http://www.ok-
labs.com/blog/entry/microkernels-vs-
hypervisors/
6)
http://duartes.org/gustavo/blog/post/c
pu-rings-privilege-and-protection

                                         Page 18
Bibliografie(cont)

6)http://duartes.org/gustavo/blog/post
/cpu-rings-privilege-and-protection
7)http://linuxkernel51.blogspot.ro/2011
/02/difference-between-microkernel-
and.html
8)http://www.cse.unsw.edu.au/~cs9242
/12/lectures/05-ukinternals.pdf
9)http://www.ssrg.nicta.com.au/publica
tions/papers/Heiser_08.pdf
10)http://www.ssrg.nicta.com.au/public
ations/papers/Heiser_05.pdf




                                          Page 19
Bibliografie(cont)

                      11)http://www.ok-
labs.com/whitepapers/sample/secure-
embedded-systems-need-microkernels
12)http://en.wikipedia.org/wiki/Tanenb
aum%E2%80%93Torvalds_debate
13)http://www.ganssle.com/rants/micr
okernalvsmonolithic.htm
14)Operating System Concepts, Abraham
Silberschatz, Peter Baer Galvin




                                      Page 20

Microkernels