Changes for page B23 Betriebssysteme und Netzwerke
Last modified by Thomas Schwotzer on 2025/04/09 12:44
From version 195.1
edited by Thomas Schwotzer
on 2024/04/18 13:50
on 2024/04/18 13:50
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,80 +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 -{{view-file att--filename="CLISkeletonWithConnection.zip" display="thumbnail" height="250"/}} 70 -))) 71 -))) 72 -|((( 73 -2 74 -)))|((( 75 -**Von Programmcode zum laufenden Prozess** 76 -)))|((( 77 -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. 78 -)))|((( 79 -[2] 1.5.1, 2.1 80 - 81 -[[Assember, Maschinencode, Java und JVM>>url:http://www.sharksystem.net/htw/Prog1/Java.pdf||shape="rect"]] 82 - 83 -[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Vom-Programmcode-zum-laufenden-Prozess/51827ebfe20ed06ba810758d1b71dbef||shape="rect"]] 84 - 85 -[11] start command 86 - 87 -[12] am Ende der Zeile "&" - launch background process 88 -)))|((( 89 -(% class="content-wrapper" %) 90 -((( 91 -\\ 92 - 93 - 94 -\\ 95 -))) 96 -))) 97 -|((( 98 -3 99 -)))|((( 100 -**Threads + Race Conditions** (Problembeschreibung) 101 -)))|((( 102 -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. 103 -)))|((( 104 -[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]] 105 - 106 -[[LN:Threads mit Java>>url:http://www.sharksystem.net/htw/GMA/LN/Threads_Java_Android.pdf||shape="rect"]] 107 -)))|((( 108 -\\ 109 -))) 110 -|((( 111 -4 112 -)))|((( 113 -**Synchronisation von Prozessen und Threads** 114 -)))|((( 115 -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. 116 -)))|((( 117 -[2] 2.3.1 - 2.3.9, 2.4 118 - 119 -[2] 1.5.2, 3 120 - 121 -[[Codebeispiel: Synchronisation>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions||shape="rect"]] 122 -)))|((( 123 -\\ 124 -))) 125 -|((( 126 -5 127 -)))|((( 128 128 **Punkt-zu-Punkt Datenübertragung** 129 129 )))|((( 130 130 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. ... ... @@ -135,10 +135,12 @@ 135 135 136 136 [[Mediathek: Fehlerkorrektur und -erkennung>>url:https://mediathek.htw-berlin.de/album/video/Fehlererkennung-behebung-Hamming-Frames-Synchronisation-OSI-Layer-2/9d682f6b9ef2cac57be9795f35a57a29/334||shape="rect"]] 137 137 )))|((( 138 -\\ 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"]]. 139 139 ))) 140 140 |((( 141 - 669 +2 142 142 )))|((( 143 143 **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)** 144 144 )))|((( ... ... @@ -150,10 +150,10 @@ 150 150 151 151 [[Mediathek:CSMA>>url:https://mediathek.htw-berlin.de/video/Carrier-Sense-Multiple-Access-CSMA/dc16139e4522ef04e708c69ae0000abf||shape="rect"]] 152 152 )))|((( 153 - \\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. 154 154 ))) 155 155 |((( 156 - 784 +3 157 157 )))|((( 158 158 **Layer 2 (Ethernet)** 159 159 )))|((( ... ... @@ -169,11 +169,11 @@ 169 169 )))|((( 170 170 (% class="content-wrapper" %) 171 171 ((( 172 - \\100 +{{view-file att--filename="AdderProtocolEngine.zip" display="thumbnail" height="250"/}}Wir implementieren eine Protokollmaschine. Hier das Beispiel, dass wir in der Vorlesung diskutieren. 173 173 ))) 174 174 ))) 175 175 |((( 176 - 8104 +4 177 177 )))|((( 178 178 **Layer 3 (Internet Protocol)** 179 179 )))|((( ... ... @@ -192,7 +192,7 @@ 192 192 \\ 193 193 ))) 194 194 |((( 195 - 9123 +5 196 196 )))|((( 197 197 **Layer 4 (TCP)** 198 198 )))|((( ... ... @@ -207,26 +207,67 @@ 207 207 \\ 208 208 ))) 209 209 |((( 210 - 10138 +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. 142 +Wir diskutieren den Domain Name Service. 143 +)))|((( 144 +[4] S. 690ff 216 216 217 -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"]] 218 218 )))|((( 219 -[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 220 220 221 -[ 2]S.93-99,150-166 + S.181, 186ff164 +[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]] 222 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"]]166 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]] 224 224 )))|((( 225 225 \\ 226 226 ))) 227 227 |((( 228 - \\171 +8 229 229 )))|((( 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 +)))|((( 230 230 Speichermanagement 231 231 )))|((( 232 232 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... ... ... @@ -233,42 +233,35 @@ 233 233 )))|((( 234 234 [[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"]], 235 235 )))|((( 236 - \\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. 237 237 ))) 238 238 |((( 239 - \\208 +10 240 240 )))|((( 241 -**E-Mail 242 -** 210 +**Threads + Race Conditions** (Problembeschreibung) 243 243 )))|((( 244 -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.** 245 -** 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. 246 246 )))|((( 247 -[[ ~[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"]] 248 248 249 -[4] S.708ff 250 - 251 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]] 252 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]] 253 -)))|((( 254 254 \\ 217 +)))|((( 218 +Wir versuchen Threads zu synchronisieren. 255 255 ))) 256 256 |((( 257 - \\221 +11 258 258 )))|((( 259 - VerzeichnisdiensteDNS,LDAP,X.500223 +**Synchronisation von Prozessen und Threads** 260 260 )))|((( 261 - 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. 262 262 )))|((( 263 -[ 4]S.690ff227 +[2] 2.3.1 - 2.3.9, 2.4 264 264 265 -[[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]] 266 -[[https:~~/~~/www.iana.org/>>url:https://www.iana.org/||rel="nofollow" shape="rect" class="external-link"]] 267 -[[https:~~/~~/datatracker.ietf.org/doc/html/rfc1035>>url:https://datatracker.ietf.org/doc/html/rfc1035||rel="nofollow" shape="rect" class="external-link"]] 268 -[[https:~~/~~/de.wikipedia.org/wiki/Nslookup>>url:https://de.wikipedia.org/wiki/Nslookup||rel="nofollow" shape="rect" class="external-link"]] 269 -[[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"]] 270 270 )))|((( 271 - \\233 +Wir diskutieren das Lese-Schreibe-Problem und den schlafenden Friseur, siehe Moodle. 272 272 ))) 273 273 |((( 274 274 \\ ... ... @@ -286,8 +286,38 @@ 286 286 \\ 287 287 ))) 288 288 |((( 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 +)))|((( 289 289 \\ 264 +))) 265 +|((( 266 +12.2 290 290 )))|((( 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 +)))|((( 291 291 Dateinsysteme, Speicherverwaltung / Paging / Caching 292 292 )))|((( 293 293 spannend, aber optional ... ... @@ -308,7 +308,25 @@ 308 308 \\ 309 309 ))) 310 310 |((( 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 +)))|((( 311 311 \\ 319 +))) 320 +|((( 321 +\\ 312 312 )))|((( 313 313 Einige Protokolle und Formate 314 314 )))|((( ... ... @@ -336,7 +336,7 @@ 336 336 \\ 337 337 ))) 338 338 |((( 339 - \\349 +13 340 340 )))|((( 341 341 //Grundlagen der Verschlüsselung// 342 342
- Confluence.Code.ConfluencePageClass[0]
-
- id
-
... ... @@ -1,1 +1,1 @@ 1 -2 327840591 +228589816 - url
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/2 32784059/B23 Betriebssysteme und Netzwerke1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/228589816/B23 Betriebssysteme und Netzwerke