Changes for page B23 Betriebssysteme und Netzwerke
Last modified by Thomas Schwotzer on 2025/04/09 12:44
From version 194.1
edited by Thomas Schwotzer
on 2024/03/22 10:16
on 2024/03/22 10:16
Change comment:
There is no comment for this version
To version 188.1
edited by Thomas Schwotzer
on 2024/01/24 09:11
on 2024/01/24 09:11
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,75 +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 -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. 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 -\\ 87 - 88 - 89 -\\ 90 -))) 91 -))) 92 -|((( 93 -3 94 -)))|((( 95 -**Threads + Race Conditions** (Problembeschreibung) 96 -)))|((( 97 -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. 98 -)))|((( 99 -[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]] 100 - 101 -[[LN:Threads mit Java>>url:http://www.sharksystem.net/htw/GMA/LN/Threads_Java_Android.pdf||shape="rect"]] 102 -)))|((( 103 -\\ 104 -))) 105 -|((( 106 -4 107 -)))|((( 108 -**Synchronisation von Prozessen und Threads** 109 -)))|((( 110 -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. 111 -)))|((( 112 -[2] 2.3.1 - 2.3.9, 2.4 113 - 114 -[2] 1.5.2, 3 115 - 116 -[[Codebeispiel: Synchronisation>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions||shape="rect"]] 117 -)))|((( 118 -\\ 119 -))) 120 -|((( 121 -5 122 -)))|((( 123 123 **Punkt-zu-Punkt Datenübertragung** 124 124 )))|((( 125 125 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. ... ... @@ -130,10 +130,12 @@ 130 130 131 131 [[Mediathek: Fehlerkorrektur und -erkennung>>url:https://mediathek.htw-berlin.de/album/video/Fehlererkennung-behebung-Hamming-Frames-Synchronisation-OSI-Layer-2/9d682f6b9ef2cac57be9795f35a57a29/334||shape="rect"]] 132 132 )))|((( 133 -\\ 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"]]. 134 134 ))) 135 135 |((( 136 - 669 +2 137 137 )))|((( 138 138 **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)** 139 139 )))|((( ... ... @@ -145,10 +145,10 @@ 145 145 146 146 [[Mediathek:CSMA>>url:https://mediathek.htw-berlin.de/video/Carrier-Sense-Multiple-Access-CSMA/dc16139e4522ef04e708c69ae0000abf||shape="rect"]] 147 147 )))|((( 148 - \\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. 149 149 ))) 150 150 |((( 151 - 784 +3 152 152 )))|((( 153 153 **Layer 2 (Ethernet)** 154 154 )))|((( ... ... @@ -164,11 +164,11 @@ 164 164 )))|((( 165 165 (% class="content-wrapper" %) 166 166 ((( 167 - \\100 +{{view-file att--filename="AdderProtocolEngine.zip" display="thumbnail" height="250"/}}Wir implementieren eine Protokollmaschine. Hier das Beispiel, dass wir in der Vorlesung diskutieren. 168 168 ))) 169 169 ))) 170 170 |((( 171 - 8104 +4 172 172 )))|((( 173 173 **Layer 3 (Internet Protocol)** 174 174 )))|((( ... ... @@ -187,7 +187,7 @@ 187 187 \\ 188 188 ))) 189 189 |((( 190 - 9123 +5 191 191 )))|((( 192 192 **Layer 4 (TCP)** 193 193 )))|((( ... ... @@ -202,26 +202,67 @@ 202 202 \\ 203 203 ))) 204 204 |((( 205 - 10138 +6 206 206 )))|((( 207 -**Scheduling / Deadlocks 208 -** 140 +**Verzeichnisdienste DNS**, LDAP, X.500 209 209 )))|((( 210 -Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt. 142 +Wir diskutieren den Domain Name Service. 143 +)))|((( 144 +[4] S. 690ff 211 211 212 -Wir reden über verhungernde Philosophen etc. 146 +[[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]] 147 +[[https:~~/~~/www.iana.org/>>url:https://www.iana.org/||rel="nofollow" shape="rect" class="external-link"]] 148 +[[https:~~/~~/datatracker.ietf.org/doc/html/rfc1035>>url:https://datatracker.ietf.org/doc/html/rfc1035||rel="nofollow" shape="rect" class="external-link"]] 149 +[[https:~~/~~/de.wikipedia.org/wiki/Nslookup>>url:https://de.wikipedia.org/wiki/Nslookup||rel="nofollow" shape="rect" class="external-link"]] 150 +[[https:~~/~~/www.denic.de/>>url:https://www.denic.de/||rel="nofollow" shape="rect" class="external-link"]] 213 213 )))|((( 214 -[1] S.151, 158ff + S. 192ff, 214, 239, 242ff 152 +\\ 153 +))) 154 +|((( 155 +7 156 +)))|((( 157 +**Betriebssysteme - Einstieg 158 +** 159 +)))|((( 160 +Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf. 161 +)))|((( 162 +[2] 1.1 - 1.4 215 215 216 -[ 2]S.93-99,150-166 + S.181, 186ff164 +[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]] 217 217 218 -[[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"]]166 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]] 219 219 )))|((( 220 220 \\ 221 221 ))) 222 222 |((( 223 - \\171 +8 224 224 )))|((( 173 +**Von Programmcode zum laufenden Prozess** 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. 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 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"]] 194 +))) 195 +))) 196 +|((( 197 +9 198 +)))|((( 225 225 Speichermanagement 226 226 )))|((( 227 227 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... ... ... @@ -228,42 +228,35 @@ 228 228 )))|((( 229 229 [[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"]], 230 230 )))|((( 231 - \\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. 232 232 ))) 233 233 |((( 234 - \\208 +10 235 235 )))|((( 236 -**E-Mail 237 -** 210 +**Threads + Race Conditions** (Problembeschreibung) 238 238 )))|((( 239 -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.** 240 -** 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. 241 241 )))|((( 242 -[[ ~[8~]>>url:http://www.sharksystem.net/paper/diplom_schwotzer.pdf||shape="rect"]]2.2 (POP und IMAP)214 +[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]] 243 243 244 -[4] S.708ff 245 - 246 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]] 247 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]] 248 -)))|((( 249 249 \\ 217 +)))|((( 218 +Wir versuchen Threads zu synchronisieren. 250 250 ))) 251 251 |((( 252 - \\221 +11 253 253 )))|((( 254 - VerzeichnisdiensteDNS,LDAP,X.500223 +**Synchronisation von Prozessen und Threads** 255 255 )))|((( 256 - WirdiskutierendenDomainName Service.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. 257 257 )))|((( 258 -[ 4]S.690ff227 +[2] 2.3.1 - 2.3.9, 2.4 259 259 260 -[[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]] 261 -[[https:~~/~~/www.iana.org/>>url:https://www.iana.org/||rel="nofollow" shape="rect" class="external-link"]] 262 -[[https:~~/~~/datatracker.ietf.org/doc/html/rfc1035>>url:https://datatracker.ietf.org/doc/html/rfc1035||rel="nofollow" shape="rect" class="external-link"]] 263 -[[https:~~/~~/de.wikipedia.org/wiki/Nslookup>>url:https://de.wikipedia.org/wiki/Nslookup||rel="nofollow" shape="rect" class="external-link"]] 264 -[[https:~~/~~/www.denic.de/>>url:https://www.denic.de/||rel="nofollow" shape="rect" class="external-link"]] 229 +[2] 1.5.2, 3 230 + 231 +[[Codebeispiel: Synchronisation>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions||shape="rect"]] 265 265 )))|((( 266 - \\233 +Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle. 267 267 ))) 268 268 |((( 269 269 \\ ... ... @@ -281,8 +281,38 @@ 281 281 \\ 282 282 ))) 283 283 |((( 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 +)))|((( 284 284 \\ 264 +))) 265 +|((( 266 +12.2 285 285 )))|((( 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 +)))|((( 286 286 Dateinsysteme, Speicherverwaltung / Paging / Caching 287 287 )))|((( 288 288 spannend, aber optional ... ... @@ -303,7 +303,25 @@ 303 303 \\ 304 304 ))) 305 305 |((( 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 +)))|((( 306 306 \\ 319 +))) 320 +|((( 321 +\\ 307 307 )))|((( 308 308 Einige Protokolle und Formate 309 309 )))|((( ... ... @@ -331,7 +331,7 @@ 331 331 \\ 332 332 ))) 333 333 |((( 334 - \\349 +13 335 335 )))|((( 336 336 //Grundlagen der Verschlüsselung// 337 337 ... ... @@ -400,11 +400,9 @@ 400 400 401 401 {{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"/}} 402 402 403 -{{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"/}} 404 - 405 405 {{view-file att--filename="BS_NW_23_1.pdf" display="thumbnail" height="250"/}} 406 406 407 - \\420 +{{view-file att--filename="BS_NW_24_1.pdf" display="thumbnail" height="250"/}} 408 408 409 409 \\ 410 410 ... ... @@ -423,15 +423,3 @@ 423 423 \\ 424 424 425 425 \\ 426 - 427 -\\ 428 - 429 -\\ 430 - 431 -\\ 432 - 433 -\\ 434 - 435 -\\ 436 - 437 -\\
- Confluence.Code.ConfluencePageClass[0]
-
- id
-
... ... @@ -1,1 +1,1 @@ 1 -2 321941211 +217024015 - url
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/2 32194121/B23 Betriebssysteme und Netzwerke1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/217024015/B23 Betriebssysteme und Netzwerke