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

From version 190.1
edited by Thomas Schwotzer
on 2024/03/22 08:59
Change comment: There is no comment for this version
To version 191.1
edited by Thomas Schwotzer
on 2024/03/22 09:18
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -51,6 +51,76 @@
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 +)))|(((
54 54  **Punkt-zu-Punkt Datenübertragung**
55 55  )))|(((
56 56  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.
... ... @@ -66,7 +66,7 @@
66 66  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"]].
67 67  )))
68 68  |(((
69 -2
139 +6
70 70  )))|(((
71 71  **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)**
72 72  )))|(((
... ... @@ -81,7 +81,7 @@
81 81  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.
82 82  )))
83 83  |(((
84 -3
154 +7
85 85  )))|(((
86 86  **Layer 2 (Ethernet)**
87 87  )))|(((
... ... @@ -101,7 +101,7 @@
101 101  )))
102 102  )))
103 103  |(((
104 -4
174 +8
105 105  )))|(((
106 106  **Layer 3 (Internet Protocol)**
107 107  )))|(((
... ... @@ -120,7 +120,7 @@
120 120  \\
121 121  )))
122 122  |(((
123 -5
193 +9
124 124  )))|(((
125 125  **Layer 4 (TCP)**
126 126  )))|(((
... ... @@ -135,6 +135,24 @@
135 135  \\
136 136  )))
137 137  |(((
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 +|(((
138 138  6
139 139  )))|(((
140 140  **Verzeichnisdienste DNS**, LDAP, X.500
... ... @@ -154,16 +154,11 @@
154 154  |(((
155 155  7
156 156  )))|(((
157 -**Betriebssysteme - Einstieg
158 -**
245 +\\
159 159  )))|(((
160 -Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf.
247 +\\
161 161  )))|(((
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"]]
249 +\\
167 167  )))|(((
168 168  \\
169 169  )))
... ... @@ -170,29 +170,14 @@
170 170  |(((
171 171  8
172 172  )))|(((
173 -**Von Programmcode zum laufenden Prozess**
256 +\\
174 174  )))|(((
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.
258 +\\
176 176  )))|(((
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
260 +\\
186 186  )))|(((
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"]]
262 +\\
194 194  )))
195 -)))
196 196  |(((
197 197  9
198 198  )))|(((
... ... @@ -205,32 +205,26 @@
205 205  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.
206 206  )))
207 207  |(((
208 -10
276 +\\
209 209  )))|(((
210 -**Threads + Race Conditions** (Problembeschreibung)
278 +\\
211 211  )))|(((
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.
280 +\\
213 213  )))|(((
214 -[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]]
215 -
216 216  \\
217 217  )))|(((
218 -Wir versuchen Threads zu synchronisieren.
284 +\\
219 219  )))
220 220  |(((
221 221  11
222 222  )))|(((
223 -**Synchronisation von Prozessen und Threads**
289 +\\
224 224  )))|(((
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.
291 +\\
226 226  )))|(((
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"]]
293 +\\
232 232  )))|(((
233 -Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle.
295 +\\
234 234  )))
235 235  |(((
236 236  \\
... ... @@ -250,15 +250,11 @@
250 250  |(((
251 251  12.1
252 252  )))|(((
253 -**Scheduling**
315 +\\
254 254  )))|(((
255 -Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt.
317 +\\
256 256  )))|(((
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"]]
319 +\\
262 262  )))|(((
263 263  \\
264 264  )))
... ... @@ -265,15 +265,11 @@
265 265  |(((
266 266  12.2
267 267  )))|(((
268 -**Deadlocks**
326 +\\
269 269  )))|(((
270 -Wir reden über verhungernde Philosophen etc.
328 +\\
271 271  )))|(((
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"]]
330 +\\
277 277  )))|(((
278 278  \\
279 279  )))
Confluence.Code.ConfluencePageClass[0]
id
... ... @@ -1,1 +1,1 @@
1 -228589816
1 +228589818
url
... ... @@ -1,1 +1,1 @@
1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/228589816/B23 Betriebssysteme und Netzwerke
1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/228589818/B23 Betriebssysteme und Netzwerke