Témata návrh

Transkript

Témata návrh
SWI 075 – Linux Kernel
Úvod
Outline
●
●
●
●
●
Organizace semináře
“Vývojový model kernelu”
Developer essentials – jak si kernel stáhnout, zkompilovat, ...
Dokumentace
Témata referátů, zápočťáky, ...
Organizace semináře
●
●
●
●
Zápočet za (přiměřeně kvalitní) referát nebo (přiměřeně kvalitní) patch do kernelu
Témata poměrně libovolná (týkající se kernelu); návrhy na závěr prezentace
Neobsazené semináře/témata odpřednáším já, na libovolné téma na kterém se domluvíme
http://www.jikos.cz/lk/ ­ návrhy na témata, přidělená témata a “rozvrh”, odpřednášené referáty, ...
“Vývojový model kernelu”
●
●
●
Žádná oficiální roadmap, žádné UML diagramy, žádne formální specifikace, žádné release plány, design dokumenty, ...
“Linux is evolution, not intelligent design” ­ Linus
15 let od svého vzniku se kernel stále vyvíjí značnou rychlostí (bug fixy, nové featury, cleanupy, ...)
“Vývojový model kernelu”
“Vývojový model kernelu”
●
●
●
●
Cca 9200 řádek kódu denně změněno
Distribuovaný vývoj – pro správu verzí používán GIT
Většina subsystémů má vlastní vývojovou větev – seznam “hlavních” větví na kernel.org viz http://www.kernel.org/git/
Patche do konkrétních subsystémů vždy skrz příslušné větve, ze kterých Linus periodicky “pulluje” do mainline
“Vývojový model kernelu”
●
●
●
●
Andrew Morton udržuje (mimo GIT) speciální sadu patchů – mm větev
Experimentální nové featury (reiser4, ext4, rozsáhlé změny subsystémů, apod)
Určena pro testování – po čase kdy je patch v ­mm a ukáže se jako správný ho Andrew “pushuje” upstream (subsystem tree, mainline)
Funguje dobře – Andrew je daleko pečlivější maintainer než Linus
“Vývojový model kernelu”
●
●
●
Stabilní release každé cca 2­3 měsíce (2.6.x)
Pro opravy kritických chyb (security, crashe, data corruption, ...) ­stable kernel releases: 2.6.x.y
Každý 2.6.x release je “major” release – obsahuje nové featury, mění vnitřní kernelové API, ...
“Vývojový model kernelu”
●
Týden 0
–
●
Týden 2­3: 2.6.x­rc1
–
–
–
●
Zavřené “merge okno” (vetšinou) žádné nové featury, jen bugfixy
Stále vysoký “patchrate”
Týdny 3­8: další 2.6.x­rcY releases.
–
●
Několik set patchů začleněno – nové featury, změny API, zásadní změny, ...
Po snížení bugfix patchrate – release dalšího 2.6.(x+1)
Později dle potřeby releases 2.6.x.y ­stable, paralelně s dalším vývojem
Developer essentials
●
●
●
http://www.kernel.org/ ­ seznam aktualních releases (stable, ­rc, ­mm, ­git (snapshot))
GIT ­ http://git.or.cz/
Documentation/Changes obsahuje seznam minimálních SW požadavků ke kompilaci kernelu
Developer essentials
●
●
●
●
make defconfig/allyesconfig/oldconfig/allmo
dconfig/allnoconfig/randconfig
make menuconfig/xconfig/gconfig
make
make modules_install && make install
Dokumentace
●
●
●
●
●
●
●
Documentation/*
KernelNewbies ­ http://kernelnewbies.org/
LXR ­ http://lxr.linux.no/
Robert Love – Linux Kernel Development 2nd Edition ­ http://rlove.org/kernel_book/ (není zdarma)
Alessandro Rubini & Jonathan Corbet – Linux Device Drivers 3rd Edition ­ http://lwn.net/Kernel/LDD3/
Mel Gorman – Understanding the Linux Virtual Memory Manager ­
http://www.skynet.ie/~mel/projects/vm/guide/pdf/un
derstand.pdf
Témata ­ návrh
●
●
●
●
●
●
Kernel build systém, přenositelnost
VCS – GIT, Cogito
Konfigurace kernelu, Kconfig, závislosti mezi konfiguračními volbami
Stavba Makefiles, jak přidat svůj driver/kód do build systému
Jak kernel řeší přenositelnost mezi různými architekturami – oddělení arch­dependent kódu od zbytku
Přenositelnost datových typů – opaque typy, endianita, typy s explicitně udanou velikostí, padding struktur, ...
Témata ­ návrh
●
●
●
●
●
Procesy a plánování
Vznik procesu, datové struktury (task_struct, thread_info), mechanismus copy­on­write, signály
Alokace PID, stavy procesu a přechody mezi nimi, přechod mezi userspace a kernelspace; process­context, interrupt­context
Implementace threadů v linuxu; kernelové thready
Scheduler – I/O­bound vs. CPU­bound procesy, O(1) scheduler, priority, timeslices, runqueues, waitqueues, loadbalancer na SMP a HT, context­
switch
Témata ­ návrh
●
●
●
●
●
Syscally, zámky
Pasivní a aktivní čekání (spinlocky, semafory, mutexy); kdy co použít
Co je potřeba zamykat, jak může dojít k race condition (preemptivní vs. nepreemptivní kernel, interrupt, sleep, SMP, ...). Lockdep validator. RCU – lockless data access.
Completion variables, BKL, memory barriers
Syscall – vztah mezi libc a kernelem, int 0x80 vs. SYSENTER. Co je vsyscall, vDSO page. Předávání argumentů mezi kernelem a userspacem
Témata ­ návrh
●
●
●
●
●
●
Interrupt handling
Asynchronní a synchronní interrupty. ISR – co se v ní smí a co ne.
Přiřazení ISR k IRQ. Sdílené a reentrantní ISR, interrupt context.
Povolení a zakázání přerušení, cli()/sti() vs. local_irq_{disable,restore}(). disable_irq() a disable_irq_nosync(). Bottom halves. Softirqs, tasklety. Kernelový thread ksoftirqd. Workqueues.
Zamykání v interruptech a mezi bottom halves
Témata ­ návrh
●
●
●
●
VFS a filesystémy
Co je abstrakce VFS. Nejdůležitější datové struktury (superblock, inode, file, dentry) a operace nad nimi. Vztah mezi VFS a “skutečnými” filesystémy. Vazba mezi VFS a procesem. Přehled filesystémů, jejich vlastností a implementace (ext2,3,4, ReiserFS3,4, XFS, GFS2, ...)
Témata ­ návrh
●
●
●
●
●
Memory management
Alokace paměti v kernelu ­ kmalloc() vs. vmalloc()
struct page. Zóny (DMA, NORMAL, HIGHMEM). Alokace a dealokace stránek ­ alloc_pages(), __get_free_pages(), get_zeroed_page().
Slab allocator – princip cachování u slab cache, vztah mezi cache, slab a object. Alokace na stacku, dočasná mapování kmap(), highmem, 3:1 split, ...
Témata ­ návrh
●
●
●
●
●
Adresní prostor procesu, stránkování
Memory deskriptor (struct mm_struct). Kernel thready a jejich address space. Co jsou to VMA, jak jsou v kernelu reprezentovány. Přemisťování, spojování, rušení VMA, přístupová práva.
Co se stane když proces volá mmap() či malloc()
Jak funguje stránkování a swapování, pagetables, co je page cache a buffer cache. K čemu slouží thread pdflush
Témata ­ návrh
●
●
●
●
Ovladače zařízení
Co je ovladač zařízení. Ovladače v userspace (vgalib, libusb)
Bloková a znaková zařízení, SCSI, PCI, input drivers (myš, klávesnice, joystick)
Bloková zařízení – struct bio, request queues, I/O schedulery (deadline, anticipatory, elevator, cfq)
Témata ­ návrh
●
●
●
●
Síť
Síťová zařízení (jak funguje transport mezi různými vrstvami (i v vzhledem k ISO/OSI), co je skb, netfilter, nastavování parametrů socketu, raw sockety)
NAPI – nové síťové API
Nové protokoly v kernelu – DCCP, SCTP, ...
Témata ­ návrh
●
●
●
●
●
Debugging, Time
Problémy s debugováním kernelu a jejich řešení – sériová konzole, printk(), kgdb, kprobes. Co je kernel oops a jak ho použít k ladění – ksymoops, kallsyms. User­mode­linux
Počítání času v Kernelu – hodnota HZ (přesnější timery, select(), poll(), scheduler). Co jsou jiffies a jejich reprezentace. RTC. BogoMIPS, hrtimers kernel patch, podpora pro realtime scheduling.
Témata ­ návrh
●
●
●
●
●
●
Bezpečnost
LSM, SELinux. Podpora kernelu pro šifrování – cryptoAPI, šifrované filesystémy
rd
Bezpečnostní 3 party patche do kernelu (grsecurity, RBAC, ...)
Exploity
Rootkity
Témata ­ návrh
●
●
●
●
ACPI (, APM)
K čemu ACPI je, stav implementace v linuxu. Problémy s HW neodpovídajícímu specifikaci. Co je DSDT, její dekompilace, úpravy, kompilace. ...
Zápočťáky
●
●
●
Kernelová bugzilla ­http://bugzilla.kernel.org/
http://www.kerneljanitors.org/ ­ “We go through the Linux kernel source code, doing code reviews, fixing up unmaintained code and doing other cleanups and API conversions. It is a good start to kernel hacking.”
...

Podobné dokumenty

Příklad OP LZZ

Příklad OP LZZ  Součástí Operačního programu Lidské zdroje a zaměstnanost je financování intervencí v prioritní ose „Adaptabilita“, tj. především „vzdělávání zaměstnanců firem“. Tato oblast představuje zhruba čt...

Více

Mainlinovy kernel na telefonu Pavel Machek <pavel@ucw

Mainlinovy kernel na telefonu Pavel Machek <pavel@ucw Modem nepouziva sdilenou RAM Klavesnice Resistivni touchscreen Cca 2000Kc, v kazdem lepsim bazaru

Více

IRQ handling

IRQ handling SWI 075 – Linux Kernel

Více

Linux jako real-time systém

Linux jako real-time systém (2) service the device; device driver's threaded IRQ handler (1) mask&ack, then wake up the thread; generic IRQ code

Více

ACPI a Software Suspend

ACPI a Software Suspend V DSDT tabulce mohou být chyby (výrobce zajímá jen jestli to funguje ve Windows) Naštěstí je možno DSDT tabulku dekompilovat, upravit, zkompilovat a zadat kernelu: Device Drivers ---> Generic Drive...

Více

printk() - jikos.cz

printk() - jikos.cz • http://user-mode-linux.sourceforge.net/UserModeLinux-HOWT

Více

Medveduv pruvodce po LibUCW

Medveduv pruvodce po LibUCW Medvědův průvodce po LibUCW Martin Mareš [email protected] Katedra Aplikované Matematiky MFF UK Praha

Více

taktika-Reliquary of Souls

taktika-Reliquary of Souls dostane za 11k coz je smrtici uder kolikrát. Zbytek healeru jedou chain heal a heal raidu. Kvuli tomu v 2.fazi stojime tak jako na obrazku aby stali lidi u sebe a dobře s to healovalo. Celkove vzat...

Více