Sisteme de operare 2

View slides

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?

../_images/ditaa-54dce0ef4e9239c914e50e59267861ca9636f3c8.png

Resources

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
  • Facebook
  • 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)

  • Introducere
  • Procese
  • Scheduling
  • Apeluri de sistem
  • Traps
  • Spaţiul de adresă
  • Memorie virtuală
  • Memorie fizică
  • Kernel debugging
  • Block I/O
  • Sisteme de fişiere
  • SMP
  • Networking
  • Virtualizare

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