Informatik Q111
Informatik Q111
22
Beispiel Waschmaschinen-Sprache:
Σ = { A,B,C,D,E,F,0,1,2,3,4,5,6,7,8,9,ein,plus,hoch }
Regeln:
1. Programm einstellen (A-F)
2. Temperatur einstellen (30-90)
3. “hoch” oder keine Taste
4. “plus” oder keine Taste
5. “ein”
Σ = { A,B,C,D,E,F,0,1,2,3,4,5,6,7,8,9,ein,plus,hoch }
Σ = { 0,1 }
<Binaerzahl> → 0 | 1 <Binaerzahl2>
<Binaerzahl2> → (0|1) <Binaerzahl2> | ε
Sprache der Kommazahlen:
Σ = { 0,1,2,3,4,5,6,7,8,9,”,”,- }
27.09.22
Formal Korrekte Datumsangaben (ohne Schaltjahr.): TT-MM-JJJJ
Σ = { 0,1,2,3,4,5,6,7,8,9,”.” }
28.09.22
Ableitungen
Will man prüfen, ob ein Wort Teil einer Sprache ist (Wortproblem), so kann man das
mithilfe eines Ableitungsbaums und einer Grammatik tun.
Bsp.: 462
Erlaubte Formalismen:
komZahl = ([“-”] “0” “,” {“0”|...|”9”}) | ([“-”] (“1”|...|”9”) {“0”|...|”9”}, ({“0”|...|”9”} “0”))
Forderungen: von A bis ZZ; und 1 bis 999 (ohne führende nullen) plus Dollarzeichen
Forderungen:
Formale Sprache der korrekt geklammerten Mathematischen Terme über den
Grundrechenarten plus, minus, mal, geteilt klammern, ohne vorzeichen
Term =
04.10.22
Formales Definieren einer Sprache 3
In einem Syntaxdiagramm definiert man eine Sprache als die Menge aller
Kombinationen von Terminalsymbolen, die durch “Aufsammeln” von “Münzen” beim
Durchlaufen des Diagramms erhalten werden kann.
Zum zeichnen des Diagramms hilft die Vorstellung vom klassischen PacMan. Jeder
Pfad, den PacMan entlang gehen kann, muss logisch sinnvoll sein.
Beispiel: Binärzahlen in der Informatik
05.10.22
Formales definieren einer Sprache 4
- Endliche Automaten -
Endliche Automaten definieren formale Sprachen, in dem sie angeben, wie man ein
Wort dieser Sprache erkennt.
Bsp.:
Ein endlicher Automat ist nicht-deterministisch, wenn von einem Zustand aus dem
selben Zeichen mehrere Übergänge möglich sind, oder ein Übergangspfeil kein
Zeichen enthält (spontaner Übergang).
Bsp.:
12.10.22
Grenzen endlicher Automaten
Endliche Automaten können nicht beliebig zählen. Nicht alle formalen Sprachen
können mithilfe von endlichen Automaten ausgedrückt werden!
Beispiele:
Beispielsprache: “a”
Beispielsprache: “(a)”
Beispielsprache: “((a))”
Beispiel einer nicht-regulären Sprache in eBNF: Wort = “(“ Wort “)” | “a”
09.11.22
Wichtige Begriffe für endlichen Automaten:
- deterministisch → nicht mehrere pfeile von einem knoten mit demselben
symbol drauf
- Regularität → “zählbar” sprich kann keine Sprache die beliebige zeichen
speichern soll und wiederverwenden soll speichern (“schauen ob man
beliebig zählen muss”)
Netzwerktechnologien I
Paket und Leitungsvermittlung
Verfahren, die immer die gesamte Leitung für den Transfer der Daten reservieren,
nennt man leitungsvermittelnde Verfahren.
22.11.22
Netzwerktechnologien II
-Topologien-
Ausfallsicherheit: sehr gut (es müssen mindestens n-1 Kabel ausfallen, damit auch
nur ein Computer abgeschottet ist)
Der Bus:
Ausfallsicherheit: sehr schlecht, bei einem einzigen Ausfall ist das Netz mindestens
zweigeteilt (oft sogar komplett ausgefallen)
Der Ring:
Ausfallsicherheit: etwas besser als der Bus, es müssen mindestens zwei Kabel
ausfallen, damit ein Teil des Netzwerks abgeschnitten ist
Der Baum:
Ausfallsicherheit: gering, je nach Ort des Ausfalls wird evtl. die Hälfte des Netzes
abgeschnitten
Ausfallsicherheit: relativ gut, bei einem Ausfall ist i.d.R. nur ein Computer
abgeschnitten
Ausnahme: wenn der Verteiler ausfällt ist das gesamte Netz ausgefallen
Abhörsicherheit: kommt auf den Verteiler an (bei Switch sehr gut, bei Hub miserabel)
29.11.22
Netzwerktechnologien
- Switching -
Leitung MAC
1 MAC1
4 MAC4
(Umsetzungstabelle)
Paketvermittlung über einen Switch:
Anmerkungen:
1. Failsafe-Mode: Alle Pakete werden immer an alle geschickt. Failsafe verringert seinen Umfang nie. Egal
ob die Liste dann schon einträge hat
2. promiscuous mode: pakete die nicht für meinen PC bestimmt sind werden herausgefiltert
3. Switch so primitiv wie möglich halten → Abstürze verhindern
4. highjacking: Email mit Virus wird an einen PC verschickt → Hacker greift Passwörter ab → Kann
Unternehmen lahmlegen
5. Ein Bit mehr an Arbeitsspeicher des switches macht zwei neue möglichkeiten für anschlüsse → Deshalb
anzahl der Anschlüsse in einem Switch immer eine zweierpotenz
06.12.22
Netzwerktechnologien
- Nachrichtenübermittlung im Internet -
Deshalb muss eine neue Form von Adresse eingeführt werden werden: IP-Adresse
Außerdem wird eine neue Form von Vermittlern benötigt, die mit diesen IP-Adressen
umgehen kann:
07.12.22
Subnetzmaske
ARP:
Die IP-Adresse des ersten Routers (Default-Gateway) wurde dem Gerät ebenfalls
vom Netzwerkadministrator zugeteilt.
Ist der Zielcomputer nicht im eigenen Subnetz, so wird über ARP die MAC-Adresse
dieses Gateway ermittelt und das Paket über dieses Gateway ins Internet
weitergeleitet.
20.12.22
Port 80 standardport für alle Webanwendungen unter http (oder 443 https)
Netzwerktechnologien
-Verfeinerung der Adressierung-
Mithilfe von Ports können beliebig viele verschiedene Pakete gleichzeitig verschickt
werden. Ports werden bspw. im TCP (Transmission Control Protocol) definiert. TCP
ist außerdem das Protokoll, das dafür sorgt, dass verlorene Pakete nachgeschickt
werden. Will man den Aufwand, der für das Nachschicken der Pakete notwendig ist,
nicht betreiben, so kann man alternativ auch UDP (User Datagram Protocol)
benutzen.
21.12.22
Eine Firewall blockiert grundsätzlich alle Ports und gibt nur einzelne Ports wieder
frei. Auf diese Weise kann die Kommunikation zwischen den Computern kontrolliert
werden.
Bei der Vermittlung eines Pakets spielen viele Anforderungen eine Rolle. Die Lösung
zu jeder Anforderung ist in (mindestens) einem Protokoll geregelt. Beim Verschicken
wird dann ein Paket i.d.R. andere Pakete eingepackt.
Dieses “Ineinander-Verpacken” von Paketen folgt einem Schichtenmodell: Dem
TCP/IP - Referenzmodell
Anwendungsschicht
Transportschicht
Internetschicht
Netzzugangsschicht
Durch die Aufteilung der Aufgaben muss ein Entwickler der Anwendungsschicht
nicht wissen, WIE ein Paket übermittelt wird. Nur WAS er übermitteln will.
11.01.23
Netzwerktechnologien
Übertragen von Webseiten
- Das HTTP-Protokoll -
25.01.23
Parallele Ausführungsfäden
Bsp.:
lost update → Werte updaten sich asynchron und es entstehen fehler durch den unterschiedlichen
“Kenntnisstand” von Teilen des Programms
Neben der Verklemmung ist ein häufig auftretendes Problem bei der parallelen
Datenverarbeitung das sog. “Lost-Update-Problem”.
Unter Lost-Update-Problem versteht man, dass bei parallelem Zugriff auf eine
zentrale Ressource eine von zwei Änderungen nicht dauerhaft gespeichert wird.
Da die einzelnen Threads zuerst den aktuellen Betrag aus der Bank kopieren, dann
verändern und im Anschluss zurückkopieren, kann es vorkommen, dass nur der
Betrag in der Bank übernommen wird, der zuletzt berechnet wurde. Die erste
Änderung wird überschrieben.
Kritische Abschnitte
In Java:
Mikroprozessor:
(CPU, “Central Processing Unit”): Kernstück des Rechners, führt Maschinenbefehle
aus
Hauptspeicher:
(RAM, “Random Access Memory”, Direktzugriffsspeicher): Speichert die
Maschinenbefehle und Daten, die für die aktuellen Prozesse benötigt werden. Wird
beim Ausschalten des Rechners gelöscht.
Ein-/Ausgabegeräte:
Leiten Benutzereingaben an einen Bus weiter oder geben sie an den Benutzer aus
(Tastatur, Maus, Soundkarten, Grafikkarten, Drucker, Festplatten, …).
Speicherhierarchie
Da persistenter Speicher i.d.R. für die Verarbeitung in der CPU nicht schnell genug
ist, müssen die Daten vom langsamen, großen Speicher zum schnellen, kleinen
Speicher kopiert werden. Je weiter man zur CPU kommt, desto schneller und kleiner
wird dabei der genutzte Speicher. Diesen Umstand nennt man Speicherhierarchie.
14.02.23
Vorbereitung:
Seit Mitte des letzten Jahrhunderts hat sich die grundsätzliche Architektur des
modernen Computers nicht verändert. Vor dieser Zeit waren Computer Maschinen,
die jeweils nur eine einzige/wenige Aufgabe(n) für die sie gebaut wurden erfüllen
konnten. Mit der Von-Neumann-Architektur wurde zum ersten Mal eine universelle
Rechenmaschine entwickelt, die mithilfe von Programmen (Software) die
unterschiedlichsten Aufgaben bewältigen konnte. So waren auch die hohen Kosten
für die Hardware wieder gerechtfertigt. Diese Entwicklung war die Grundlage für die
extreme Verbreitung von modernen Computern auf der ganzen Welt.
Der Mathematiker John von Neumann entwickelte 1945 ein Rechnermodell, auf dem
bis heute fast alle modernen Rechensysteme basieren.
Rechenwerk:
ALU (Arithmetic – Logic – Unit), führt Berechnungen durch
Steuerwerk:
Steuert die Befehlsausführung Steuerwerk und Rechenwerk bilden zusammen die
Zentraleinheit (CPU)
Speicherwerk:
Speichert Daten und Programme. Speicher ist in gleich große Zellen unterteilt, die
alle eine eindeutige Adresse besitzen. Aufeinander folgende Befehle liegen in
aufeinanderfolgenden Zellen. Durch Sprungbefehle kann der lineare Ablauf
unterbrochen werden (bspw. für Schleifen).
Eingabewerk:
Nimmt Eingaben von außen entgegen und leitet sie an das Speicherwerk weiter
Ausgabewerk:
Gibt Daten aus dem Speicher nach außen weiter
Die Registermaschine
Der Befehlszyklus
Ein Programm wird Befehl für Befehl abgearbeitet (Sprünge sind natürlich erlaubt).
Die Ausführung eines einzelnen Befehls benötigt i.d.R. einen Takt. Die Taktung wird
über den Steuerbus vorgegeben.
Jede Registermaschine hat einen festen Befehlssatz, in dem steht, welche Befehle
es gibt.
Im Interesse der Lesbarkeit verwendet man aber in der Regel nicht die binären
Codes in Maschinenprogrammen, sondern vom Menschen lesbare Befehle. Diese
Programmiersprache nennt man Assembler (Befehlssätze sind abhängig von der
jeweiligen Maschine!).
Auf der nachfolgenden Seite ist eine Anleitung zu finden, wie man die
“Minimaschine” installiert:
Assembler
Java Assembler
int i = 0; ADDI 5
i = i + 5; ADDI 5
i = i + 5; ADDI 5
i = i + 5; ADDI 5
i = i + 5; ADDI 5
i = i + 5; STORE 0
Java Assembler
int b = 0; LOAD b
int i = 5; STORE i
i = b; LOAD b
if(b==0) JMPZ Ende
return; LOAD i
i = i + 5; ADDI 5
STORE i
Ende:
HOLD
b: WORD 0
i: WORD 5
28.02.23
Zusatzinformationen:
- Jeder Befehlssatz braucht einen Takt um ausgeführt zu werden
- Taktfrequenz nicht allzu relevant für die tatsächliche Geschwindigkeit des Prozessors
- extended memory = das Benutzen einer Adresse um eine andere adresse zu adressieren