Izgradnja operacijskog sustavauporabom mikrojezgre
Senko Rašić
operacijski sustav:
Dio programske podrške koji služiupravljanju resursima sklopovlja ibrine se za sigurno izvođenje programa.
ideja mikrojezgre:
Upravljački programi sklopovlja i razniservisi su obični programi.
U jezgri ostaviti samo nužnufunkcionalnost.
intenzivna komunikacija među procesima+ velika cijena pojedinog IPC-a
= loše performanse
današnji sustavi:Monolitne jezgre s nekim konceptimamikrojezgre
nastavak istraživanja:L4, Exokernel, ...
L4 mikrojezgra
● rekurzivni adresni prostori● visoko optimirani IPC
L4Ka::Pistachio – ostvarenje sveučilišta u
Karlsruheu
Otvoreni izvorni kôd● dostupnost● zajednica● jednostavnost prilagodbe
Hasenpfeffer
● temeljen na L4 mikrojezgri● skup poslužitelja koji komuniciraju IPC-om● korištenje gotovih komponenti sa otvorenim
izvornim kôdom
Komunikacija među procesima
● procesi poslužitelj (server) i korisnik (client)● sučelje (interface) komunikacije● potreban kôd generiran IDL4 alatom
interface File {
boolean Read(in Capability_t cap,in unsigned long offset, out byteseq_t buffer, inout unsigned long size);
unsigned long Size(in Capability_t cap);
...
}
Poziv udaljenih procedura
sposobnost:
Pravo pozivanja neke usluge u sustavu.
Sustav imenovanja
Sustav imenovanja
Funkcionalnost
● učitavanje i izvršavanje programa (ELF)● višezadaćnost, višenitnost● dostupna standardna C biblioteka● korištenje čvrstog diska (IDE)● programiranje u TinyScheme i TinyBasic
jezicima
Korištene komponente
● pristup IDE diskovima● ispis na zaslon i ulaz s tipkovnice● C biblioteka● TinyScheme interpreter● TinyBasic interpreter
Podizanje sustava
Razvojni sustav
● Linux sustav● GNU C/C++ prevodioc● L4Ka::Pistachio razvojna okolina
Testiranje
● QEMU● VMWare Workstation● L4 KDB (Kernel Debugger)
Testna okolina:– slika diskete za podizanje sustava– slika čvrstog diska sa ext2 datotečnim sustavom
QEMU i KDB u akciji
Razvoj programske podrške
#include <stdio.h>#include <l4/ipc.h>
#define SEKUNDA 1000000UL
int main(int argc, char *argv[]){ char buf[1024];
L4_Sleep(L4_TimePeriod(4 * SEKUNDA)); printf("Pozdrav, ja sam %s!\nTko ste vi: ", argv[0]);
fgets(buf, 1023, stdin); printf("Pozdrav, %s\n", buf);
return 0;}
Razvoj programske podrške
● Izvorni kôd (standardni C program)● Konfiguracijska datoteka za izgradnju
– prema predlošku iz izvornog kôda sustava
● Izgradnja i kopiranje u sliku diskete● Konfiguracija učitavanja sustava● Pokretanje emulacije računala i testiranje
Razvoj programske podrške
Zaključak
izgrađen sustav:– rudimentaran– prilagodljiv i proširiv
mikrojezgra:– dobra osnova za buduće sustave
otvoren izvorni kôd:– dostupnost– prilagodljivost