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

From version 201.1
edited by Thomas Schwotzer
on 2024/12/04 10:50
Change comment: There is no comment for this version
To version 189.1
edited by Thomas Schwotzer
on 2024/01/24 09:12
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -6,7 +6,7 @@
6 6  
7 7  Am Ende der Veranstaltung steht eine **Klausur**. Sie werden eine schriftliche Arbeit schreiben.
8 8  
9 -Als** semesterbegleitende Leistung** implementieren Sie ein kleines dezentrales Programm. Die Arbeit daran beginnt in der 1. Übung. Das Programm unterstützt Sie beim Lernen der Konzepte und zeigt umgekehrt, ob Sie sich mit den Themen während des Semesters beschäftigten. Am Ende des Semester sind Sie in der Lage, ein Programm zu schreiben, dass eine TCP-Verbindung zu einem anderen Prozess herstellt und mit diesem wohl definierte PDUs austauscht. Das wird am Ende der Vorlesungszeit in einem kleinen Programmiertest geprüft. **Diesen Test müssen Sie bestehen. Erst dann gibt es Punkte. Es gibt keine Punkte für eine nicht fertige Lösung.** Bestehen Sie den Test nicht, sind Sie auch nicht zur Klausur zugelassen. Der Test wird aus zwei Teilen bestehen. Der erste findet im ersten dritten des Semester statt (zählt 1/3), der letzte Test am Ende der Vorlesungszeit (2/3)
9 +Als** semesterbegleitende Leistung** implementieren Sie ein kleines dezentrales Programm. Die Arbeit daran beginnt in der 1. Übung. Das Programm unterstützt Sie beim Lernen der Konzepte und zeigt umgekehrt, ob Sie sich mit den Themen während des Semesters beschäftigten. Am Ende des Semester sind Sie in der Lage, ein Programm zu schreiben, dass eine TCP-Verbindung zu einem anderen Prozess herstellt und mit diesem wohl definierte PDUs austauscht. Das wird am Ende der Vorlesungszeit in einem kleinen Programmiertest geprüft. **Diesen Test müssen Sie bestehen. Erst dann gibt es Punkte. Es gibt keine Punkte für eine nicht fertige Lösung.** Bestehen Sie den Test nicht, sind Sie auch nicht zur Klausur zugelassen.
10 10  
11 11  Wir sind eine Hochschule für angewandte (!) Wissenschaften. Sie müssen grundlegende Dinge praktisch umsetzen können. Das ist auch gar kein Problem, wenn Sie sich aktiv an den Übungen beteiligen. Wirklich gar kein Problem. Es kann ein ernsthaftes Problem werden, wenn Sie die Übungen ignorieren.
12 12  
... ... @@ -51,78 +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 -(% class="content-wrapper" %)
66 -(((
67 -Wir fangen an mit dem Bau einer verteilten Anwendung. Ein Spiel, ein Chat, mal schauen. Das wird das semesterbegleitende Projekt. Sie müssen immer mit machen, dann lernen Sie sicherlich eine Menge.
68 -)))
69 -)))
70 -|(((
71 -2
72 -)))|(((
73 -**Von Programmcode zum laufenden Prozess**
74 -)))|(((
75 -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.
76 -)))|(((
77 -[2] 1.5.1, 2.1
78 -
79 -[[Assember, Maschinencode, Java und JVM>>url:http://www.sharksystem.net/htw/Prog1/Java.pdf||shape="rect"]]
80 -
81 -[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Vom-Programmcode-zum-laufenden-Prozess/51827ebfe20ed06ba810758d1b71dbef||shape="rect"]]
82 -
83 -[11] start command
84 -
85 -[12] am Ende der Zeile "&" - launch background process
86 -)))|(((
87 -(% class="content-wrapper" %)
88 -(((
89 -\\
90 -
91 -
92 -\\
93 -)))
94 -)))
95 -|(((
96 -3
97 -)))|(((
98 -**Threads + Race Conditions** (Problembeschreibung)
99 -)))|(((
100 -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.
101 -)))|(((
102 -[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]]
103 -
104 -[[LN:Threads mit Java>>url:http://www.sharksystem.net/htw/GMA/LN/Threads_Java_Android.pdf||shape="rect"]]
105 -)))|(((
106 -\\
107 -)))
108 -|(((
109 -4
110 -)))|(((
111 -**Synchronisation von Prozessen und Threads**
112 -)))|(((
113 -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.
114 -)))|(((
115 -[2] 2.3.1 - 2.3.9, 2.4
116 -
117 -[2] 1.5.2, 3
118 -
119 -[[Codebeispiel: Synchronisation>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions||shape="rect"]]
120 -)))|(((
121 -\\
122 -)))
123 -|(((
124 -5
125 -)))|(((
126 126  **Punkt-zu-Punkt Datenübertragung**
127 127  )))|(((
128 128  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.
... ... @@ -133,10 +133,12 @@
133 133  
134 134  [[Mediathek: Fehlerkorrektur und -erkennung>>url:https://mediathek.htw-berlin.de/album/video/Fehlererkennung-behebung-Hamming-Frames-Synchronisation-OSI-Layer-2/9d682f6b9ef2cac57be9795f35a57a29/334||shape="rect"]]
135 135  )))|(((
136 -\\
64 +Sie finde das [[NWAppTemplate>>url:https://github.com/thsc42/NWAppTemplate||shape="rect"]] auf Github. Wir nehmen das als Basis, um in streambasierte Netzwerkprogrammierung einzusteigen. Sie bekommen in der Übung ein Skeleton das wir schrittweise bis zum Ende des Semesters erweitern.
65 +
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"]].
137 137  )))
138 138  |(((
139 -6
69 +2
140 140  )))|(((
141 141  **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)**
142 142  )))|(((
... ... @@ -148,10 +148,10 @@
148 148  
149 149  [[Mediathek:CSMA>>url:https://mediathek.htw-berlin.de/video/Carrier-Sense-Multiple-Access-CSMA/dc16139e4522ef04e708c69ae0000abf||shape="rect"]]
150 150  )))|(((
151 -\\
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.
152 152  )))
153 153  |(((
154 -7
84 +3
155 155  )))|(((
156 156  **Layer 2 (Ethernet)**
157 157  )))|(((
... ... @@ -167,11 +167,11 @@
167 167  )))|(((
168 168  (% class="content-wrapper" %)
169 169  (((
170 -\\
100 +{{view-file att--filename="AdderProtocolEngine.zip" display="thumbnail" height="250"/}}Wir implementieren eine Protokollmaschine. Hier das Beispiel, dass wir in der Vorlesung diskutieren.
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  )))|(((
... ... @@ -200,37 +200,17 @@
200 200  
201 201  [7]
202 202  
203 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/tcp-udp/817fbf28e183c4fcc36a2cf914713285/334||shape="rect"]]
204 -
205 205  [[Mediathek: Layer1-4>>url:https://mediathek.htw-berlin.de/album/video/OSI-Layer-1-4/cfe6541e4a0ecb5092a4ffd650334182/334||shape="rect"]]
206 206  )))|(((
207 207  \\
208 208  )))
209 209  |(((
210 -10
138 +6
211 211  )))|(((
212 -**Scheduling / Deadlocks
213 -**
140 +**Verzeichnisdienste DNS**, LDAP, X.500
214 214  )))|(((
215 -Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt.
216 -
217 -Wir reden über verhungernde Philosophen etc.
142 +Wir diskutieren den Domain Name Service.
218 218  )))|(((
219 -[1] S.151, 158ff + S. 192ff, 214, 239, 242ff
220 -
221 -[2] S.93-99, 150-166 + S.181, 186ff
222 -
223 -[[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"]]
224 -)))|(((
225 -\\
226 -)))
227 -|(((
228 -11
229 -)))|(((
230 -**Verzeichnisdienste**
231 -)))|(((
232 -Wir diskutieren den **Domain Name Service (DNS)**
233 -)))|(((
234 234  [4] S. 690ff
235 235  
236 236  [[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]]
... ... @@ -238,54 +238,91 @@
238 238  [[https:~~/~~/datatracker.ietf.org/doc/html/rfc1035>>url:https://datatracker.ietf.org/doc/html/rfc1035||rel="nofollow" shape="rect" class="external-link"]]
239 239  [[https:~~/~~/de.wikipedia.org/wiki/Nslookup>>url:https://de.wikipedia.org/wiki/Nslookup||rel="nofollow" shape="rect" class="external-link"]]
240 240  [[https:~~/~~/www.denic.de/>>url:https://www.denic.de/||rel="nofollow" shape="rect" class="external-link"]]
241 -
242 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/domain-name-service-dns/c411b9faba8a704eea698beef3254227/334||shape="rect"]]
243 243  )))|(((
244 244  \\
245 245  )))
246 246  |(((
247 -12
155 +7
248 248  )))|(((
249 -**E-Mail
157 +**Betriebssysteme - Einstieg
250 250  **
251 251  )))|(((
252 -Wir schauen uns SMTP und ein wenig POP und IMAP an. Wir werfen aber vor allem auch einen Blick in das Format einer Mail; in dem Kontext entstand nämlich MIME was man dann auch in HTTP nutzte.**
253 -**
160 +Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf.
254 254  )))|(((
255 -[[~[8~]>>url:http://www.sharksystem.net/paper/diplom_schwotzer.pdf||shape="rect"]] 2.2 (POP und IMAP)
162 +[2] 1.1 - 1.4
256 256  
257 -[4] S.708ff
164 +[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]]
258 258  
259 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]]
260 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]]
261 -
262 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/e-mail-pop-imap-smtp-base64-mime/c53f7fe8b966f7dd17068a2add09060c/334||shape="rect"]]
166 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]]
263 263  )))|(((
264 264  \\
265 265  )))
266 266  |(((
267 -13
171 +8
268 268  )))|(((
269 -**HTTP**
173 +**Von Programmcode zum laufenden Prozess**
270 270  )))|(((
271 -HTTP
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.
272 272  )))|(((
273 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/http/2fd5decaa8938d672bd8bcc1f64472b9/334||shape="rect"]]
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
274 274  )))|(((
275 -\\
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"]]
276 276  )))
195 +)))
277 277  |(((
278 -13
197 +9
279 279  )))|(((
280 -**Speichermanagement**
199 +Speichermanagement
281 281  )))|(((
282 282  Wir sprechen über Daten, der Speicherung und Verwaltung in einem laufenden Programm. Und endlich wissen wir was dieser legendäre Stackoverflow ist. Und wir werden sehen, dass wir es mit einer Stackmaschine zu tun haben. Und dann verstehen wir auch, warum wir ITler:innen als ersten Index immer die 0 nehmen und nicht die 1 wie diese eigenartigen anderen Menschen...
283 283  )))|(((
284 284  [[LN:Funktionsstack>>url:http://www.sharksystem.net/htw/Prog1/MethodenUndStack.pdf||shape="rect"]] , [[LN:Rekursion / Stack und Heap>>url:http://www.sharksystem.net/htw/Prog1/RekursionUndStack.pdf||shape="rect"]], [[LN:eindimensionale Arrays>>url:http://www.sharksystem.net/htw/Prog1/EindimensionaleArrays.pdf||shape="rect"]], [[LN:mehrdimensionale Arrays>>url:http://www.sharksystem.net/htw/Prog1/MehrdimensionaleArrays.pdf||shape="rect"]],
285 285  )))|(((
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 +)))
207 +|(((
208 +10
209 +)))|(((
210 +**Threads + Race Conditions** (Problembeschreibung)
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.
213 +)))|(((
214 +[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]]
215 +
286 286  \\
217 +)))|(((
218 +Wir versuchen Threads zu synchronisieren.
287 287  )))
288 288  |(((
221 +11
222 +)))|(((
223 +**Synchronisation von Prozessen und Threads**
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.
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"]]
232 +)))|(((
233 +Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle.
234 +)))
235 +|(((
289 289  \\
290 290  )))|(((
291 291  Inter Process Communications (IPC): Shared Memory
... ... @@ -301,8 +301,38 @@
301 301  \\
302 302  )))
303 303  |(((
251 +12.1
252 +)))|(((
253 +**Scheduling**
254 +)))|(((
255 +Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt.
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"]]
262 +)))|(((
304 304  \\
264 +)))
265 +|(((
266 +12.2
305 305  )))|(((
268 +**Deadlocks**
269 +)))|(((
270 +Wir reden über verhungernde Philosophen etc.
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"]]
277 +)))|(((
278 +\\
279 +)))
280 +|(((
281 +\\
282 +)))|(((
306 306  Dateinsysteme, Speicherverwaltung / Paging / Caching
307 307  )))|(((
308 308  spannend, aber optional
... ... @@ -323,8 +323,37 @@
323 323  \\
324 324  )))
325 325  |(((
303 +13
304 +)))|(((
305 +E-Mail**
306 +**
307 +)))|(((
308 +Wir schauen uns SMTP und ein wenig POP und IMAP an. Wir werfen aber vor allem auch einen Blick in das Format einer Mail; in dem Kontext entstand nämlich MIME was man dann auch in HTTP nutzte.**
309 +**
310 +)))|(((
311 +[[~[8~]>>url:http://www.sharksystem.net/paper/diplom_schwotzer.pdf||shape="rect"]] 2.2 (POP und IMAP)
312 +
313 +[4] S.708ff
314 +
315 +[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]]
316 +[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]]
317 +)))|(((
326 326  \\
319 +)))
320 +|(((
321 +\\
327 327  )))|(((
323 +Einige Protokolle und Formate
324 +)))|(((
325 +HTTP, MQTT.
326 +)))|(((
327 +\\
328 +)))|(((
329 +\\
330 +)))
331 +|(((
332 +\\
333 +)))|(((
328 328  Architekturen
329 329  )))|(((
330 330  monolithisch, zentralisiert, verteilt, wenigstens 3 Arten von P2P, Agenten.
... ... @@ -340,7 +340,7 @@
340 340  \\
341 341  )))
342 342  |(((
343 -\\
349 +13
344 344  )))|(((
345 345  //Grundlagen der Verschlüsselung//
346 346  
... ... @@ -409,11 +409,9 @@
409 409  
410 410  {{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"/}}
411 411  
412 -{{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"/}}
413 -
414 414  {{view-file att--filename="BS_NW_23_1.pdf" display="thumbnail" height="250"/}}
415 415  
416 -\\
420 +{{view-file att--filename="BS_NW_24_1.pdf" display="thumbnail" height="250"/}}
417 417  
418 418  \\
419 419  
... ... @@ -438,9 +438,3 @@
438 438  \\
439 439  
440 440  \\
441 -
442 -\\
443 -
444 -\\
445 -
446 -\\
Confluence.Code.ConfluencePageClass[0]
id
... ... @@ -1,1 +1,1 @@
1 -255199379
1 +228589812
url
... ... @@ -1,1 +1,1 @@
1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/255199379/B23 Betriebssysteme und Netzwerke
1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/228589812/B23 Betriebssysteme und Netzwerke