============================================================== SO2 Lecture 01 - Course overview and Linux kernel introduction ============================================================== `View slides `_ .. slideconf:: :autoslides: False :theme: single-level .. slide:: SO2 Lecture 01 - Course overview and Linux kernel introduction :inline-contents: False :level: 1 Echipa ====== .. slide:: Echipa :inline-contents: True :level: 2 * Daniel Băluță (Daniel), Răzvan Deaconescu (Răzvan, RD), Claudiu Ghioc (Claudiu), Valentin Ghiță (Vali), Sergiu Weisz (Sergiu), Octavian Purdilă (Tavi) * Alexandru Militaru (Alex), Teodora Șerbănescu (Teo), Ștefan Teodorescu (Ștefan, Fane), Mihai Popescu (Mihai, Mișu), Constantin Răducanu, Daniel Dinca, Laurențiu Ștefan * Mult succes în noul semestru! Poziționare curs ================ .. slide:: Poziționare curs :inline-contents: True :level: 2 .. ditaa:: +---------------------------------------------------------+ | application programming (EGC, SPG, PP, SPRC, IOC, etc.) | +---------------------------------------------------------+ +----------------------------------+ | system programming (PC, SO, CPL) | +----------------------------------+ user space ----------------------------------------------------------=- kernel space +--------------------------+ | kernel programming (SO2) | +--------------------------+ ----------------------------------------------------------=- +----------------------------------+ | hardware (PM, CN1, CN2, PL ) | +----------------------------------+ Resurse ======= .. slide:: Resurse :inline-contents: True :level: 2 * Linux Kernel Labs: https://linux-kernel-labs.github.io/ * mailing list: so2@cursuri.cs.pub.ro * Facebook * vmchecker * catalog Google, calendar Google * LXR: https://elixir.bootlin.com/linux/v5.10.14/source * cs.curs.pub.ro - rol de portal * karma awards Comunitate ========== .. slide:: Comunitate :inline-contents: True :level: 2 * tutorial contribuții: https://linux-kernel-labs.github.io/refs/heads/master/info/contributing.html * corecții, ajustări, precizări, informații utile * listă de discuții * răspundeți la întrebările colegilor voștri * propuneți subiecte de discuție care au legătură cu disciplina * Facebook * sugestii, propuneri, feedback * Primiți puncte de karma Notare ======= .. slide:: Notare :inline-contents: True :level: 2 * 2 puncte activitate la laborator * 3 puncte „examen”, notare pe parcurs * 5 puncte teme de casă * Activități "extra" * Punctajul din teme de casă + activitați extra ce depăsește 5 puncte e corelat direct proportional cu nota de la examen * Tema 0 - 0,5 puncte * Temele 1, 2, 3 - câte 1,5 puncte fiecare * Condiţii de promovare: nota finală 4.5, nota minimă examen 3 Obiectivele cursului ==================== .. slide:: Obiectivele cursului :inline-contents: True :level: 2 * Prezentarea structurii interne a unui sistem de operare * Target: sisteme de operare de uz general * Structura și componentele unui kernel monolitic * Procese, FS, Networking * Memory management * Exemplificare pe Linux Obiectivele laboratorului si a temelor ====================================== .. slide:: Obiectivele laboratorului si a temelor :inline-contents: True :level: 2 * Însușirea cunoștințelor necesare implementării de device drivere * Înțelegerea în profunzime a cunoștințelor prin rezolvarea de exerciții Cursuri necesare ================ .. slide:: Cursuri necesare :inline-contents: True :level: 2 * Programare: C * SD: tabele de dispersie, arbori echilibrați * IOCLA: lucrul cu registre și instrucțiuni de bază (adunări, comparaţii, salturi) * CN: TLB/CAM, memorie, procesor, I/O * PC, RL: ethernet, IP, sockeți * SO: procese, fișiere, thread-uri, memorie virtuală Despre curs =========== .. slide:: Despre curs :inline-contents: True :level: 2 * 12 cursuri * interactiv * participaţi la discuţii * întrebaţi atunci când nu aţi înţeles * destul de “dens”, se recomandă călduros parcurgerea suportului bibliografic înainte şi după curs * 1h:20 prezentare + 20min teste si discutii pe marginea testului Lista cursuri ============= .. slide:: Lista cursuri :inline-contents: True :level: 2 .. hlist:: :columns: 2 * Introducere * Apeluri de sistem * Procese * Întreruperi * Sincronizare * Adresarea memoriei * Gestiunea memoriei * Gestiunea fișierelor * Kernel debugging * Gestiunea rețelei * Virtualizare * Kernel profiling Despre laborator ================ .. slide:: Despre laborator :inline-contents: True :level: 2 * Kernel Modules and Device Drivers * 15 min prezentare / 80 de minute lucru * se punctează activitatea * learn by doing Despre teme =========== .. slide:: Despre teme :inline-contents: True :level: 2 * necesare: aprofundare API (laborator) și concepte (curs) * teste publice * suport de testare (vmchecker) * relativ puţin cod de scris dar relativ dificile * dificultatea constă în acomodarea cu noul mediu Lista teme ========== .. slide:: Lista teme :inline-contents: True :level: 2 * Tema 0 - Kernel API * Kprobe based tracer * Driver pentru portul serial * Software RAID * SO2 Transport Protocol Bibliografie curs ================= .. slide:: Bibliografie curs :inline-contents: True :level: 2 * Linux Kernel Development, 3rd edition, Robert Love, Addison Wesley, 2010 * Understanding the Linux Kernel, 3rd edition, Daniel P. Bovet & Marco Cesati, O'Reilly 2005 * Linux Networking Architecture, Klaus Wehrle, Frank Pahlke, Hartmut Ritter, Daniel Muller, Marc Bechler, Prentice Hall 2004 * Understanding Linux Network Internals, Christian Benvenuti, O'Reilly 2005 Bibliografie laborator ====================== .. slide:: Bibliografie laborator :inline-contents: True :level: 2 * Linux Device Drivers, 3nd edition, Alessandro Rubini & Jonathan Corbet, O'Reilly 2006 * Linux Kernel in a Nutshell, Greg Kroah-Hartman, O'Reilly 2005 .. include:: ../lectures/intro.rst :start-line: 6