Threos: Mikrokernel operációs rendszer a gyakorlatban

Hasonló dokumentumok
Demo board. Nagy András. Conet Kft november 29.

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Operációs rendszerek. Az NT folyamatok kezelése

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Operációs rendszerek III.

Architektúra, megszakítási rendszerek

Operációs rendszerek. Az NT memóriakezelése

Operációs rendszerek. UNIX/Linux fájlrendszerek

Operációs rendszerek. Windows NT. A Windows NT

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

(kernel3d vizualizáció: kernel245_graph.mpg)

Matematikai és Informatikai Intézet. 4. Folyamatok

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Operációs rendszerek. Bemutatkozás

A számítógép egységei

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Operációs rendszerek. A Windows NT felépítése

Hardver összetevők ellenőrzése Linux alatt. Hardverguruk előnyben...

BEÁGYAZOTT RENDSZEREK TERVEZÉSE UDP csomag küldése és fogadása beágyazott rendszerrel példa

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Adatbázis és alkalmazás konszolidáció Oracle SPARC T4/5 alapon

Számítógépek felépítése

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Operációs rendszerek. UNIX fájlrendszer

386 processzor címzés

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

Kommunikáció. 3. előadás

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Utolsó módosítás:

TI TMDSEVM6472 rövid bemutatása

Dr. Schuster György október 30.

IP alapú komunikáció. 2. Előadás - Switchek 2 Kovács Ákos

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Hálózati architektúrák laborgyakorlat

UNIX: folyamatok kommunikációja

Utolsó módosítás:

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Hálózati operációs rendszerek II.

Hálózati architektúrák és Protokollok GI 8. Kocsis Gergely

Programozás alapjai. 10. előadás

6.2. TMS320C64x és TMS320C67xx DSP használata

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Hálózatok építése és üzemeltetése

Kommunikációs rendszerek programozása. Switch-ek

Konkurens TCP Szerver

Digitális rendszerek. Digitális logika szintje

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Számítógép felépítése

Dr. Schuster György október 14.

Elosztott rendszerek

Utolsó módosítás:

Könyvtári címkéző munkahely

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

Adatbányászat és Perszonalizáció architektúra

Szkriptnyelvek. 1. UNIX shell

Párhuzamos programozási platformok

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

S04-2 Elosztott alkalmazások készítése

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Operációs Rendszerek II.

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Operációs rendszerek. Az X Window rendszer

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

ARM Cortex magú mikrovezérlők. mbed

Mikrorendszerek tervezése

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

CISCO gyakorlati segédlet. Összeállította: Balogh Zoltán

Java I. A Java programozási nyelv

Operációs rendszerek Folyamatok 1.1

Concurrency in Swing

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

BMD Rendszerkövetelmények

Laborsegédlet 3. Labor

Számítógépes munkakörnyezet II. Szoftver

Everything Over Ethernet

1. Kapcsolók konfigurálása

Számítógépes Hálózatok. 5. gyakorlat

Operációs rendszerek 1.

Az interrupt Benesóczky Zoltán 2004

Operációs rendszerek. A védelem célja. A fenyegetés forrásai. Védelmi tartományok. Belső biztonság. Tartalom

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

A Java EE 5 plattform

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Tartalomjegyzék. Előszó... 10

Operációs rendszerek. A Windows NT


Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Hálózati architektúrák és Protokollok GI 7. Kocsis Gergely

Párhuzamos programozási platformok

Átírás:

: Mikrokernel operációs rendszer a gyakorlatban Nagy András Baráth Áron Conet Kft. 2017.

Tartalom 1 2 3 4

Tartalom Hardware Software 1 2 3 4

Programok Hardware Software Natív (lefordított) vagy interpretált Programok végrehajtásához futási környezet szükséges Környezet: Megfelelő hardware és software összesége Kapcsolat a program és a külvilág között

Hardware környezet Hardware Software Utasítások beolvasása, értelmezése és végrehajtása Be- és kimenetek kezelése Nagyon alacsony szint ( vas ) Végrehajtó egység (processzor) Memória (RAM, ROM, FLASH) Perifériák Sokféle: komplex, nem nyitott, nem hibamentes Nehéz kezelni Léteznek speciális hardware környezetek

Hardware alapok Hardware Software Végrehajtó egység (processzor) Sokféle típus Általános célú (asztali gép, szerver, tablet) Speciális célú (grafika, hang) Mikrokontroller (teljes rendszer egy chipben (SOC)) Elmosódtak a határvonalak Technológiai fejlődés hatása 1994: Intel Pentium P54C (75-120 MHz, 8-12W, $849) 2015: Intel Atom x5-z8500 (4mag 1.44 GHz, 2W, $25) 2014: ARM Cortex A7 (4mag 1.2 GHz, 1W, $2) MCU 2011: ARM Cortex M3 (180 MHz, 0.25W, $5) MCU 2017: ARM Cortex M0+ (48 MHz, 0.01W, $1)

Processzor alapok Hardware Software Kontextus Programszál futásához erőforrások (regiszterek, flag) Cserélés hosszabb ideig is eltarthat Privilegizált állapot Általában 2 szint Privilegizált, Nem privilegizált Megszakítások Software megszakítások, kivételek (rendszerhívás) Hardware megszakítások aszinkron (időzítő)

Hardware Software Processzor alapok: Processzor címtér Műveletek által elérhető memória Von Neumann: egy címtér utasításoknak és adatnak Harvard: külön címtér utasításoknak és adatnak Nem feltétlenül egyezik meg a fizikailag címezhető memória méretével, lehet nagyobb vagy kisebb 32 bit 32 bit virtuális, 36 bit fizikai (PAE) 64 bit 48 (56) bit virtuális, 36-46 bit fizikai Hardware perifériák regiszterei címtérbe leképezve

Hardware Software Processzor alapok: Virtuális memória Fix méretű (4 KiB) blokkokra osztott címtér leképezés A leképezés nem feltétlenül folytonos Fizikai memória töredezettségét elfedi Váltogatható (kontextus váltás) Lassabb elérés, laphibák kezelése Virtuális címterek átfedésben is lehetnek Nem minden processzor támogatja

Hardware Software Programok software környezete Elfedi a hardware környezetet Egységes software felületet biztosít Több szintű (pl. interpreter, web böngésző) Lehet nyers vasra (bare metal) is programot írni Beágyazott rendszerekben nem ritka Operációs rendszer!

Operációs rendszer Hardware Software Alacsony szintű software réteg Szolgáltatások egységes felülete Széles spektrum Két nagy pólus: Microkernel és Monolitikus kernel Hol húzzuk meg az operációs rendszer határvonalát Operációs rendszer részei egyben vagy külön Szétosztott vagy központosított Sebesség, komplexitás, modularitás vonzata van Hibrid kernel (részben micro, részben monolitikus)

Hardware Software Operációs rendszer: Microkernel Kicsi kernel, csak alapfunkciók Szolgáltatások külön programokban Üzenetküldés a központi mechanizmus Lassabb lehet a kontextus váltások miatt Biztonságosabb Párhuzamos működés (több processzor) Nem kell kernel állapotot menteni

Hardware Software Operációs rendszer: Monolitikus kernel Egy nagy kernel Minden funkciót a kernel lát el (modulok) Kevesebb kontextus váltás Nem szeparált, belső erőforrás függőségek Device driver magával ránthatja az egész rendszert Szükséges a kernel állapotának mentése

Hardware Software Operációs rendszer: Alapvető felhasználási terület Microkernel Kis helyigény Valós idejű feladatok Beágyazott rendszerek (GSM/GPRS modem) Monolitikus kernel Nagyobb rendszerek Határok elmosódnak

Tartalom Kernel Kernel objektumok Kernel rendszerhívás 1 2 3 4

Tervezési szempontok Kernel Kernel objektumok Kernel rendszerhívás Alacsony memória és teljesítmény igény Gyors működés, rövid válaszidő Modularitás Könnyű portolhatóság

operációs rendszer Kernel Kernel objektumok Kernel rendszerhívás Microkernel Valós idejű ütemezés Multitasking, multithreading Virtuális memória kezelése, de egy címtér ASLR adja magát Task kontextusában futó megszakítások Nagyon kevés architektúra függő rész

Kernel Kernel objektumok Kernel rendszerhívás microkernel tulajdonságok Objektum orientált szemléletmód Alapvetően C-ben + C preprocesszált ASM Gyors, egyszerű rendszerhívások (timeout) Single stack kernel (stateless) Paraméter átadás csak regisztereken keresztül Üzenet alapú kommunikáció

Kernel objektumok Kernel Kernel objektumok Kernel rendszerhívás Közös header ( ősosztály ) Csak rendszerhívásokon keresztül lehet hozzáférni Használat előtt létre kell hozni Egy objektum több láncon is szerepelhet (owner, timeout) Objektumok automatikus törlése (tulajdonos törlése) Kritikus futási időben nem lehet objektumot létrehozni Task felszabadítása sokáig is eltarthat kiszervezhető

Task Kernel Kernel objektumok Kernel rendszerhívás Alap összefogó objektum Tulajdonosa más objektumoknak Közös címtér a futási szálaknak Nincs szülő-gyerek kapcsolat Prioritással rendelkezik Privilegizálható

Thread Kernel Kernel objektumok Kernel rendszerhívás Futási egység kontextussal Task-hoz tartozik, annak a címterében fut Prioritással rendelkezik (Task-on belüli prioritás) Kell stack-et definiálni neki Gyorsan létrehozható

Memo (MEMory Object) Kernel Kernel objektumok Kernel rendszerhívás Memória lapokból álló egysége Task-hoz tartozik Nem feltétlenül folytonos, de lehet kérni (DMA) Nem feltétlenül tartozik hozzá fizikai memória (HW IO) Lehet fix fizikai címre kérni (HW IO) Speciális típus Copy Memo, copy-on-write megvalósítására Tartalma View-on keresztül címezhető

View Kernel Kernel objektumok Kernel rendszerhívás Nézet egy adott Memo adott részére Virtuális címtér egybefüggő része Task-hoz és Memo-hoz tartozik Lehet több különböző View egy Memo-ra Virtuális címek kiosztása AVL-fa használatával

View kezelés Kernel Kernel objektumok Kernel rendszerhívás Virtuális cím elérésekor van felhasználva Laphiba (kivétel) esetén: Memo lap foglalás, másolás, tisztítás Task virtuális címterébe leképezés (mappelés) Laphiba indukálhat magasabb szintű műveleteket: On demand loading On demand relocation

Memo és View leképezése Kernel Kernel objektumok Kernel rendszerhívás VA 0 VA 1 VS Ta 0 VS 1 0 V max P MA 0 MB 0 MB 1 MA 1 MS 0 MS 1 0 P max VB Tb 0 VB 1 VS 0 VS 1 0 V max

View címtér tulajdonságok Kernel Kernel objektumok Kernel rendszerhívás Egy közös virtuális címtér van, de védett (szeparált) Memória mindenképpen korlátos, nincsenek végtelen erőforrások Közös címtér esetén pointerek ugyanoda mutatnak Gyors shared memory Hasonló felépítés VM nélkül is (MCU) Lehet csak virtuális címteret foglalni (VirtualAlloc)

Kernel Kernel objektumok Kernel rendszerhívás View címtér tulajdonságok (folyt.) Program részei futási időben is megoszthatóak Nem kell L1i cache-t törölni kontextus váltáskor VIVT (virtually indexed virtually tagged) esetén Tényleges párhuzamos működés Relokálni kell a programokat

Message Port (MsgPort) Kernel Kernel objektumok Kernel rendszerhívás Üzenetek küldésére és fogadására szolgál Task-hoz tartozik Fix mennyiségű (10-20) üzenet tárolására alkalmas Kapacitás fordítási időben definiált Aszinkron küldés Ha betelt, akkor a várakozók sorába kerül a küldő Ha üres, akkor a várakozók sorába kerül a fogadó

Message (Msg) Kernel Kernel objektumok Kernel rendszerhívás Folyamatok közötti kommunikáció alapja Nem valódi objektum (csak SignalMsg esetében) Csak üzenetportokon keresztül lehet küldeni és fogadni 3 érték (32 vagy 64 bit, architektúra specifikus) Konvenció: küldő, üzenet1, üzenet2 (sender, msg1, msg2) Sender alapvetően egy Handle Üzenetek értéke bármi lehet (azonosító, mutató, kompozit érték)

Signal Message (SignalMsg) Kernel Kernel objektumok Kernel rendszerhívás Gyorsan és garantáltan akarunk üzenetet küldeni Task-hoz tartozik Akár többször is elküldhetjük Fogadás után nem törlődik, újrafelhasználható Megszakításból való üzenet küldésre Megszakításban nem lehet várakozni

Kernel Kernel objektumok Kernel rendszerhívás Interrupt Service Routine (ISR) Hardware megszakítások kezelésére Egy megszakításhoz többet is lehet rendelni Task-hoz tartozik, annak címterében, jogosultságával fut Speciális szál, nem callback Van saját stack-je (tulajdonos Task címteréből) Hívhat rendszerhívásokat, de nem várakozhat Rendszerhívással tér vissza (RetISR) Laphiba vagy várakozás esetén abortálódik

Rendszerhívás tulajdonságok Kernel Kernel objektumok Kernel rendszerhívás 60 rendszerhívás Regisztereken keresztüli paraméter és eredmény átadás A kernel nem látja a hívó címterét Laphiba speciális rendszerhívás, blokkolódhat a Thread Kivételek: Thread fogja feldolgozni FPU regiszterek betöltése, kimentése csak szükség esetén Kernel nem használ FPU-t

Rendszerhívás felépítés Kernel Kernel objektumok Kernel rendszerhívás Architektúra függő rész (Assembly és C) Rendszerhívás prológus és epilógus Pár funkció csak itt van megvalósítva (pl. RetISR) Magas szintű rendszerhívás függvény (C) Objektumok létrehozás, megszüntetés, módosítás Task-ok, Thread-ek várakoztatása, felélesztése Ütemezés Platform függő részek (csak header, C makrók) Pl. megszakítások száma, regiszterek kiosztása

Kernel Kernel objektumok Kernel rendszerhívás Rendszerhívás architektúra függő rész 1 Átlépés rendszer üzemódba (sysenter, syscall, svc,...) 2 Alapvető regiszterek mentése Thread struktúrába 3 Bejövő paraméter vizsgálat (rendszerhívás száma) 4 Futási idő elszámolása 5 Magas szintű rendszerhívás (ASM C) 6 Visszatérési érték értelmezése Kell-e Thread-et (és Task-ot) váltani? Ha váltás van, ütemező hívás (ASM C) Váltás esetében maradék regiszterek mentése 7 Ha kell, akkor virtuális címtér váltás (másik Task) 8 Thread regiszterek visszatöltése, és visszatérés

Kernel Kernel objektumok Kernel rendszerhívás Rendszerhívás magas szintű függvény törzs 1 Objektum paraméterek (Handle) vizsgálata Pseudo handle feldolgozás Létezik-e az Objektum? Végrehajtható-e a művelet? Megfelelőek a jogosultságok? 2 Művelet végrehajtása Fel kell ébreszteni alvó szálat? Várakoztatni kell a hívó szálat? Megváltoztak-e a prioritások?

Kernel használata Kernel Kernel objektumok Kernel rendszerhívás Feladathoz szabható rendszer A virtuális memória kezelés megléte meghatározó Virtuális memória kezelést nem támogató hardware Kisebb rendszer (Mikrokontrolleres környezet) Sok minden kiesik (nincs laphiba) Virtuális memória kezelést támogató hardware Általános számítógépes környezet (ARM, PPC, x86, x86 64) Teljes értékű nagy rendszer építhető Lehet mindkettőn működő programot írni

Tartalom Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés 1 2 3 4

I/O request Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Megnyitott Device példány szükséges hozzá Nagy mennyiségű adat is átküldhető Üzenet küldése a Device-nak T D 0 V max IOreq Device T P 0 V max

Device class Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Azonos szerepkörű device-ok (service-ek) közös interfésze DCLS_BLOCK DCLS_FILESYSTEM DCLS_SERVICE... Egy device (service) több class-t is megvalósíthat pl. TCP/IP device: DCLS_TCPIP, DCLS_SERVICE Vannak opcionális parancsok pl. FS_CMD_MKDIR

Device Framework Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés A rendszerben sok device driver található Ezek hasonló elven működnek, sok tevékenység ugyanaz Kód újra felhasználás Aszinkron működés Library (static vagy dynamic)

Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Opcionális corutin könyvtár (utask) A device framework kiegészítése Device-nak (service) egyszerre nagyon sok tevékenysége lehet Rész tevékenységek, vagy egymásra épülő tevékenységek Nagyon kevés erőforrás szükséges hozzá Corutinok, amik meg tudják őrizni állapotukat (állapotgépek) Szinkronizálhatóak

Program loader Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Program indítása: egy leíró küldése a loadersvc-nek Adatszerkezetek előálĺıtása, és erőforrások foglalása Szükséges view-ok készítése Szükség esetén page fault exception handler installálása Program betöltése page fault-ok mentén Kód relokálása (reloc info kell az ELF-be) Külső szimbólumok (weak, undef) feloldása libsvc-vel Rendszerhívások külön shared view-ban (Intel vs AMD)

Loader: crt0 Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Mindenképpen része a programnak (mindig static library) Legalapvetőbb tevékenységek elvégzése crt inicializálása main meghívása crt takarító eljárásának meghívása

Loader: crt Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Nagyobb library (lehet dinamikus is) Heap méret beálĺıtása libc kontextus és kivételkezelők inicializálása Parancssori argumentumok előfeldolgozása Task név beálĺıtása (később)

bootfs és cpio Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Az adatok bootfs-en tárolódnak bootloader.ini Rendszer image-ek: *.cpio.xz Multi-config image Tartalma teljes egészében a /run alá kerül (tmpfs) Alapvető device-ok IDE, SATA vezérlő Network driver-ek, TCP/IP service VFS, file rendszerek Config-ok, script-ek, devman ini-k

Config script Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Egyszerű szintaxis (értékadás, szekvencia és elágazás) Alapműveletek elvégzése egész számokon String konkatenáció Konverziók Programindítás Műveletek a registry-vel: kulcs létrehozás kulcsra várakozás kulcs törlés A device manager script nyelve

Device manager Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Supervisor A detektorok információi ide futnak be Programok (újra)indítása Függőségek kezelése A futtatási környezet egyszer értékelődik ki Config script-ek futtatása File rendszer interface: /dev Karakter és blokk device-ok listázása

Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés /$ ls -l /dev dr-xr-xr-x 1 root root 0 2017-10-16 14:26:56 detectors dr-xr-xr-x 1 root root 0 2017-10-16 14:26:56 iniroot crw-rw-rw- 1 root root 0 2017-10-16 14:26:56 null dr-xr-xr-x 1 root root 0 2017-10-16 14:26:56 programs c--------- 1 root root 0 2017-10-16 14:26:57 ptmx drwxrwxrwx 1 root root 0 2017-10-16 14:26:56 pts crw-rw-rw- 1 root root 0 2017-10-16 14:26:56 random brw-rw-rw- 1 root root 0 2017-10-16 14:26:56 sata0n0 brw-rw-rw- 1 root root 0 2017-10-16 14:26:56 sata0n1 brw-rw-rw- 1 root root 0 2017-10-16 14:26:56 sata0n2 lrwxrwxrwx 1 root root 32 2017-10-16 14:26:56 tty -> /dev/pts/0 crwxrwxrwx 1 root root 0 2017-10-16 14:26:57 tty0 crw-rw-rw- 1 root root 0 2017-10-16 14:26:56 ttys0 crw-rw-rw- 1 root root 0 2017-10-16 14:26:56 urandom crw-rw-rw- 1 root root 0 2017-10-16 14:26:56 zero

Detektorok Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Hardware konfiguráció detektálása (ACPI, PCI) Másra is használható Statikus (PCI) és dinamikus (USB) detektálások A device manager-nek küldi el A detektált hardware meghajtója kommunikálhat a detektorával Szabványos interface

Detektorok (xen példa) Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés

Registry Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Futási idejű információk szálbiztos megosztása task lista device lista Értesítési mechanizmus Típusok: dir, tmp, int, bin Szerializálhatóság Guarded key

Registry guarded key Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés A registry kulcsnak lehet egy tulajdonosa A tulajdonos egy megnyitott registry példány A példány bezáródásakor a kulcs automatikusan törlődik Felhasználás: task lista, device lista

Registry Watch Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Registry bejegyzésekre A watch mélysége beálĺıtható Kulcs vagy részfa megváltozása esetén üzenetet küld Üzenet típusok: módosítás és törlés Felhasználás: IPC ( globális változó helyett)

Library Service Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Program méretét növeli a static library Érdemes a programkönyvtárat külön tenni Dinamikus hozzászerkesztés: dynamic library Input adat: Shared Executable (sx) Szimbólumok feloldása Szükség esetén library megosztása a klienssel

Shared Executable (sx) Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Stateless (shared) Nincs relokálás Nincs allokálás Korlátozott Nem lehet állapota Stateful (mapped) GOT/PLT relokálása.data,.bss allokálás Univerzális Tárolhat állapotot

Library példa (1) Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés

Library példa (2) Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés

Library példa (3) Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés

Library példa (4) Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés

VFS Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés A file system inferfészek nagyon alacsony szintűek Egységes felület kell Elég a VFS gyökerét ismerni Könyvtár bejegyzések cache-elése File system-ek felé csak entry id (inode) Speciális bejegyzések: char, block, fifo, socket

File system service Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Class: DCLS_FILESYSTEM Különböző file system-ek közös interfésze tmpfs ext2 ffs bootfs FAT32 Nem feltétlenül valósít meg minden műveletet Összekötés blokk vagy flash device-szal Mindegyik a VFS-en keresztül érhető el

Network interface Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Ethernet és Wi-Fi Adatcsomagok küldése megadott MAC címre A hogyan nem érdekes Közös interfész: DCLS_NETIFACE Speciális műveletek (NIF_CMD_GETOPT, NIF_CMD_SETOPT)

TCP/IP stack Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Network interfészek felhasználása Absztrakciós réteg Robusztus, moduláris és testreszabható IPv4 üzenetek küldése ICMP UDP TCP Alkalmazás szintű protokollok DNS DHCP Adatok perzisztálása a registry segítségével

SystemService Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Minden task megszűnésére feliratkozik (üzenet küldés) Programok exit code-jának kezelése Várakozás program befejeződésére Device-ok értesítése task törlődéséről Megnyitott device példányok automatikus bezárása Kevés program kerül explicit interakcióba vele

telnetd Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Telnet daemon Fejlesztéshez kellett Egyszerű Alacsony erőforrás igény Megbízható (TCP) Tesztnek is kiváló

httpd Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Hypertext Transfer Protocol FastCGI (és CGI) támogatás Többszálú request feldolgozás FastCGI programok automatikus betöltése és cache-elése FastCGI-k újra felhasználhatók

ftpd Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés File Transfer Protocol Újra fordított binárisokat gyorsan kellett másolni TFTP kényelmetlen és nem megbízható httpd-hez hasonlóan többszálú Nem titkosított

HTTP kérés kiszolgálása Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés

pkman Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Package manager Teljesen C-ben íródott.pkg.cpio.xz formátum Integritás: SHA-256 Verifikálás: digitális aláírás (RSA, 2048+) Az alpm és a pacman ihlette Nem kell minden programnak saját update mechanizmus

makepk Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés pkman-kompatibilis package előálĺıtása Különböző sémák A package formátum is paraméter Feladata: Külső tool-ok meghívása (build) Package leíró (integritás, aláírás) cpio összeálĺıtása Tömörítés (xz)

barsh Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés A bash egy egyszerűsített verziója Nincs központi szerepe Automatikus- és környezeti változók kezelése Shell script lehetőség Figyelembe veszi a shebang-et (interpreter választás) Minimális a beépített parancskészlet

utibox Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Unix-ból ismert parancsok gyűjteménye ls cp mv Egyetlen program, közös függvények miatt Symlink-ek választják ki az eszközt Program betöltése lustán!

sysbox Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Rendszer erőforrásait és kernel objektumait kezeli task threads tview tmemo treereg Egyetlen program, közös függvények miatt Symlink-ek választják ki az eszközt Program betöltése lustán!

Dokumentáció Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Dokumentációk rendszerint package-ként: pl: threos-docs, sysbox-docs A dokumentáció frissítése is megoldott Opcionálisan telepíthetőek Rendszerint egyszerű html file-ok Olvashatóak pl. a cat tool-lal

I/O request-ekkel Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Teljesen aszinkron programok készítése Központi szereplő a MsgPort lesz Kapcsolat a külvilággal: registry (service) file system (vfs service) socket-ek (tcpip service)

POSIX Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés A nyers I/O request-ek mellett nyúltott API Ismertebb, és rengeteg segédanyag elérhető Aszinkron alkalmazások továbbra is készíthetőek: poll A központi szereplő így is a MsgPort lesz! Kapcsolat a külvilággal: C99 és POSIX file API BSD-style socket API

Példák Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés Több open source projekt is gond nélkül fordítható joe, tcc, ncurses, links grep, make, sed, yacc Több projekt forrásként érhető el ctris (make-elhető) 2048-c (binárisként is)

Konklúzió Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés A alapvetően más alapokra épült Nem Unix/Linux, sem Windows Egységes API előny Fontos a POSIX (és a C89, C99) ismerete

Felhasználási terület Alapok Rendszer indulás (boot-olás) Device-ok, service-ek és daemon-ok Alkalmazások és fejlesztés PC-n (de csak x86 64) Beágyazott rendszerekben Kevés erőforrás ARM, PPC pl. OrangePI, de egyedi hardware is Az egész rendszer moduláris!

Tartalom Boot Rendszer állapot analizálása 1 2 3 4

Q&A Boot Rendszer állapot analizálása Az eddigiekkel kapcsolatos kérdések.

Első fázis Boot Rendszer állapot analizálása Elindul a vas BIOS kiválasztja a boot disk-et MBR betöltése és elindítása Boot partíció kiválasztása PBR betöltése és elindítása Bootloader betöltése és elindítása A bootloader kilistázza a boot-olható konfigurációkat A konfigurációk a bootfs-en találhatóak A mindenképpen a bootfs-ről indul

Második fázis Boot Rendszer állapot analizálása A konfigurációhoz tartozó XZ után a bootloader betöltése XZ kitömörítése memóriában CPIO boot.cfg alapján induló kernel image összeálĺıtása Az első modul a kernel A többi modul alapvető szolgáltatásokat valósítanak meg Pl: registry, loader, syslog, early serial, libsvc A kernel után a modulok indítása, melyek párhuzamosan futnak Pl: a devman elkezdi a saját tevékenységét, közben a PCI is végzi a detektálást A devman egyik utolsó target-je a shell

readlog Boot Rendszer állapot analizálása A devman tevékenysége (mit indított el) Detektálások Milyen detektált hardware-ek vannak Milyen driver lett hozzárendelve Mely hardware elemhez nem lett driver rendelve TCP/IP események (pl. DHCP log)

task Boot Rendszer állapot analizálása Éppen futó task-ok (process-ek) kilistázása -n: task nevének megjelenítése -s: task státusza B: blocked R: ready r: running Z: zombie

tview és tmemo Boot Rendszer állapot analizálása Task view-jainak/memo-inak listázása Root jogok szükségesek Task állapotának vizsgálata Allokált és használt memória mennyiége Memory leak detektálásra is használható

treereg Boot Rendszer állapot analizálása Registry megjelenítő segédprogram -a: bináris kulcsok ASCII-ként -F: bejegyzés típusa -x: egész számok hexadecimálisként

Boot Rendszer állapot analizálása Q&A Köszönjük a figyelmet! http://threos.io andy2@conet.hu baratharon@caesar.elte.hu