Changes for page B23 Betriebssysteme und Netzwerke
Last modified by Thomas Schwotzer on 2025/04/09 12:44
From version 193.1
edited by Thomas Schwotzer
on 2024/03/22 09:21
on 2024/03/22 09:21
Change comment:
There is no comment for this version
To version 190.1
edited by Thomas Schwotzer
on 2024/03/22 08:59
on 2024/03/22 08:59
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,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 -Wir fangen an mit dem Bau einer verteilten Anwendung. Ein Spiel, ein Chat, mal schauen. 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 - 669 +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 - 784 +3 155 155 )))|((( 156 156 **Layer 2 (Ethernet)** 157 157 )))|((( ... ... @@ -171,7 +171,7 @@ 171 171 ))) 172 172 ))) 173 173 |((( 174 - 8104 +4 175 175 )))|((( 176 176 **Layer 3 (Internet Protocol)** 177 177 )))|((( ... ... @@ -190,7 +190,7 @@ 190 190 \\ 191 191 ))) 192 192 |((( 193 - 9123 +5 194 194 )))|((( 195 195 **Layer 4 (TCP)** 196 196 )))|((( ... ... @@ -205,26 +205,67 @@ 205 205 \\ 206 206 ))) 207 207 |((( 208 - 10138 +6 209 209 )))|((( 210 -**Scheduling / Deadlocks 211 -** 140 +**Verzeichnisdienste DNS**, LDAP, X.500 212 212 )))|((( 213 -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 214 214 215 -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"]] 216 216 )))|((( 217 -[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 218 218 219 -[ 2]S.93-99,150-166 + S.181, 186ff164 +[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]] 220 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"]]166 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]] 222 222 )))|((( 223 223 \\ 224 224 ))) 225 225 |((( 226 - \\171 +8 227 227 )))|((( 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 +)))|((( 228 228 Speichermanagement 229 229 )))|((( 230 230 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... ... ... @@ -234,39 +234,32 @@ 234 234 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. 235 235 ))) 236 236 |((( 237 - \\208 +10 238 238 )))|((( 239 -**E-Mail 240 -** 210 +**Threads + Race Conditions** (Problembeschreibung) 241 241 )))|((( 242 -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.** 243 -** 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. 244 244 )))|((( 245 -[[ ~[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"]] 246 246 247 -[4] S.708ff 248 - 249 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]] 250 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]] 251 -)))|((( 252 252 \\ 217 +)))|((( 218 +Wir versuchen Threads zu synchronisieren. 253 253 ))) 254 254 |((( 255 - \\221 +11 256 256 )))|((( 257 - VerzeichnisdiensteDNS,LDAP,X.500223 +**Synchronisation von Prozessen und Threads** 258 258 )))|((( 259 - 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. 260 260 )))|((( 261 -[ 4]S.690ff227 +[2] 2.3.1 - 2.3.9, 2.4 262 262 263 -[[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]] 264 -[[https:~~/~~/www.iana.org/>>url:https://www.iana.org/||rel="nofollow" shape="rect" class="external-link"]] 265 -[[https:~~/~~/datatracker.ietf.org/doc/html/rfc1035>>url:https://datatracker.ietf.org/doc/html/rfc1035||rel="nofollow" shape="rect" class="external-link"]] 266 -[[https:~~/~~/de.wikipedia.org/wiki/Nslookup>>url:https://de.wikipedia.org/wiki/Nslookup||rel="nofollow" shape="rect" class="external-link"]] 267 -[[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"]] 268 268 )))|((( 269 - \\233 +Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle. 270 270 ))) 271 271 |((( 272 272 \\ ... ... @@ -284,8 +284,38 @@ 284 284 \\ 285 285 ))) 286 286 |((( 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 +)))|((( 287 287 \\ 264 +))) 265 +|((( 266 +12.2 288 288 )))|((( 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 +)))|((( 289 289 Dateinsysteme, Speicherverwaltung / Paging / Caching 290 290 )))|((( 291 291 spannend, aber optional ... ... @@ -306,7 +306,25 @@ 306 306 \\ 307 307 ))) 308 308 |((( 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 +)))|((( 309 309 \\ 319 +))) 320 +|((( 321 +\\ 310 310 )))|((( 311 311 Einige Protokolle und Formate 312 312 )))|((( ... ... @@ -334,7 +334,7 @@ 334 334 \\ 335 335 ))) 336 336 |((( 337 - \\349 +13 338 338 )))|((( 339 339 //Grundlagen der Verschlüsselung// 340 340
- Confluence.Code.ConfluencePageClass[0]
-
- id
-
... ... @@ -1,1 +1,1 @@ 1 -2285898 251 +228589816 - url
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/2285898 25/B23 Betriebssysteme und Netzwerke1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/228589816/B23 Betriebssysteme und Netzwerke