|
1 |
| -==================== |
2 |
| -Sisteme de operare 2 |
3 |
| -==================== |
| 1 | +============================================================== |
| 2 | +SO2 Lecture 01 - Course overview and Linux kernel introduction |
| 3 | +============================================================== |
4 | 4 |
|
5 |
| -`View slides <so2.cs.pub.ro-slides.html>`_ |
| 5 | +`View slides <lec1-intro-slides.html>`_ |
6 | 6 |
|
7 | 7 | .. slideconf::
|
8 |
| - :autoslides: True |
| 8 | + :autoslides: False |
9 | 9 | :theme: single-level
|
10 | 10 |
|
| 11 | +.. slide:: SO2 Lecture 01 - Course overview and Linux kernel introduction |
| 12 | + :inline-contents: False |
| 13 | + :level: 1 |
| 14 | + |
| 15 | + |
| 16 | +Echipa |
| 17 | +====== |
| 18 | + |
| 19 | +.. slide:: Echipa |
| 20 | + :inline-contents: True |
| 21 | + :level: 2 |
| 22 | + |
| 23 | + * Daniel Băluță (Daniel), Răzvan Deaconescu (Răzvan, RD), Claudiu |
| 24 | + Ghioc (Claudiu), Valentin Ghiță (Vali), Sergiu Weisz (Sergiu), |
| 25 | + Octavian Purdilă (Tavi) |
| 26 | + |
| 27 | + * Alexandru Militaru (Alex), Teodora Șerbănescu (Teo), Ștefan |
| 28 | + Teodorescu (Ștefan, Fane), Mihai Popescu (Mihai, Mișu), |
| 29 | + Constantin Răducanu, Daniel Dinca, Laurențiu Ștefan |
11 | 30 |
|
12 |
| -The team |
13 |
| -======== |
| 31 | + * Mult succes în noul semestru! |
14 | 32 |
|
15 |
| -* Daniel Băluță (Daniel), Răzvan Deaconescu (Răzvan, RD), Claudiu |
16 |
| - Ghioc (Claudiu), Valentin Ghiță (Vali), Sergiu Weisz (Sergiu), |
17 |
| - Octavian Purdilă (Tavi) |
18 |
| -* Iulian Mateșică (Iulian), Alexandra Militaru (Alex), Teodora |
19 |
| - Șerbănescu (Teo), Ștefan Teodorescu (Ștefan, Fane), Mihai Popescu |
20 |
| - (Mihai, Mișu) |
21 |
| -* Mult succes în noul semestru! |
| 33 | +Poziționare curs |
| 34 | +================ |
22 | 35 |
|
23 |
| -Where do we stand? |
24 |
| -================== |
| 36 | +.. slide:: Poziționare curs |
| 37 | + :inline-contents: True |
| 38 | + :level: 2 |
25 | 39 |
|
26 |
| -.. ditaa:: |
| 40 | + .. ditaa:: |
27 | 41 |
|
28 |
| - +---------------------------------------------------------+ |
29 |
| - | application programming (EGC, SPG, PP, SPRC, IOC, etc.) | |
30 |
| - +---------------------------------------------------------+ |
| 42 | + +---------------------------------------------------------+ |
| 43 | + | application programming (EGC, SPG, PP, SPRC, IOC, etc.) | |
| 44 | + +---------------------------------------------------------+ |
31 | 45 |
|
32 | 46 | +----------------------------------+
|
33 | 47 | | system programming (PC, SO, CPL) |
|
34 | 48 | +----------------------------------+
|
35 | 49 | user space
|
36 |
| - ----------------------------------------------------------=- |
| 50 | + ----------------------------------------------------------=- |
37 | 51 | kernel space
|
38 | 52 | +--------------------------+
|
39 | 53 | | kernel programming (SO2) |
|
40 | 54 | +--------------------------+
|
41 | 55 |
|
42 |
| - ----------------------------------------------------------=- |
| 56 | + ----------------------------------------------------------=- |
43 | 57 |
|
44 | 58 | +----------------------------------+
|
45 | 59 | | hardware (PM, CN1, CN2, PL ) |
|
46 | 60 | +----------------------------------+
|
47 | 61 |
|
48 |
| -Resources |
49 |
| -========= |
50 |
| - |
51 |
| -* wiki: http://ocw.cs.pub.ro/courses/so2 |
52 |
| -* NeedToKnow: http://ocw.cs.pub.ro/courses/so2/need-to-know |
53 |
| -* Linux Kernel Labs: https://linux-kernel-labs.github.io/ |
54 |
| -* mailing list: so2@cursuri.cs.pub.ro |
55 |
| -* Facebook |
56 |
| -* vmchecker |
57 |
| -* catalog Google, calendar Google |
58 |
| -* LXR |
59 |
| -* cs.curs.pub.ro - rol de portal |
60 |
| -* karma awards |
61 |
| - |
62 |
| -Community |
63 |
| -========= |
64 |
| - |
65 |
| -* contribuții via https://github.com/linux-kernel-labs/linux (PR sau |
66 |
| - issues) |
67 |
| -* corecții, ajustări, precizări, informații utile |
68 |
| -* listă de discuții |
69 |
| -* răspundeți la întrebările colegilor voștri |
70 |
| -* propuneți subiecte de discuție care au legătură cu disciplina |
71 |
| -* Facebook |
72 |
| -* sugestii, propuneri, feedback |
73 |
| -* Primiți puncte de karma |
74 |
| - |
75 |
| -Grading |
| 62 | +Resurse |
| 63 | +======= |
| 64 | + |
| 65 | +.. slide:: Resurse |
| 66 | + :inline-contents: True |
| 67 | + :level: 2 |
| 68 | + |
| 69 | + * Linux Kernel Labs: https://linux-kernel-labs.github.io/ |
| 70 | + * mailing list: so2@cursuri.cs.pub.ro |
| 71 | + * Facebook |
| 72 | + * vmchecker |
| 73 | + * catalog Google, calendar Google |
| 74 | + * LXR: https://elixir.bootlin.com/linux/v5.10.14/source |
| 75 | + * cs.curs.pub.ro - rol de portal |
| 76 | + * karma awards |
| 77 | + |
| 78 | +Comunitate |
| 79 | +========== |
| 80 | + |
| 81 | +.. slide:: Comunitate |
| 82 | + :inline-contents: True |
| 83 | + :level: 2 |
| 84 | + |
| 85 | + * tutorial contribuții: https://linux-kernel-labs.github.io/refs/heads/master/info/contributing.html |
| 86 | + * corecții, ajustări, precizări, informații utile |
| 87 | + * listă de discuții |
| 88 | + * răspundeți la întrebările colegilor voștri |
| 89 | + * propuneți subiecte de discuție care au legătură cu disciplina |
| 90 | + * Facebook |
| 91 | + * sugestii, propuneri, feedback |
| 92 | + * Primiți puncte de karma |
| 93 | + |
| 94 | +Notare |
76 | 95 | =======
|
77 | 96 |
|
78 |
| -* 2 puncte activitate la laborator |
79 |
| -* 3 puncte „examen”, notare pe parcurs |
80 |
| -* 10 puncte teme de casă |
81 |
| -* Punctajul > 5 puncte e corelat direct proportional cu nota de la examen (la fel ca la SO) |
82 |
| -* Tema 0 - 0,5 puncte |
83 |
| -* Temele 1, 2, 3 - câte 1,5 puncte fiecare |
84 |
| -* Activități “extra” |
85 |
| -* Ixia challenge - 2 puncte |
86 |
| -* Kernel (filesystem) hackaton - 2 puncte |
87 |
| -* SO2 transport protocol - 1 punct |
88 |
| -* Condiţii de promovare: nota finală 4.5, nota minimă examen 3 |
| 97 | +.. slide:: Notare |
| 98 | + :inline-contents: True |
| 99 | + :level: 2 |
| 100 | + |
| 101 | + * 2 puncte activitate la laborator |
| 102 | + * 3 puncte „examen”, notare pe parcurs |
| 103 | + * 5 puncte teme de casă |
| 104 | + * Activități "extra" |
| 105 | + * Punctajul din teme de casă + activitați extra ce depăsește 5 |
| 106 | + puncte e corelat direct proportional cu nota de la examen |
| 107 | + * Tema 0 - 0,5 puncte |
| 108 | + * Temele 1, 2, 3 - câte 1,5 puncte fiecare |
| 109 | + * Condiţii de promovare: nota finală 4.5, nota minimă examen 3 |
89 | 110 |
|
90 | 111 | Obiectivele cursului
|
91 | 112 | ====================
|
92 | 113 |
|
93 |
| -* Prezentarea structurii interne a unui sistem de operare |
94 |
| -* Target: sisteme de operare de uz general |
95 |
| -* Structura și componentele unui kernel monolitic |
96 |
| -* Procese, FS, Networking |
97 |
| -* Memory management |
98 |
| -* Exemplificare pe Linux |
| 114 | +.. slide:: Obiectivele cursului |
| 115 | + :inline-contents: True |
| 116 | + :level: 2 |
| 117 | + |
| 118 | + * Prezentarea structurii interne a unui sistem de operare |
| 119 | + * Target: sisteme de operare de uz general |
| 120 | + * Structura și componentele unui kernel monolitic |
| 121 | + * Procese, FS, Networking |
| 122 | + * Memory management |
| 123 | + * Exemplificare pe Linux |
| 124 | + |
| 125 | +Obiectivele laboratorului si a temelor |
| 126 | +====================================== |
| 127 | + |
| 128 | +.. slide:: Obiectivele laboratorului si a temelor |
| 129 | + :inline-contents: True |
| 130 | + :level: 2 |
99 | 131 |
|
100 |
| -Obiectivele laboratorului/temelor |
101 |
| -================================= |
102 |
| -* Însușirea cunoștințelor necesare implementării de device drivere |
103 |
| -* Înțelegerea în profunzime a cunoștințelor prin rezolvarea de exerciții |
| 132 | + * Însușirea cunoștințelor necesare implementării de device drivere |
| 133 | + |
| 134 | + * Înțelegerea în profunzime a cunoștințelor prin rezolvarea de |
| 135 | + exerciții |
104 | 136 |
|
105 | 137 | Cursuri necesare
|
106 | 138 | ================
|
107 | 139 |
|
108 |
| -* Programare: C |
109 |
| -* SD: tabele de dispersie, arbori echilibrați |
110 |
| -* IOCLA: lucrul cu registre și instrucțiuni de bază (adunări, comparaţii, salturi) |
111 |
| -* CN: TLB/CAM, memorie, procesor, I/O |
112 |
| -* PC, RL: ethernet, IP, sockeți |
113 |
| -* SO: procese, fișiere, thread-uri, memorie virtuală |
| 140 | +.. slide:: Cursuri necesare |
| 141 | + :inline-contents: True |
| 142 | + :level: 2 |
| 143 | + |
| 144 | + * Programare: C |
| 145 | + * SD: tabele de dispersie, arbori echilibrați |
| 146 | + * IOCLA: lucrul cu registre și instrucțiuni de bază (adunări, comparaţii, salturi) |
| 147 | + * CN: TLB/CAM, memorie, procesor, I/O |
| 148 | + * PC, RL: ethernet, IP, sockeți |
| 149 | + * SO: procese, fișiere, thread-uri, memorie virtuală |
114 | 150 |
|
115 | 151 | Despre curs
|
116 | 152 | ===========
|
117 | 153 |
|
118 |
| -* 12 cursuri |
119 |
| -* interactiv |
120 |
| -* participaţi la discuţii |
121 |
| -* întrebaţi atunci când nu aţi înţeles |
122 |
| -* destul de “dens”, se recomandă călduros parcurgerea suportului bibliografic înainte şi după curs |
123 |
| -* 1h:30 prezentare + 30min test si discutii pe marginea testului |
124 |
| - |
125 |
| -Despre curs (2) |
126 |
| -=============== |
127 |
| - |
128 |
| -.. hlist:: |
129 |
| - :columns: 2 |
130 |
| - |
131 |
| - * Introducere |
132 |
| - * Procese |
133 |
| - * Scheduling |
134 |
| - * Apeluri de sistem |
135 |
| - * Traps |
136 |
| - * Spaţiul de adresă |
137 |
| - * Memorie virtuală |
138 |
| - * Memorie fizică |
139 |
| - * Kernel debugging |
140 |
| - * Block I/O |
141 |
| - * Sisteme de fişiere |
142 |
| - * SMP |
143 |
| - * Networking |
144 |
| - * Virtualizare |
| 154 | +.. slide:: Despre curs |
| 155 | + :inline-contents: True |
| 156 | + :level: 2 |
| 157 | + |
| 158 | + * 12 cursuri |
| 159 | + * interactiv |
| 160 | + * participaţi la discuţii |
| 161 | + * întrebaţi atunci când nu aţi înţeles |
| 162 | + * destul de “dens”, se recomandă călduros parcurgerea suportului bibliografic înainte şi după curs |
| 163 | + * 1h:20 prezentare + 20min teste si discutii pe marginea testului |
| 164 | + |
| 165 | +Lista cursuri |
| 166 | +============= |
| 167 | + |
| 168 | +.. slide:: Lista cursuri |
| 169 | + :inline-contents: True |
| 170 | + :level: 2 |
| 171 | + |
| 172 | + .. hlist:: |
| 173 | + :columns: 2 |
| 174 | + |
| 175 | + * Introducere |
| 176 | + * Apeluri de sistem |
| 177 | + * Procese |
| 178 | + * Întreruperi |
| 179 | + * Sincronizare |
| 180 | + * Adresarea memoriei |
| 181 | + * Gestiunea memoriei |
| 182 | + * Gestiunea fișierelor |
| 183 | + * Kernel debugging |
| 184 | + * Gestiunea rețelei |
| 185 | + * Virtualizare |
| 186 | + * Kernel profiling |
145 | 187 |
|
146 | 188 |
|
147 | 189 | Despre laborator
|
148 | 190 | ================
|
149 | 191 |
|
150 |
| -* Kernel Modules and Device Drivers |
151 |
| -* 15 min prezentare / 80 de minute lucru |
152 |
| -* se punctează activitatea |
153 |
| -* learn by doing |
| 192 | +.. slide:: Despre laborator |
| 193 | + :inline-contents: True |
| 194 | + :level: 2 |
| 195 | + |
| 196 | + * Kernel Modules and Device Drivers |
| 197 | + * 15 min prezentare / 80 de minute lucru |
| 198 | + * se punctează activitatea |
| 199 | + * learn by doing |
154 | 200 |
|
155 | 201 | Despre teme
|
156 | 202 | ===========
|
157 | 203 |
|
158 |
| -* Tema 0 |
159 |
| -* Kprobe based tracer |
160 |
| -* Driver pentru portul serial |
161 |
| -* Software RAID |
162 |
| -* Teme “extra” |
163 |
| -* Filesystem driver - hackaton |
164 |
| -* E100 driver - Ixia challenge |
165 |
| -* Network transport protocol |
| 204 | +.. slide:: Despre teme |
| 205 | + :inline-contents: True |
| 206 | + :level: 2 |
| 207 | + |
| 208 | + * necesare: aprofundare API (laborator) și concepte (curs) |
| 209 | + * teste publice |
| 210 | + * suport de testare (vmchecker) |
| 211 | + * relativ puţin cod de scris dar relativ dificile |
| 212 | + * dificultatea constă în acomodarea cu noul mediu |
166 | 213 |
|
| 214 | +Lista teme |
| 215 | +========== |
167 | 216 |
|
168 |
| -Despre teme (2) |
169 |
| -=============== |
| 217 | +.. slide:: Lista teme |
| 218 | + :inline-contents: True |
| 219 | + :level: 2 |
| 220 | + |
| 221 | + * Tema 0 - Kernel API |
| 222 | + * Kprobe based tracer |
| 223 | + * Driver pentru portul serial |
| 224 | + * Software RAID |
| 225 | + * SO2 Transport Protocol |
170 | 226 |
|
171 |
| -* necesare: aprofundare API (laborator) și concepte (curs) |
172 |
| -* teste publice |
173 |
| -* suport de testare (vmchecker) |
174 |
| -* relativ puţin cod de scris dar relativ dificile |
175 |
| -* dificultatea constă în acomodarea cu noul mediu |
176 | 227 |
|
177 | 228 | Bibliografie curs
|
178 | 229 | =================
|
179 | 230 |
|
180 |
| -* Linux Kernel Development, 3rd edition, Robert Love, Addison Wesley, 2010 |
181 |
| -* Understanding the Linux Kernel, 3rd edition, Daniel P. Bovet & Marco Cesati, O'Reilly 2005 |
182 |
| -* Linux Networking Architecture, Klaus Wehrle, Frank Pahlke, Hartmut Ritter, Daniel Muller, Marc Bechler, Prentice Hall 2004 |
183 |
| -* Understanding Linux Network Internals, Christian Benvenuti, O'Reilly 2005 |
| 231 | +.. slide:: Bibliografie curs |
| 232 | + :inline-contents: True |
| 233 | + :level: 2 |
| 234 | + |
| 235 | + * Linux Kernel Development, 3rd edition, Robert Love, Addison |
| 236 | + Wesley, 2010 |
| 237 | + |
| 238 | + * Understanding the Linux Kernel, 3rd edition, Daniel P. Bovet & |
| 239 | + Marco Cesati, O'Reilly 2005 |
| 240 | + |
| 241 | + * Linux Networking Architecture, Klaus Wehrle, Frank Pahlke, |
| 242 | + Hartmut Ritter, Daniel Muller, Marc Bechler, Prentice Hall 2004 |
| 243 | + |
| 244 | + * Understanding Linux Network Internals, Christian Benvenuti, O'Reilly 2005 |
184 | 245 |
|
185 | 246 | Bibliografie laborator
|
186 | 247 | ======================
|
187 | 248 |
|
188 |
| -* Linux Device Drivers, 3nd edition, Alessandro Rubini & Jonathan Corbet, O'Reilly 2006 |
189 |
| -* Linux Kernel in a Nutshell, Greg Kroah-Hartman, O'Reilly 2005 |
| 249 | +.. slide:: Bibliografie laborator |
| 250 | + :inline-contents: True |
| 251 | + :level: 2 |
| 252 | + |
| 253 | + * Linux Device Drivers, 3nd edition, Alessandro Rubini & Jonathan |
| 254 | + Corbet, O'Reilly 2006 |
| 255 | + |
| 256 | + * Linux Kernel in a Nutshell, Greg Kroah-Hartman, O'Reilly 2005 |
| 257 | + |
| 258 | + |
| 259 | +.. include:: ../lectures/intro.rst |
| 260 | + :start-line: 6 |
0 commit comments