Sisteme de operare 2¶
The team¶
- Daniel Băluță (Daniel), Răzvan Deaconescu (Răzvan, RD), Claudiu Ghioc (Claudiu), Valentin Ghiță (Vali), Sergiu Weisz (Sergiu), Octavian Purdilă (Tavi)
- Iulian Mateșică (Iulian), Alexandra Militaru (Alex), Teodora Șerbănescu (Teo), Ștefan Teodorescu (Ștefan, Fane), Mihai Popescu (Mihai, Mișu)
- Mult succes în noul semestru!
Where do we stand?¶
Resources¶
- wiki: http://ocw.cs.pub.ro/courses/so2
- NeedToKnow: http://ocw.cs.pub.ro/courses/so2/need-to-know
- Linux Kernel Labs: https://linux-kernel-labs.github.io/
- mailing list: so2@cursuri.cs.pub.ro
- vmchecker
- catalog Google, calendar Google
- LXR
- cs.curs.pub.ro - rol de portal
- karma awards
Community¶
- contribuții via https://github.com/linux-kernel-labs/linux (PR sau issues)
- 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
- sugestii, propuneri, feedback
- Primiți puncte de karma
Grading¶
- 2 puncte activitate la laborator
- 3 puncte „examen”, notare pe parcurs
- 10 puncte teme de casă
- Punctajul > 5 puncte e corelat direct proportional cu nota de la examen (la fel ca la SO)
- Tema 0 - 0,5 puncte
- Temele 1, 2, 3 - câte 1,5 puncte fiecare
- Activități “extra”
- Ixia challenge - 2 puncte
- Kernel (filesystem) hackaton - 2 puncte
- SO2 transport protocol - 1 punct
- Condiţii de promovare: nota finală 4.5, nota minimă examen 3
Obiectivele cursului¶
- 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/temelor¶
- Î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¶
- 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¶
- 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:30 prezentare + 30min test si discutii pe marginea testului
Despre curs (2)¶
|
|
Despre laborator¶
- Kernel Modules and Device Drivers
- 15 min prezentare / 80 de minute lucru
- se punctează activitatea
- learn by doing
Despre teme¶
- Tema 0
- Kprobe based tracer
- Driver pentru portul serial
- Software RAID
- Teme “extra”
- Filesystem driver - hackaton
- E100 driver - Ixia challenge
- Network transport protocol
Despre teme (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
Bibliografie curs¶
- 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¶
- Linux Device Drivers, 3nd edition, Alessandro Rubini & Jonathan Corbet, O’Reilly 2006
- Linux Kernel in a Nutshell, Greg Kroah-Hartman, O’Reilly 2005