Last modified by Thomas Schwotzer on 2025/04/09 12:44

From version 191.1
edited by Thomas Schwotzer
on 2024/03/22 09:18
Change comment: There is no comment for this version
To version 188.1
edited by Thomas Schwotzer
on 2024/01/24 09:11
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -51,76 +51,6 @@
51 51  |(((
52 52  1
53 53  )))|(((
54 -**Betriebssysteme - Einstieg
55 -**
56 -)))|(((
57 -Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf.
58 -)))|(((
59 -[2] 1.1 - 1.4
60 -
61 -[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]]
62 -
63 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]]
64 -)))|(((
65 -\\
66 -)))
67 -|(((
68 -2
69 -)))|(((
70 -**Von Programmcode zum laufenden Prozess**
71 -)))|(((
72 -Ein Programm ist laufender Maschinecode. Den können wir im Prinzip direkt implementieren. Das ist nur enorm zeitaufwendig. Wir können mit Assembler anfangen. Liest sich besser, löst kein Problem. Wir können mit einer //Hochsprache// wie C anfangen. Gute Idee. Wie aber wird aus dem C-Code Maschinencode? Was ist ein Compiler und ein Compiler-Compiler? Was ist eine Shell, wie passt die Java Virtuelle Maschine (JVM) in all das ... und die Frage aller Fragen: was ist die Matrix? (Okay, die Matrix diskutieren wir leider nicht). Wir lernen aber bereits den Scheduler kennen, über den wir später noch einmal wieder treffen werden.
73 -)))|(((
74 -[2] 1.5.1, 2.1
75 -
76 -[[Assember, Maschinencode, Java und JVM>>url:http://www.sharksystem.net/htw/Prog1/Java.pdf||shape="rect"]]
77 -
78 -[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Vom-Programmcode-zum-laufenden-Prozess/51827ebfe20ed06ba810758d1b71dbef||shape="rect"]]
79 -
80 -[11] start command
81 -
82 -[12] am Ende der Zeile "&" - launch background process
83 -)))|(((
84 -(% class="content-wrapper" %)
85 -(((
86 -Wir implementieren ein Multithreaded Java-Programm.
87 -
88 -{{view-file att--filename="ThreadTemplate.zip" display="thumbnail" height="250"/}}
89 -
90 -[[LN:Threads mit Java>>url:http://www.sharksystem.net/htw/GMA/LN/Threads_Java_Android.pdf||shape="rect"]]
91 -)))
92 -)))
93 -|(((
94 -3
95 -)))|(((
96 -**Threads + Race Conditions** (Problembeschreibung)
97 -)))|(((
98 -Betriebssysteme sind schon sehr sehr lange in der Lage mehrere Prozesse (quasi-) parallel auszuführen. Anwendungsentwickler:innen kommen häufiger mit Threads in Kontakt, weshalb wir in den Übungen mit Threads arbeiten. Schnell aber kommt treten //Race Conditions (Wettlaufbedingungen)// auf. Die sind oft gar nicht so schnell zu erkennen. Es gibt einen Grund warum //Multithreading// schon eine Herausforderung ist. Wir beschäftigen uns mit Threads, wie wir die programmieren und welche Probleme dabei entstehen können, bis hin zum Deadlock. Wir erfahren was ein kritischer Abschnitt (//critical section//) ist.
99 -)))|(((
100 -[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]]
101 -
102 -\\
103 -)))|(((
104 -Wir versuchen Threads zu synchronisieren.
105 -)))
106 -|(((
107 -4
108 -)))|(((
109 -**Synchronisation von Prozessen und Threads**
110 -)))|(((
111 -Nachdem wir uns mit den Herausforderungen gleichzeitig laufender Kontrollflüsse beschäftigten, kommen wir zu Lösungen. Wir reden über Semaphoren, Signale (technisch Interrupts), Mutex.
112 -)))|(((
113 -[2] 2.3.1 - 2.3.9, 2.4
114 -
115 -[2] 1.5.2, 3
116 -
117 -[[Codebeispiel: Synchronisation>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions||shape="rect"]]
118 -)))|(((
119 -Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle.
120 -)))
121 -|(((
122 -5
123 -)))|(((
124 124  **Punkt-zu-Punkt Datenübertragung**
125 125  )))|(((
126 126  Wir fangen mit den Netzwerken an. Und der Anfang ist prosaisch: Man nehme ein Kabel und verbinden zwei Parteien, die darüber nun Daten austauschen. Und damit fangen die interessanten Fragen bereits an.
... ... @@ -136,7 +136,7 @@
136 136  Wir beschäftigen uns mit [[Streams>>url:https://mediathek.htw-berlin.de/album/video/Streams/ef694bc868aa397a1bb42507db7fc33d/334||shape="rect"]] und [[DataStreams>>url:https://mediathek.htw-berlin.de/album/video/DataStreams/55d82930517c4795a6089dce9512c409/334||shape="rect"]].
137 137  )))
138 138  |(((
139 -6
69 +2
140 140  )))|(((
141 141  **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)**
142 142  )))|(((
... ... @@ -151,7 +151,7 @@
151 151  Wir beschäftigen uns mit Unit Tests, konkret JUnit. Der Einschub ist wichtig, weil unser Programm immer komplexer wird die Fehlersuche immer schwerer. Bei verteilten Systemen sowieso ein richtiges Problem.
152 152  )))
153 153  |(((
154 -7
84 +3
155 155  )))|(((
156 156  **Layer 2 (Ethernet)**
157 157  )))|(((
... ... @@ -171,7 +171,7 @@
171 171  )))
172 172  )))
173 173  |(((
174 -8
104 +4
175 175  )))|(((
176 176  **Layer 3 (Internet Protocol)**
177 177  )))|(((
... ... @@ -190,7 +190,7 @@
190 190  \\
191 191  )))
192 192  |(((
193 -9
123 +5
194 194  )))|(((
195 195  **Layer 4 (TCP)**
196 196  )))|(((
... ... @@ -205,24 +205,6 @@
205 205  \\
206 206  )))
207 207  |(((
208 -10
209 -)))|(((
210 -**Scheduling / Deadlocks
211 -**
212 -)))|(((
213 -Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt.
214 -
215 -Wir reden über verhungernde Philosophen etc.
216 -)))|(((
217 -[1] S.151, 158ff + S. 192ff, 214, 239, 242ff
218 -
219 -[2] S.93-99, 150-166 + S.181, 186ff
220 -
221 -[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Scheduling/394e546de01c41a388ac2afc2d9cdd6c||shape="rect"]] [[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/deadlocks/a74ffe24a122016f66a28e377b4de5ab/334||shape="rect"]]
222 -)))|(((
223 -\\
224 -)))
225 -|(((
226 226  6
227 227  )))|(((
228 228  **Verzeichnisdienste DNS**, LDAP, X.500
... ... @@ -242,11 +242,16 @@
242 242  |(((
243 243  7
244 244  )))|(((
245 -\\
157 +**Betriebssysteme - Einstieg
158 +**
246 246  )))|(((
247 -\\
160 +Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf.
248 248  )))|(((
249 -\\
162 +[2] 1.1 - 1.4
163 +
164 +[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]]
165 +
166 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]]
250 250  )))|(((
251 251  \\
252 252  )))
... ... @@ -253,14 +253,29 @@
253 253  |(((
254 254  8
255 255  )))|(((
256 -\\
173 +**Von Programmcode zum laufenden Prozess**
257 257  )))|(((
258 -\\
175 +Ein Programm ist laufender Maschinecode. Den können wir im Prinzip direkt implementieren. Das ist nur enorm zeitaufwendig. Wir können mit Assembler anfangen. Liest sich besser, löst kein Problem. Wir können mit einer //Hochsprache// wie C anfangen. Gute Idee. Wie aber wird aus dem C-Code Maschinencode? Was ist ein Compiler und ein Compiler-Compiler? Was ist eine Shell, wie passt die Java Virtuelle Maschine (JVM) in all das ... und die Frage aller Fragen: was ist die Matrix? (Okay, die Matrix diskutieren wir leider nicht). Wir lernen aber bereits den Scheduler kennen, über den wir später noch einmal wieder treffen werden.
259 259  )))|(((
260 -\\
177 +[2] 1.5.1, 2.1
178 +
179 +[[Assember, Maschinencode, Java und JVM>>url:http://www.sharksystem.net/htw/Prog1/Java.pdf||shape="rect"]]
180 +
181 +[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Vom-Programmcode-zum-laufenden-Prozess/51827ebfe20ed06ba810758d1b71dbef||shape="rect"]]
182 +
183 +[11] start command
184 +
185 +[12] am Ende der Zeile "&" - launch background process
261 261  )))|(((
262 -\\
187 +(% class="content-wrapper" %)
188 +(((
189 +Wir implementieren ein Multithreaded Java-Programm.
190 +
191 +{{view-file att--filename="ThreadTemplate.zip" display="thumbnail" height="250"/}}
192 +
193 +[[LN:Threads mit Java>>url:http://www.sharksystem.net/htw/GMA/LN/Threads_Java_Android.pdf||shape="rect"]]
263 263  )))
195 +)))
264 264  |(((
265 265  9
266 266  )))|(((
... ... @@ -273,26 +273,32 @@
273 273  Wir machen einmal Pause von unserem Projekt und implementieren ein simples rekursives Java-Programm das ein mehrdimensionales Array füllt und schauen uns Stack und Speicherstruktur einmal genauer an.
274 274  )))
275 275  |(((
276 -\\
208 +10
277 277  )))|(((
278 -\\
210 +**Threads + Race Conditions** (Problembeschreibung)
279 279  )))|(((
280 -\\
212 +Betriebssysteme sind schon sehr sehr lange in der Lage mehrere Prozesse (quasi-) parallel auszuführen. Anwendungsentwickler:innen kommen häufiger mit Threads in Kontakt, weshalb wir in den Übungen mit Threads arbeiten. Schnell aber kommt treten //Race Conditions (Wettlaufbedingungen)// auf. Die sind oft gar nicht so schnell zu erkennen. Es gibt einen Grund warum //Multithreading// schon eine Herausforderung ist. Wir beschäftigen uns mit Threads, wie wir die programmieren und welche Probleme dabei entstehen können, bis hin zum Deadlock. Wir erfahren was ein kritischer Abschnitt (//critical section//) ist.
281 281  )))|(((
214 +[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]]
215 +
282 282  \\
283 283  )))|(((
284 -\\
218 +Wir versuchen Threads zu synchronisieren.
285 285  )))
286 286  |(((
287 287  11
288 288  )))|(((
289 -\\
223 +**Synchronisation von Prozessen und Threads**
290 290  )))|(((
291 -\\
225 +Nachdem wir uns mit den Herausforderungen gleichzeitig laufender Kontrollflüsse beschäftigten, kommen wir zu Lösungen. Wir reden über Semaphoren, Signale (technisch Interrupts), Mutex.
292 292  )))|(((
293 -\\
227 +[2] 2.3.1 - 2.3.9, 2.4
228 +
229 +[2] 1.5.2, 3
230 +
231 +[[Codebeispiel: Synchronisation>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions||shape="rect"]]
294 294  )))|(((
295 -\\
233 +Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle.
296 296  )))
297 297  |(((
298 298  \\
... ... @@ -312,11 +312,15 @@
312 312  |(((
313 313  12.1
314 314  )))|(((
315 -\\
253 +**Scheduling**
316 316  )))|(((
317 -\\
255 +Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt.
318 318  )))|(((
319 -\\
257 +[1] S.151, 158ff
258 +
259 +[2] S.93-99, 150-166
260 +
261 +[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Scheduling/394e546de01c41a388ac2afc2d9cdd6c||shape="rect"]]
320 320  )))|(((
321 321  \\
322 322  )))
... ... @@ -323,11 +323,15 @@
323 323  |(((
324 324  12.2
325 325  )))|(((
326 -\\
268 +**Deadlocks**
327 327  )))|(((
328 -\\
270 +Wir reden über verhungernde Philosophen etc.
329 329  )))|(((
330 -\\
272 +[1] S. 192ff, 214, 239, 242ff
273 +
274 +[2] S.181, 186ff
275 +
276 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/deadlocks/a74ffe24a122016f66a28e377b4de5ab/334||shape="rect"]]
331 331  )))|(((
332 332  \\
333 333  )))
... ... @@ -469,11 +469,9 @@
469 469  
470 470  {{view-file att--filename="BS_NW_22_1.pdf" display="thumbnail" height="250"/}}{{view-file att--filename="BS_NW_22_2.pdf" display="thumbnail" height="250"/}}{{view-file att--filename="BS_NW_22_23_1.pdf" display="thumbnail" height="250"/}}
471 471  
472 -{{view-file att--filename="BN_23_24_2.pdf" display="thumbnail" height="250"/}}{{view-file att--filename="BN_23_24_1.pdf" display="thumbnail" height="250"/}}
473 -
474 474  {{view-file att--filename="BS_NW_23_1.pdf" display="thumbnail" height="250"/}}
475 475  
476 -\\
420 +{{view-file att--filename="BS_NW_24_1.pdf" display="thumbnail" height="250"/}}
477 477  
478 478  \\
479 479  
... ... @@ -492,15 +492,3 @@
492 492  \\
493 493  
494 494  \\
495 -
496 -\\
497 -
498 -\\
499 -
500 -\\
501 -
502 -\\
503 -
504 -\\
505 -
506 -\\
Confluence.Code.ConfluencePageClass[0]
id
... ... @@ -1,1 +1,1 @@
1 -228589818
1 +217024015
url
... ... @@ -1,1 +1,1 @@
1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/228589818/B23 Betriebssysteme und Netzwerke
1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/217024015/B23 Betriebssysteme und Netzwerke