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

From version 203.5
edited by Thomas Schwotzer
on 2025/04/09 12:39
Change comment: There is no comment for this version
To version 185.1
edited by Thomas Schwotzer
on 2023/12/21 14:21
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,18 +1,19 @@
1 1  Es ist enorm hilfreich, wenn Sie zuvor die Veranstaltung [[Praktische Grundlagen der Informatik>>url:http://christianherta.de/lehre/praktischeInformatik/praktischeInformatik.php||shape="rect"]] erfolgreich abschlossen. Ich gehe davon aus, dass Sie mit einen Rechner auch auf der Shell-Ebene arbeiten können.
2 2  
3 -Betriebssysteme und Netzwerke werden in vielen Studiengängen in zwei getrennten Kursen gegeben. Dabei wurden die Betriebssysteme, mit denen wir arbeiten sehr stark von den Netzwerken beeinflusst. Den ersten [[drahtlosen Telegrafen entwickelte Gauss bereits 1833>>url:https://de.wikipedia.org/wiki/Carl_Friedrich_Gau%C3%9F#Magnetismus,_Elektrizit%C3%A4t_und_Telegrafie||shape="rect"]]. In der Zeit diskutierte und entwickelte man auch Programmiersprachen. Die Grundlagen unserer Betriebssysteme wurden aber 1940er Jahren gelegt. Multitaskingsysteme waren zwingend notwendig, um gleichzeitig Netzwerkverkehr und Eingaben von Menschen zu bearbeiten.
3 +Betriebssysteme und Netzwerke werden in vielen Studiengängen in zwei getrennten Kursen gegeben. Dabei wurden die Betriebssysteme, mit denen wir arbeiten sehr stark von den Netzwerken beeinflusst. Den ersten [[drahtlosen Telegrafen entwickelte Gauss bereits 1833>>url:https://de.wikipedia.org/wiki/Carl_Friedrich_Gau%C3%9F#Magnetismus,_Elektrizit%C3%A4t_und_Telegrafie||shape="rect"]]. In der Zeit diskutierte und entwickelte man auch Programmiersprachen. Die Grundlagen unserer Betriebssysteme wurden aber 1940er Jahren gelegt. Multitaskingsysteme waren zwingend notwendig, um gleichzeitig Netzwerkverkehr und Eingaben von Menschen zu bearbeiten. Wir folgen in diesem Kurs daher auch dieser Historie, fangen mit Netzwerken an und beschäftigen uns dann mit Betriebssystemen, wenn wir merken, dass single-threaded nicht ausreicht für das was wir tun wollen.
4 4  
5 5  == {{id name="B23BetriebssystemeundNetzwerke-Prüfungsleistungen"/}}Prüfungsleistungen ==
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. Ihre Fortschritte in der Übung werden durch einen Programmiertest geprüft werden. Diese Test wird aus mehrere Teilen (also wenigstens zwei) bestehen. Diese Teile werden jeweils einzeln bewertet und am Ende des Semester zusammen gefasst. Details gibt es am Semesteranfang.
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 Punkter 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  
13 13  Es gilt:
14 14  
15 -* Sobald Sie den ersten Test
15 +* Haben Sie den Test nicht bestanden, bekommen keine Prozentpunkte und sind //nicht// zur Klausur zugelassen.
16 +* Haben Sie den Test bestanden, haben Sie wenigstens einen Punkt und sind zur Klausur zugelassen.
16 16  * Die Tests unterscheiden sich je Semester. Möglicherweise werden weitere Kriterien zur Bewertung genutzt wie z.B. Einhaltung von Regeln für gutes Programmieren, die Dauer, die zum Implementieren benötigt wurde o.ä. Erfüllen Sie alle Kriterien perfekt, erhalten Sie 100 Prozentpunkte.
17 17  
18 18  Die Klausur in diesem Modul erfolgt schriftlich ohne weitere Hilfsmittel. Für die Klausur werden Punkte vergegen. Erreichen Sie alle Punkte in der Klausur haben Sie damit 100% erreicht, haben Sie keine Punkte entsprechend 0%. Meisten liegen die Ergebnisse dazwischen.
... ... @@ -35,7 +35,7 @@
35 35  
36 36  [[Einige Foliensätze habe ich kommentiert auch in die Mediathek gestellt>>url:https://mediathek.htw-berlin.de/album/view/aid/334||shape="rect"]].
37 37  
38 -(% class="relative-table wrapped" style="width:100.0%" %)
39 +(% class="wrapped relative-table" style="width: 100.0%;" %)
39 39  |=(((
40 40  #
41 41  )))|=(((
... ... @@ -50,77 +50,6 @@
50 50  |(((
51 51  1
52 52  )))|(((
53 -**Betriebssysteme - Einstieg**
54 -)))|(((
55 -Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf.
56 -)))|(((
57 -[2] 1.1 - 1.4
58 -
59 -[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]]
60 -
61 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]]
62 -)))|(((
63 -(% class="content-wrapper" %)
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 -|(((
69 -2
70 -)))|(((
71 -**Von Programmcode zum laufenden Prozess**
72 -)))|(((
73 -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.
74 -)))|(((
75 -[2] 1.5.1, 2.1
76 -
77 -[[Assember, Maschinencode, Java und JVM>>url:http://www.sharksystem.net/htw/Prog1/Java.pdf||shape="rect"]]
78 -
79 -[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Vom-Programmcode-zum-laufenden-Prozess/51827ebfe20ed06ba810758d1b71dbef||shape="rect"]]
80 -
81 -[11] start command
82 -
83 -[12] am Ende der Zeile "&" - launch background process
84 -)))|(((
85 -(% class="content-wrapper" %)
86 -(((
87 -
88 -
89 -
90 -
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 -[[LN:Threads mit Java>>url:http://www.sharksystem.net/htw/GMA/LN/Threads_Java_Android.pdf||shape="rect"]]
103 -)))|(((
104 -
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 -
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.
... ... @@ -131,10 +131,12 @@
131 131  
132 132  [[Mediathek: Fehlerkorrektur und -erkennung>>url:https://mediathek.htw-berlin.de/album/video/Fehlererkennung-behebung-Hamming-Frames-Synchronisation-OSI-Layer-2/9d682f6b9ef2cac57be9795f35a57a29/334||shape="rect"]]
133 133  )))|(((
134 -
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"]].
135 135  )))
136 136  |(((
137 -6
69 +2
138 138  )))|(((
139 139  **Layer 2 (Medienzugriff, Fehlererkennung / - korrektur)**
140 140  )))|(((
... ... @@ -146,10 +146,10 @@
146 146  
147 147  [[Mediathek:CSMA>>url:https://mediathek.htw-berlin.de/video/Carrier-Sense-Multiple-Access-CSMA/dc16139e4522ef04e708c69ae0000abf||shape="rect"]]
148 148  )))|(((
149 -
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.
150 150  )))
151 151  |(((
152 -7
84 +3
153 153  )))|(((
154 154  **Layer 2 (Ethernet)**
155 155  )))|(((
... ... @@ -165,11 +165,11 @@
165 165  )))|(((
166 166  (% class="content-wrapper" %)
167 167  (((
168 -
100 +{{view-file att--filename="AdderProtocolEngine.zip" display="thumbnail" height="250"/}}Wir implementieren eine Protokollmaschine. Hier das Beispiel, dass wir in der Vorlesung diskutieren.
169 169  )))
170 170  )))
171 171  |(((
172 -8
104 +4
173 173  )))|(((
174 174  **Layer 3 (Internet Protocol)**
175 175  )))|(((
... ... @@ -185,10 +185,10 @@
185 185  
186 186  [[Mediathek:IP>>url:https://mediathek.htw-berlin.de/album/video/Internet-Protocol-IP/dccfad000b93bacfe0d4563f583a42c5/334||shape="rect"]]
187 187  )))|(((
188 -
120 +\\
189 189  )))
190 190  |(((
191 -9
123 +5
192 192  )))|(((
193 193  **Layer 4 (TCP)**
194 194  )))|(((
... ... @@ -198,93 +198,111 @@
198 198  
199 199  [7]
200 200  
201 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/tcp-udp/817fbf28e183c4fcc36a2cf914713285/334||shape="rect"]]
202 -
203 203  [[Mediathek: Layer1-4>>url:https://mediathek.htw-berlin.de/album/video/OSI-Layer-1-4/cfe6541e4a0ecb5092a4ffd650334182/334||shape="rect"]]
204 204  )))|(((
205 -
135 +\\
206 206  )))
207 207  |(((
208 -10
138 +6
209 209  )))|(((
210 -**Scheduling / Deadlocks**
140 +**Verzeichnisdienste DNS**, LDAP, X.500
211 211  )))|(((
212 -Scheduler. Vielleicht kommen wir soweit und Sie wissen, was sich hinter dem Kommando shell Kommando //nice// auf verbirgt.
213 -
214 -Wir reden über verhungernde Philosophen etc.
142 +Wir diskutieren den Domain Name Service.
215 215  )))|(((
216 -[1] S.151, 158ff + S. 192ff, 214, 239, 242ff
144 +[4] S. 690ff
217 217  
218 -[2] S.93-99, 150-166 + S.181, 186ff
219 -
220 -[[Mediathek:Scheduling>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Scheduling/394e546de01c41a388ac2afc2d9cdd6c||shape="rect"]]
221 -
222 -[[Mediathek:Deadlocks>>url:https://mediathek.htw-berlin.de/album/video/deadlocks/a74ffe24a122016f66a28e377b4de5ab/334||shape="rect"]]
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"]]
223 223  )))|(((
224 -
152 +\\
225 225  )))
226 226  |(((
227 -11
155 +7
228 228  )))|(((
229 -**Verzeichnisdienste**
157 +**Betriebssysteme - Einstieg
158 +**
230 230  )))|(((
231 -Wir diskutieren den **Domain Name Service (DNS)**
160 +Betriebssysteme - wozu dient alle das und wer hats erfunden. Wir beginnen mit der Keilschrift und hören bei UNIX auf.
232 232  )))|(((
233 -[4] S. 690ff
162 +[2] 1.1 - 1.4
234 234  
235 -[[https:~~/~~/www.icann.org/>>url:https://www.icann.org/||shape="rect"]]
236 -[[https:~~/~~/www.iana.org/>>url:https://www.iana.org/||rel="nofollow" shape="rect" class="external-link"]]
237 -[[https:~~/~~/datatracker.ietf.org/doc/html/rfc1035>>url:https://datatracker.ietf.org/doc/html/rfc1035||rel="nofollow" shape="rect" class="external-link"]]
238 -[[https:~~/~~/de.wikipedia.org/wiki/Nslookup>>url:https://de.wikipedia.org/wiki/Nslookup||rel="nofollow" shape="rect" class="external-link"]]
239 -[[https:~~/~~/www.denic.de/>>url:https://www.denic.de/||rel="nofollow" shape="rect" class="external-link"]]
164 +[[Algorithmen und Genies>>url:http://www.sharksystem.net/htw/Prog1/ImperativesProgrammierenVonNeumann.pdf||shape="rect"]]
240 240  
241 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/domain-name-service-dns/c411b9faba8a704eea698beef3254227/334||shape="rect"]]
166 +[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/Betriebssysteme-und-Netzwerke-Einstieg-Betriebssysteme/1cc396fd6ac3354b598b93915297a83a/334||shape="rect"]]
242 242  )))|(((
243 -
168 +\\
244 244  )))
245 245  |(((
246 -12
171 +8
247 247  )))|(((
248 -**E-Mail**
173 +**Von Programmcode zum laufenden Prozess**
249 249  )))|(((
250 -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.
175 +Ein Programm ist laufender Maschinecode. Den nnen wir im Prinzip direkt implementieren. Das ist nur enorm zeitaufwendig. Wir 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.
251 251  )))|(((
252 -[[~[8~]>>url:http://www.sharksystem.net/paper/diplom_schwotzer.pdf||shape="rect"]] 2.2 (POP und IMAP)
177 +[2] 1.5.1, 2.1
253 253  
254 -[4] S.708ff
179 +[[Assember, Maschinencode, Java und JVM>>url:http://www.sharksystem.net/htw/Prog1/Java.pdf||shape="rect"]]
255 255  
256 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5322>>url:https://www.rfc-editor.org/rfc/rfc5322#page-8||shape="rect"]]
257 -[[https:~~/~~/www.rfc-editor.org/rfc/rfc5321.html>>url:https://www.rfc-editor.org/rfc/rfc5321.html#page-10||shape="rect"]]
181 +[[Mediathek>>url:https://mediathek.htw-berlin.de/video/Betriebssysteme-und-Netzwerke-Vom-Programmcode-zum-laufenden-Prozess/51827ebfe20ed06ba810758d1b71dbef||shape="rect"]]
258 258  
259 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/e-mail-pop-imap-smtp-base64-mime/c53f7fe8b966f7dd17068a2add09060c/334||shape="rect"]]
183 +[11] start command
184 +
185 +[12] am Ende der Zeile "&" - launch background process
260 260  )))|(((
261 -
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"]]
262 262  )))
195 +)))
263 263  |(((
264 -13
197 +9
265 265  )))|(((
266 -**HTTP**
199 +Speichermanagement
267 267  )))|(((
268 -HTTP
201 +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...
269 269  )))|(((
270 -[[Mediathek>>url:https://mediathek.htw-berlin.de/album/video/http/2fd5decaa8938d672bd8bcc1f64472b9/334||shape="rect"]]
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"]],
271 271  )))|(((
272 -
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.
273 273  )))
274 274  |(((
275 -13
208 +10
276 276  )))|(((
277 -**Speichermanagement**
210 +**Threads + Race Conditions** (Problembeschreibung)
278 278  )))|(((
279 -Wir sprechen über Daten, der Speicherung und Verwaltung in einem laufenden Programm. Und endlich wissen wir was dieser legenre 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...
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.
280 280  )))|(((
281 -[[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"]],
214 +[[Codebeispiel: Account Example (bad)>>url:https://github.com/thsc42/OperatingSystems/tree/master/src/raceConditions/accountExample/bad||shape="rect"]]
215 +
216 +\\
282 282  )))|(((
283 -
218 +Wir versuchen Threads zu synchronisieren.
284 284  )))
285 285  |(((
286 -
221 +11
287 287  )))|(((
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 +\\
237 +)))|(((
288 288  Inter Process Communications (IPC): Shared Memory
289 289  
290 290  (optional)
... ... @@ -293,13 +293,43 @@
293 293  )))|(((
294 294  [2] 2.3
295 295  
296 -
246 +\\
297 297  )))|(((
298 -
248 +\\
299 299  )))
300 300  |(((
301 -
251 +12.1
302 302  )))|(((
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 +\\
264 +)))
265 +|(((
266 +12.2
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 +)))|(((
303 303  Dateinsysteme, Speicherverwaltung / Paging / Caching
304 304  )))|(((
305 305  spannend, aber optional
... ... @@ -306,22 +306,51 @@
306 306  )))|(((
307 307  [2] 6
308 308  )))|(((
309 -
289 +\\
310 310  )))
311 311  |(((
312 -
292 +\\
313 313  )))|(((
314 314  Virtualisierung
315 315  )))|(((
316 316  optional
317 317  )))|(((
318 -
298 +\\
319 319  )))|(((
320 -
300 +\\
321 321  )))
322 322  |(((
323 -
303 +13
324 324  )))|(((
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 +\\
319 +)))
320 +|(((
321 +\\
322 +)))|(((
323 +Einige Protokolle und Formate
324 +)))|(((
325 +HTTP, MQTT.
326 +)))|(((
327 +\\
328 +)))|(((
329 +\\
330 +)))
331 +|(((
332 +\\
333 +)))|(((
325 325  Architekturen
326 326  )))|(((
327 327  monolithisch, zentralisiert, verteilt, wenigstens 3 Arten von P2P, Agenten.
... ... @@ -334,10 +334,10 @@
334 334  
335 335  [[Mediathek:Distributed Systems>>url:https://mediathek.htw-berlin.de/album/video/Verteilte-Anwendungsmuster-P2P-Client-Server-Agenten-SharkASAP/db6b10a1014fbda7eeb9b49eadead34b/329||shape="rect"]]
336 336  )))|(((
337 -
346 +\\
338 338  )))
339 339  |(((
340 -
349 +13
341 341  )))|(((
342 342  //Grundlagen der Verschlüsselung//
343 343  
... ... @@ -351,18 +351,18 @@
351 351  
352 352  [[Mediathek: Schlüsselverfahren PKI und Zertifikate>>url:https://mediathek.htw-berlin.de/album/video/SEPrinzipienKryptografie/20ac30ae9d0301ebc1e5c66b9c33bf18/253||shape="rect"]]
353 353  )))|(((
354 -
363 +\\
355 355  )))
356 356  |(((
357 -
366 +\\
358 358  )))|(((
359 359  Virtuelle (private) Netze, TOR
360 360  )))|(((
361 361  optional
362 362  )))|(((
363 -
372 +\\
364 364  )))|(((
365 -
374 +\\
366 366  )))
367 367  
368 368  == {{id name="B23BetriebssystemeundNetzwerke-Literatur"/}}Literatur ==
... ... @@ -402,26 +402,24 @@
402 402  
403 403  == {{id name="B23BetriebssystemeundNetzwerke-KlausurenvonVorsemestern"/}}Klausuren von Vorsemestern ==
404 404  
414 +\\
405 405  
406 406  {{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"/}}
407 407  
408 -{{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"/}}
409 -
410 410  {{view-file att--filename="BS_NW_23_1.pdf" display="thumbnail" height="250"/}}
411 411  
420 +\\
412 412  
422 +\\
413 413  
424 +\\
414 414  
426 +\\
415 415  
428 +\\
416 416  
430 +\\
417 417  
432 +\\
418 418  
419 -
420 -
421 -
422 -
423 -
424 -
425 -
426 -
427 -
434 +\\
AdderProtocolEngine.zip
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -19.4 KB
Content
BN_23_24_1.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -58.6 KB
Content
BN_23_24_2.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -60.1 KB
Content
BS_NW_22_1.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -41.5 KB
Content
BS_NW_22_2.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -41.5 KB
Content
BS_NW_22_23_1.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -41.5 KB
Content
BS_NW_23_1.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -42.4 KB
Content
BS_NW_24_1.pdf
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -58.6 KB
Content
CLISkeletonWithConnection.zip
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -30.7 KB
Content
FragenBS_NW.txt
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -3.7 KB
Content
... ... @@ -1,87 +1,0 @@
1 -(10‘) Was ist Maschinencode? Erläutern Sie!
2 -- spezifisch für einen Prozessor.
3 -- kann direkt abgearbeitet werden in der CPU
4 -- Zusatz: Ziel des Compilers.
5 -
6 -Was ist ein Compiler?
7 -
8 -Worin unterscheiden sich der Output der Compiler von C und Java gründsätzlich?
9 -
10 -(10‘) Welche Elemente sind einem Prozess zugeordnet? Anders gefragt: Woraus besteht ein Prozess und welche Dinge ordnet das Betriebssystem zu?
11 -- Freispeicher (Heap), Stack(),
12 -- Instruction Pointer ggf
13 -- Teil der Prozessortabelle
14 -
15 -Welche Aufgaben hat ein Scheduler?
16 -
17 -Was ist ein Betriebssystem?
18 -
19 -Was ist ein Thread?
20 -
21 -Wozu dient der Stack in einem Prozess?
22 -
23 -(5‘) Nennen und beschreiben Sie zwei Prozesszustände!
24 -- wait: Prozess wartet auf externe Eingaben
25 -- running: Prozess wird abgearbeitet
26 -- bereit: Prozess ist bereit, ist aber gerade nicht zur Abarbeitung eingeteilt.
27 -
28 -Beschreiben Sie das Schedulingverfahren First-In-First-Out (FIFO)!
29 -
30 -Beschreiben Sie das Schedulingverfahren Round-Robin!
31 -
32 -(15‘) Schedulingverfahren lassen sich u.a. klassifizieren als in Batch-, Multitask- und Echtzeitverfahren. Nennen Sie für jedes Verfahren ein mögliches Einsatzgebiet und beschreiben Sie grob dessen Prinzip.
33 -- Batch: Banken. Job after Job wird ohne(!) Unterbrechung abgearbeitet.
34 -- Multitask: Rechnern mit Usern davor: Unterbrechbare Jobs
35 -- Echtzeit: Industrieanlagen: Garantie der Zeiten, setzte Kenntnis der Prozesse voraus.
36 -
37 -Nennen Sie eine Bedingung, die erfüllt sein muss, um einen Deadlock zu erzeugen.
38 -Begründen Sie, warum kein Deadlock eintreten kann, wenn eine solche Bedingung nicht
39 -vorliegt.
40 -
41 -Was ist ein Spooler? Nennen Sie ein Beispiel für einen Einsatz.
42 -
43 -(5‘) Wozu dienen Prüfsbits?
44 -
45 -(10‘) Was beschreibt die Hamming-Distanz?
46 -
47 -Wie groß muss die Hammingdistanz wenigstens sein, um Ein-Bit-Fehler zu erkennen?
48 -
49 -Was ist ein Frame im Kontext der unteren zwei ISO-OSI-Layer?
50 -
51 -(10‘) Aloha ist das wohl bekannteste ein Multiple-Access (MA) Verfahren: Mehrere Geräte greifen gleichzeitig auf das gleiche Medium zur Datenübertragung zu. MA-Verfahren wurden um die Fähigkeit Carrier-Sense und damit zu CSMA Verfahren erweitert. Beschreiben Sie diese Erweiterung und wozu sie dient!
52 -- erkennt ob das Medium in Nutzung ist
53 -- erlaubt damit das Warten des Sendens und verringert damit die Wahrscheinlichkeit der Kollision
54 -- erlaubt Erkennung von Kollisionen und damit eine mögliche Reaktion
55 -
56 -Es gibt Varianten mit Kollisionen im Layer 2 umzugehen:
57 -Ignorieren, Collission Detection (CD) und Collision Avoidance (CA).
58 -Beschreiben Sie wahlweise CSMA/CD oder CSMA/CA. Nennen Sie eine Einsatzgebiet.
59 -
60 -Beschreiben Sie ein|e [Hub | Bridge | Repeater | Switch], ordnen Sie diese Infrastrukturelemente einem
61 -OSI-Layer zu und begründen Sie diese Zuordnung!
62 -
63 -(15‘) Wozu dient das Address-Resolution-Protocol (ARP)? Beschreiben Sie wie es funktioniert?
64 -- Zuweisung einer logische (Layer3) Adresse zu Rechnern.
65 -- ARP erlaubt diese Rechner innerhalb eines Layer 2 Netzes zu finden.
66 -- Sendet BC und wartet auf Antwort
67 -
68 -(10‘) Was ist das Internet?
69 -- weltweiter Verbund von Layer3-Routern.
70 -
71 -Der OSI-Layer 3 kann prinzipiell auf zwei Arten realisiert werden: Virtual Circuit oder
72 -Datagramm. Beschreiben Sie ein Verfahren.
73 -Welcher Klasse kann man das Internet Protocol (IP) zuordnen?
74 -
75 -(10‘) Welche Aufgaben hat ein Layer-3 Router?
76 -- Entscheidung, wohin ein Paket gesendet werden soll - in das Layer2 Netz oder weiter routen?
77 -- Zusatz: Adaption an die Netzauslastung.
78 -
79 -TCP realisiert zwei Arten der Flusskontrolle: 1) Die Geschwindigkeit in die beiden
80 -Anwendungen Daten in den Layer 3 sende und 2) es passt die Datenmenge
81 -an den aktuellen Durchsatz des Layer 3 Netzes an. Beschreiben wie eine der Varianten realisiert wird.
82 -
83 -
84 -
85 -
86 -
87 -
ThreadTemplate.zip
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze
Size
... ... @@ -1,1 +1,0 @@
1 -7.9 KB
Content
Confluence.Code.ConfluencePageClass[0]
id
... ... @@ -1,1 +1,1 @@
1 -139399664
1 +214402103
url
... ... @@ -1,1 +1,1 @@
1 -https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/139399664/B23 Betriebssysteme und Netzwerke
1 +https://wiki.htw-berlin.de/spaces/fb4mobileapplicatio/pages/214402103/B23 Betriebssysteme und Netzwerke
XWiki.XWikiRights[0]
allow
... ... @@ -1,1 +1,0 @@
1 -Allow
levels
... ... @@ -1,1 +1,0 @@
1 -edit
users
... ... @@ -1,1 +1,0 @@
1 -XWiki.schwotze