250 likes | 457 Views
Struktura LINUX. Programske plasti LINUX. A plikacije : prevajalniki , urejevalniki , Grafični up. vmesniki. AUI. LINUX lupine : Bourne Again (bash),. knjižnice. Vmesnik sistemskih klicev. API. Upravljanje s pomnilnikom. Upravljanje z datotekami. Upravljanje s procesi. Jedro
E N D
Programske plasti LINUX Aplikacije: prevajalniki, urejevalniki, Grafični up. vmesniki AUI LINUX lupine: Bourne Again (bash), ... knjižnice Vmesnik sistemskih klicev API Upravljanje s pomnilnikom Upravljanje z datotekami Upravljanje s procesi Jedro (Kernel) Gonilniki naprav BIOS Računalniška aparaturna oprema
Pomen komponent LINUX (1) • Kernel • Najbolj pomemben del operacijskega sistema • Vmesnik sistemskih klicev • To je skupina funkcij (pogosto jim pravimo tudi API), ki nudijo aplikacijam in knjižničnim rutinam storitve jedra • Application User’s Interface • Vmesnik med jedrom in uporabnikom • Omogoča uporabniku tvorbo ukazov sistemu • Poznamo tekstovno zasnovane in grafično zasnovane vmesnike
Pomen komponent LINUX (2) • Upravljanje z datotekami • Nadzira tvorbo in brisanje datotek ter vzdrževanje direktorijev • Na mnogouporabniškem sistemu mora imeti vsak uporabnik svoje pravice dostopa do datotek in direktorijev • Upravljanje s procesi • V sistemu lahko sočasno teče več programov • Ko program začne teči, postane proces • Če isto programsko kodo izvajamo dvakrat, imamo dva različna procesa • Jedro upravlja s procesi tako, da jih tvori, prekinja in zaključuje • Proces je zaščiten pred drugimi procesi in lahko z njimi komunicira
Pomen komponent LINUX (3) • Upravljanje s pomnilnikom • Podatke, ki jih trenutno ne potrebujemo, moramo shraniti na disk. Tiste podatke, ki jih spet potrebujemo, skopiramo z diska nazaj v RAM. • Temu mehanizmu pravimo Upravljanje s pomnilnikom • Gonilniki naprav • Vmesniki med jedrom in BIOS • Različne naprave imajo različne gonilnike
Podrobna zgradba LINUX Aplikacije Sistemske knjižnice (libc) Vmesnik sistemskih klicev Vhod-izhod Vezano na procese Datotečni sistemi razvrščevalnik Moduli Omreženje Upravljanje s pomnilnikom Gonilniki naprav Medprocesna komunikacija Arhitekturno odvisna koda Aparaturna oprema
Uslužnostni programi, knjižnice Aplikacije Sistemske knjižnice (libc) Vmesnik sistemskih klicev Vhod-izhod Vezano na procese Datotečni sistemi razvrščevalnik Moduli Omreženje Upravljanje s pomnilnikom Gonilniki naprav Medprocesna komunikacija Arhitekturno odvisna koda Aparaturna oprema
Komponente sistema LINUX • Sistemske knjižnice definirajo standardno množico funkcij, preko katerih interaktirajo aplikacije z jedrom. V teh knjižnicah je implementirana tudi tista funkcionalnost operacijskega sistema, ki ne potrebuje privilegijev režima jedra. • Sistemski uslužnostni programi (system utilities) opravljajo posamezne specializirane naloge upravljanja.
Jedro (kernel) Aplikacije Sistemske knjižnice (libc) Vmesnik sistemskih klicev Vhod-izhod Vezano na procese Datotečni sistemi razvrščevalnik Moduli Omreženje Upravljanje s pomnilnikom Gonilniki naprav Medprocesna komunikacija Arhitekturno odvisna koda Aparaturna oprema
Vhod in izhod • Datotečni sistem dostopa do diskov preko dvojnega vmesnega pomnenja: • Podatki so pomnjeni v “page cache”, ki je del virtualnega pomnilnika • Metapodatke vmesno pomnimo v medpomnilniku (buffer cache), ki je indeksiran glede na fizične diskovne bloke • Linux deli naprave v tri razrede: • Blokovne napraveomogočajo naključni dostop do povsem neodvisnih podatkovnih blokov fiksne dolžine • Znakovne napravevključujejo večino drugih naprav. Ne nudijo podpore funkcionalnosti navadnih datotek • Omrežne napraveso povezane z omrežnim podsistemom jedra Več
Blokovne naprave • Nudijo glavni vmesnik do vseh diskovnih pogonov v sistemu • Vmesno pomnenje blokov (buffer cache) ima dva namena: • Deluje kot zaloga vmesnih polj za aktivne vhode oziroma izhode • Služi kot medpomnilnik za zaključene vhodno izhodne operacije
Znakovne naprave • Gonilnik naprave, ki ne nudi naključnega dostopa do fiksnih podatkovnih blokov • Gonilnik znakovne naprave mora registrirati skupino funkcij, ki implementirajo različne vhodno izhodne operacije gonilnika • Jedro samo praktično ne izvede nobenih predelav datotečnih vhodnih/izhodnih zahtevkov, pač pa preprosto posreduje zahtevek napravi • Izjema v tem pravilu je podskupina gonilnikov znakovnih naprav, ki implementirajo terminale (zanje vzdržuje jedro standarden vmesnik)
Medprocesna komunikacija • Linux s pomočjo signalov obvesti procese, da je prišlo do nekega dogodka • Število signalov je omejeno in ne morejo prenašati podatkov: Proces dobi le informacijo, da je prišlo do signala • Jedro ne uporablja signalov za komunikacijo med procesi, ki tečejo v “režimu jedra” Proces A Proces B
Posredovanje podatkov med procesi • Proces-otrok lahko podeduje komunikacijski kanal od svojega očeta. Temu komunikacijskemu mehanizmu pravimo “cevi” (pipes). V en konec cevi pišemo podatke, na drugem jih beremo. • Zelo hiter način podatkovne komunikacije med dvema procesoma predstavlja souporabljen pomnilnik (shared memory); vsak podatek, ki ga en proces v tak del pomnilnika zapiše, je takoj na voljo drugemu procesu. • Vendar za tak način medprocesne komunikacije potrebujemo tudi mehanizem sinhronizacije Proces A Proces B
Omrežna struktura • Omreženje (networking) je pomembna funkcionalnost Linuxa. • Podpira standardne protokole za komunikacijo med sistemi UNIX • Implementirane ima tudi protokole, za omrežja računalnikov PC • Interno v jedru Linux je omreženje, implementirano s tremi programskimi plastmi: • Vmesniki z vtičnicami (socket interface) • Gonilniki protokolov • Gonilniki omrežnih naprav
Moduli jedra Aplikacije Sistemske knjižnice (libc) Vmesnik sistemskih klicev Vhod-izhod Vezano na procese Datotečni sistemi razvrščevalnik Moduli Omreženje Upravljanje s pomnilnikom Gonilniki naprav Medprocesna komunikacija Arhitekturno odvisna koda Aparaturna oprema
Moduli jedraLoadable Kernel Modules (LKM) • Sekcije kode jedra, ki jo lahko prevedemo in naložimo ali odložimo neodvisno od preostanka jedra. • Modul jedra lahko tipično implementira gonilnik naprave, datotečni sistem ali omrežni protokol. • Moduli jedra omogočajo, da vzpostavimo standardno, minimalno jedro brez dodatnih vgrajenih gonilnikov. • Tri komponente, ki podpirajo module Linuxa: • Upravljanje z moduli • Registracija gonilnikov • Reševanje konfliktov
Upravljanje z moduli (Module Management) • Podpira nalaganje modulov v pomnilnik in njihovo interakcijo s preostankom jedra. • Nalaganje modulov je razdeljeno v dve sekciji: • Upravljanje delov kode modula v pomnilniku jedra • Rokovanje s simboli, ki jih lahko naslavljajo moduli • “module requestor” upravlja nalaganje modulov, ki so zahtevani, vendar še niso naloženi; Module, ki jih ne potrebujemo več, spet odloži.
Registracija gonilnikov • Tako lahko preostanek jedra informiramo, da je na voljo nov gonilnik. • Jedro vzdržuje dinamično tabelo vseh znanih gonilnikov in nudi skupino rutin za dodajanje ali odstranjevanje gonilnikov iz teh tabel. • Registracijske tabele vsebujejo naslednje elemente: • Gonilnike naprav • Datotečne sisteme • Omrežne protokole • Binarni format
Reševanje konfliktov • Mehanizem, ki omogoča različnim gonilnikom naprav rezervacijo aparaturnih sredstev in zaščito teh sredstev, da jih ne bi uporabil kakšen drug gonilnik
Osnovni LKM (program) Vsak LKM ima najmanj naslednji dve funkciji: • int init_module(void) /*used for all initialition stuff*/ • { • ... • } • void cleanup_module(void) /*used for a clean shutdown*/ • { • ... • } Nalaganje modula sme izvesti administrator (root) s pomočjo naslednjega ukaza: • # insmod module.o
Ukazi za delo z LKM • insmod • Insert an LKM into the kernel. • rmmod • Remove an LKM from the kernel. • depmod • Determine interdependencies between LKMs. • kerneld • Kerneld daemon program • ksyms • Display symbols that are exported by the kernel for use by new LKMs. • lsmod • List currently loaded LKMs. • modinfo • Display contents of .modinfo section in an LKM object file. • modprobe • Insert or remove an LKM or set of LKMs intelligently. For example, if you must load A before loading B, Modprobe will automatically load A when you tell it to load B.