Changes for page B23 Betriebssysteme und Netzwerke
Last modified by Thomas Schwotzer on 2025/04/09 12:44
From version 189.1
edited by Thomas Schwotzer
on 2024/01/24 09:12
on 2024/01/24 09:12
Change comment:
There is no comment for this version
To version 197.1
edited by Thomas Schwotzer
on 2024/06/14 12:09
on 2024/06/14 12:09
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -51,6 +51,78 @@ 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 +)))|((( 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. ... ... @@ -61,12 +61,10 @@ 61 61 62 62 [[Mediathek: Fehlerkorrektur und -erkennung>>url:https://mediathek.htw-berlin.de/album/video/Fehlererkennung-behebung-Hamming-Frames-Synchronisation-OSI-Layer-2/9d682f6b9ef2cac57be9795f35a57a29/334||shape="rect"]] 63 63 )))|((( 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"]]. 136 +\\ 67 67 ))) 68 68 |((( 69 - 2139 +6 70 70 )))|((( 71 71 **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)** 72 72 )))|((( ... ... @@ -78,10 +78,10 @@ 78 78 79 79 [[Mediathek:CSMA>>url:https://mediathek.htw-berlin.de/video/Carrier-Sense-Multiple-Access-CSMA/dc16139e4522ef04e708c69ae0000abf||shape="rect"]] 80 80 )))|((( 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.151 +\\ 82 82 ))) 83 83 |((( 84 - 3154 +7 85 85 )))|((( 86 86 **Layer 2 (Ethernet)** 87 87 )))|((( ... ... @@ -97,11 +97,11 @@ 97 97 )))|((( 98 98 (% class="content-wrapper" %) 99 99 ((( 100 - {{view-file att--filename="AdderProtocolEngine.zip" display="thumbnail" height="250"/}}Wir implementieren eine Protokollmaschine. Hier das Beispiel, dass wir in der Vorlesung diskutieren.170 +\\ 101 101 ))) 102 102 ))) 103 103 |((( 104 - 4174 +8 105 105 )))|((( 106 106 **Layer 3 (Internet Protocol)** 107 107 )))|((( ... ... @@ -120,7 +120,7 @@ 120 120 \\ 121 121 ))) 122 122 |((( 123 - 5193 +9 124 124 )))|((( 125 125 **Layer 4 (TCP)** 126 126 )))|((( ... ... @@ -135,12 +135,30 @@ 135 135 \\ 136 136 ))) 137 137 |((( 138 - 6208 +10 139 139 )))|((( 140 -**Verzeichnisdienste DNS**, LDAP, X.500 210 +**Scheduling / Deadlocks 211 +** 141 141 )))|((( 142 -Wir diskutieren den Domain Name Service. 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. 143 143 )))|((( 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 +11 227 +)))|((( 228 +**Verzeichnisdienste** 229 +)))|((( 230 +Wir diskutieren den **Domain Name Service (DNS)** 231 +)))|((( 144 144 [4] S. 690ff 145 145 146 146 [[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]] ... ... @@ -152,49 +152,36 @@ 152 152 \\ 153 153 ))) 154 154 |((( 155 - 7243 +12 156 156 )))|((( 157 -** Betriebssysteme -Einstieg245 +**E-Mail 158 158 ** 159 159 )))|((( 160 -Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf. 248 +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.** 249 +** 161 161 )))|((( 162 -[ 2]1.1-1.4251 +[[~[8~]>>url:http://www.sharksystem.net/paper/diplom_schwotzer.pdf||shape="rect"]] 2.2 (POP und IMAP) 163 163 164 -[ [Algorithmenund Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]]253 +[4] S.708ff 165 165 166 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]] 255 +[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]] 256 +[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]] 167 167 )))|((( 168 168 \\ 169 169 ))) 170 170 |((( 171 - 8261 +\\ 172 172 )))|((( 173 - **Von Programmcodezum laufendenProzess**263 +Einige Protokolle und Formate 174 174 )))|((( 175 - EinProgramm 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-CodeMaschinencode? 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.265 +HTTP, MQTT. 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 267 +\\ 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"]] 269 +\\ 194 194 ))) 195 -))) 196 196 |((( 197 - 9272 +\\ 198 198 )))|((( 199 199 Speichermanagement 200 200 )))|((( ... ... @@ -202,37 +202,9 @@ 202 202 )))|((( 203 203 [[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"]], 204 204 )))|((( 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 - 216 216 \\ 217 -)))|((( 218 -Wir versuchen Threads zu synchronisieren. 219 219 ))) 220 220 |((( 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 -|((( 236 236 \\ 237 237 )))|((( 238 238 Inter Process Communications (IPC): Shared Memory ... ... @@ -248,38 +248,8 @@ 248 248 \\ 249 249 ))) 250 250 |((( 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 -)))|((( 263 263 \\ 264 -))) 265 -|((( 266 -12.2 267 267 )))|((( 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 -)))|((( 283 283 Dateinsysteme, Speicherverwaltung / Paging / Caching 284 284 )))|((( 285 285 spannend, aber optional ... ... @@ -300,37 +300,8 @@ 300 300 \\ 301 301 ))) 302 302 |((( 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 -)))|((( 318 318 \\ 319 -))) 320 -|((( 321 -\\ 322 322 )))|((( 323 -Einige Protokolle und Formate 324 -)))|((( 325 -HTTP, MQTT. 326 -)))|((( 327 -\\ 328 -)))|((( 329 -\\ 330 -))) 331 -|((( 332 -\\ 333 -)))|((( 334 334 Architekturen 335 335 )))|((( 336 336 monolithisch, zentralisiert, verteilt, wenigstens 3 Arten von P2P, Agenten. ... ... @@ -346,7 +346,7 @@ 346 346 \\ 347 347 ))) 348 348 |((( 349 - 13337 +\\ 350 350 )))|((( 351 351 //Grundlagen der Verschlüsselung// 352 352 ... ... @@ -415,9 +415,11 @@ 415 415 416 416 {{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"/}} 417 417 406 +{{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"/}} 407 + 418 418 {{view-file att--filename="BS_NW_23_1.pdf" display="thumbnail" height="250"/}} 419 419 420 - {{view-file att--filename="BS_NW_24_1.pdf" display="thumbnail" height="250"/}}410 +\\ 421 421 422 422 \\ 423 423 ... ... @@ -442,3 +442,9 @@ 442 442 \\ 443 443 444 444 \\ 435 + 436 +\\ 437 + 438 +\\ 439 + 440 +\\
- Confluence.Code.ConfluencePageClass[0]
-
- id
-
... ... @@ -1,1 +1,1 @@ 1 -2 285898121 +240486584 - url
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/2 28589812/B23 Betriebssysteme und Netzwerke1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/240486584/B23 Betriebssysteme und Netzwerke