0% fanden dieses Dokument nützlich (0 Abstimmungen)
26 Ansichten21 Seiten

Informatik Q111

Hochgeladen von

alexandrumatei.sporis
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
26 Ansichten21 Seiten

Informatik Q111

Hochgeladen von

alexandrumatei.sporis
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

20.09.

22
Beispiel Waschmaschinen-Sprache:

Σ = { A,B,C,D,E,F,0,1,2,3,4,5,6,7,8,9,ein,plus,hoch }

Beispiele für gültige Worte in der Sprache:


E 60 hoch ein, A 4 9 plus hoch ein, C 35 ein

Regeln:
1. Programm einstellen (A-F)
2. Temperatur einstellen (30-90)
3. “hoch” oder keine Taste
4. “plus” oder keine Taste
5. “ein”

Formales Definieren einer Sprache 1

Eine Grammatik besteht aus einem Alphabet (Terminalsymbole), einer Startvariable,


einer beliebigen Anzahl an syntaktischen Variablen und einer beliebigen Anzahl an
Ableitungsregeln

Σ = { A,B,C,D,E,F,0,1,2,3,4,5,6,7,8,9,ein,plus,hoch }

<Waschmaschinenwort> → (A|...|F) <Temperatur> <Zusatz> ein


<Temperatur> → (90) | (3|...|8) (0|...|9)
<Zusatz> → (hoch | ε) (plus | ε)

→ B 45 plus ein (Bsp. für gültiges Wort einer Sprache)

Binärzahlen-Sprache (inkl. Leeres Wort):

Σ = { 0,1 }

<Binearzahl> → (0|1) <Binaerzahl> | ε

Binärzahlen-Sprache (ohne Leeres Wort): <Binaerzahl> → (0|1) (<Binaerzahl | ε)

Binärzahlen-Sprache (ohne führende Nullen, ohne leere Wörter):

<Binaerzahl> → 0 | 1 <Binaerzahl2>
<Binaerzahl2> → (0|1) <Binaerzahl2> | ε
Sprache der Kommazahlen:

Bsp.: 3,5 ; 1,2;...

Σ = { 0,1,2,3,4,5,6,7,8,9,”,”,- }

<Kommazahl0> → (- | ε) (((1|...|9) <Kommazahl1>) | 0) , <Kommazahl1>


<Kommazahl1> → ((0|...|9) <Kommazahl2>)
<Kommazahl2> → ((0|...|9) <Kommazahl2>) | ε

27.09.22
Formal Korrekte Datumsangaben (ohne Schaltjahr.): TT-MM-JJJJ

Σ = { 0,1,2,3,4,5,6,7,8,9,”.” }

<Datum> → <Datum0> | <Datum1> | <Datum2>

<Datum0> → (0 (1|...|9)) | (1 (0|...|9) | (2 (0|...|8) . 02 . <Jahr>


<Datum1> → (0 (1|...|9)) | (1 (0|...|9)) | (2 (0|...|9)) | 30 . (04|06|09|11). <Jahr>
<Datum2> → <Tag> . (01|03|05|07|08|10|12) . <Jahr>
<Tag> → (0 (1|...|9)) | (1 (0|...|9)) | (2 (0|...|9)) | (3 (0|1))
<Monat> → (0 (1|...|9)) | (1 (0|1|2))
<Jahr> → (0|...|9) (0|...|9) (0|...|9) (0|...|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.: <BinZahl> → 0 | 1 | 0 <BinZahl> | 1 <BinZahl>


Bsp.: 101
Beispiel anhand der Natürlichen Zahlen:

<NatZahl> → (1|...|9) <NatZahl2>


<NatZahl2> → (0|...|9) <NatZahl2> | ε

Bsp.: 462

Formales Definieren einer Sprache 2 eBNF (erweiterte


Backus-Naur-Form)

Syntax: wort = Definition

Erlaubte Formalismen:

{a} beliebig oft die syntaktische Variable a (auch keinmal)


[a] einmal oder keinmal die syntaktische Variable a
a|b entweder einmal a oder einmal b
ab erst a, dann b
a (b | c) erst a, dann b oder c

Binärzahlen (im Sinne der Informatik): binZahl = { “1” | “0” }


Binärzahlen (im Sinne der Mathematik): binZahl = “1” { “0” | “1” } | “0”

Forderungen an die Zahl:


Entweder nur 0, oder Zahl beginnend mit 1 und beliebig lang

Sprache der Mathematischen Kommazahlen:

Forderungen: ohne führende Nullen, kein leeres Wort

komZahl = ([“-”] “0” “,” {“0”|...|”9”}) | ([“-”] (“1”|...|”9”) {“0”|...|”9”}, ({“0”|...|”9”} “0”))

Sprache L (ABI 2021 A, III 1):

Forderungen: von A bis ZZ; und 1 bis 999 (ohne führende nullen) plus Dollarzeichen

Lwort = [“$”] (“A”|...|”Z”) [(“A”|...|”Z”)] [“$”] (“1”|...|”9”) [(“0”|...|”9”) [(“0|...|”9”]]

Sprache der korrekt geklammerten Mathematischen Terme:

Forderungen:
Formale Sprache der korrekt geklammerten Mathematischen Terme über den
Grundrechenarten plus, minus, mal, geteilt klammern, ohne vorzeichen

Term =

{ { (zR| zRKl ) (“+”|”-”|”*”|”/”) (zR [e] | zRKl [e] ) } | zR }

komZahl = (“0” “,” {“0”|...|”9”}) | ((“1”|...|”9”) {“0”|...|”9”}, ({“0”|...|”9”} “0”))


zR = { komZahl (“+”|”-”|”*”|”/”) } komZahl
zRKl = “(“ { komZahl (“+”|”-”|”*”|”/”) | zRKl } komZahl “)”
e = (“+”|”-”|”*”|”/”) “zR”

zuletzt eingefügte Regelung zur verschachtelung von Klammern

“und” bewirkt eine operation von zwei verknüpften dingen

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.

Vorteile von Leitungsvermittlung:


- garantierte Bandbreite
- einfache Benutzerkontrolle
Verfahren, die die Daten in einzelne Pakete aufteilen, nennt man paketvermittelnde
Verfahren.

Vorteile von Paketvermittlung:


- eine Leitung kann von mehreren Anwendungen (bessere Ausnutzung der
Bandbreite)
- Pakete für verschiedene Empfänger können über dieselbe Leitung geschickt
werden (Pakete müssen Adressdaten enthalten!)

22.11.22
Netzwerktechnologien II
-Topologien-

Das vollständige Netz (jeder ist mit jedem verbunden):

Ausfallsicherheit: sehr gut (es müssen mindestens n-1 Kabel ausfallen, damit auch
nur ein Computer abgeschottet ist)

Kosten: sehr hoch (bei n Computern: (n*(n-1))/2 )

Abhörsicherheit: sehr gut (Direktverbindung)

Der Bus:
Ausfallsicherheit: sehr schlecht, bei einem einzigen Ausfall ist das Netz mindestens
zweigeteilt (oft sogar komplett ausgefallen)

Kosten: sehr gering, bei n Computern 1 langes Kabel/n kleine Teilstücke

Abhörsicherheit: sehr schlecht, jeder bekommt alles mit

Der Ring:

Ausfallsicherheit: etwas besser als der Bus, es müssen mindestens zwei Kabel
ausfallen, damit ein Teil des Netzwerks abgeschnitten ist

Kosten: gering, ein Kabel mehr als beim Bus

Abhörsicherheit: sehr schlecht, jeder bekommt alles mit

Der Baum:

Ausfallsicherheit: gering, je nach Ort des Ausfalls wird evtl. die Hälfte des Netzes
abgeschnitten

Kosten: gering, für n-Computer n-1 Kabel

Abhörsicherheit: eher gering, je nach Ort können unterschiedlich viele Leitungen


abgehört werden
Der Stern:

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

Kosten: gering, für n Computer n Kabel

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:

1. CA schickt ein Paket an CD


→ Switch trägt MAC1 (Absender!) in seine Tabelle ein
2. Switch schickt das Paket an alle (Failsafe-/Panic Mode)
3. CD schickt ein Antwort-Paket an CA
→ Switch trägt MAC4 (Absender!) in seine Tabelle
30.11.22

Absender-MAC-Adressen können durch das Betriebssystem gefälscht werden


(MAC-Spoofing). Ist die Tabelle eines Switches voll, so schaltet dieser Switch wieder
in den Failsafe-Mode. Dadurch wird der Switch effektiv zu einem HUB. Dieser
Umstand wird bei sog. MAC-Flooding von Hackern ausgenutzt.

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 -

Es sind derzeit ca. 5 Milliarden Computer an das Internet angeschlossen. Wegen


dieser enormen Anzahl an Teilnehmern ist eine Vernetzung mit Switches allein nicht
möglich (zu große Tabellen, zu unflexibel).

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:

IP-Adressen werden vom Provider zur Verfügung gestellt und vom


Netzwerkverwalter vergeben!

07.12.22
Subnetzmaske

Mithilfe der Subnetzmaske kann ein Computer entscheiden, ob eine Ziel-IP-Adresse


im eigenen Subnetz liegt oder nicht.

Beispiel zum Satz: siehe nächste Seite


Zusammenhang zwischen IP-Adressen und MAC-Adressen
- Das ARP - Model -

IP-Adressen werden vom Benutzer eingegeben. Ein Switch verwendet


MAC-Adressen. Um innerhalb eines Subnetzes Zieladressen (MAC) auf Pakete
schreiben zu können, muss zunächst die zur IP-Adresse gehörige MAC-Adresse des
Ziels ermittelt werden. Das passiert in der Regel mithilfe des Adress Resolution
Protocols (ARP).

ARP:

Schritt 1: Nachricht an alle (Broadcast an [Link] )


Who has [Link] ? Tell [Link]

Schritt 2: Antwort von [Link]


[Link] is at [Link]

Der Netzwerkadministrator bzw. ISP (oder ein Automatismus (DHCP)) vergibt


sinnvolle IP-Adressen für alle Geräte im Netzwerk. Jedes solche Gerät ermittelt bei
der ersten Kontaktaufnahme über ARP die MAC-Adresse des Zielgeräts automatisch
im Hintergrund. Die Zuordnung IP-MAC wird dann auf jedem Gerät gespeichert und
regelmäßig aktualisiert.

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-

Um mehrere Netzwerk-Anwendungen auf einem Computer betreiben zu können,


müssen auf dem Computer verschiedene “Büros” eingerichtet werden. Jedes Büro
bekommt eine Nummer. Will nun eine Anwendung ein Paket an eine andere
Anwendung schicken, so muss diese zusätzlich zur IP-Adresse des entfernten
Rechners auch noch die Büronummer angeben. Solche Büros nennt man Ports.

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.

Das TCP/ IP-Referenzmodell

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.

Flexibilität, Modularität, Austauschbarkeit → Vorteile für das obige Schichtenmodell


hypertext transfer protocol → HTTP

11.01.23
Netzwerktechnologien
Übertragen von Webseiten
- Das HTTP-Protokoll -

Im HTTP-Protokoll ist der Ablauf bei der Übertragung von Hypertextdokumenten


geregelt (Hypertext Transfer Protocol).

Um die Internetanbindung nicht unnötig zu belasten, werden bereits angefragte


Inhalte häufig lokal auf dem Client gespeichert (Cache). Das HTTP-Protokoll
überträgt neben den eigentlichen Inhalten dafür zusätzlich einen Zeitstempel, der
Auskunft darüber gibt, ob der Inhalt zwischenzeitlich modifiziert wurde.

25.01.23

Parallele Ausführungsfäden

Programme können mehrere Dinge (fast) gleichzeitig tun. Solche parallelen


Ausführungsfäden nennt man Threads. Will man einen neuen Thread erzeugen, so
muss man in Java nur eine Unterklasse der Klasse “Thread” schreiben. Die Methode
“public void run()” in der Unterklasse kann man dann über die Methode “public void
start()” in der Klasse Thread aufgerufen.

Bsp.:

public class MeinThread extends Thread {

private int threadnummer;



public void run() {
int n = 0;
for(int i = 1; i <= 100; i++) {
n += i;
}
[Link](threadnummer + “Summe: “ + n);
}
}

public class Starter {

public static void main(String[] args) {


new MeinThread().start();
new MeinThread().start();
new MeinThread().start();
}
}

lost update → Werte updaten sich asynchron und es entstehen fehler durch den unterschiedlichen
“Kenntnisstand” von Teilen des Programms

Probleme bei parallelen Programmen

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.

Bsp.: (in Thread 1 und Thread 2 wird folgender Code ausgeführt:)



geldbetrag = [Link]();
geldbetrag = gedlbetrag + 100;
pinkelpause();
[Link](geldbetrag);

01.02.23

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

Manche Code-Abschnitte können nicht parallel ausgeführt werden. Solche


Abschnitte nennt man kritische Abschnitte. In modernen objektorientierten
Programmiersprachen regelt man die Synchronisation paralleler Ausführung Fäden
mithilfe eines Monitors.

Monitore überwachen den Zugang zu einem kritischen Abschnitt und verhindern,


dass mehrere Threads den Abschnitt gleichzeitig betreten. Wollen mehrere Threads
den Abschnitt gleichzeitig betreten, so müssen sie warten, bis die Threads vor Ihnen
fertig sind (in einer Warteschlange).

In Java:

public synchronized void nameDerSynchronisiertenMethode() {


… kritischer Code…
}
08.02.23
Verklemmung

Durch kritische Abschnitte können Verklemmungen (Deadlocks) entstehen.


Deadlocks sind nur sehr schwer zu erkennen (da sie nur sporadisch auftreten) und
können nur durch strukturelle Änderungen im Softwareentwurf vermieden werden.
Deadlocks treten dann auf, wenn Threads zyklisch warten:

- Da fehlt noch was (siehe [Link])

Funktionsweise eines Rechners


-Die Komponenten-

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.

ROM (“Read-Only-Memory”): Überprüft die Komponenten auf Fehler, lädt das


Betriebssystem

Verbindungen zwischen den Komponenten und zugehörige Schnittstellen:


häufig als Bus realisiert, sind unterschiedlich schnell (Systembusse, serielle
Schnittstellen (COM), (S)ATA, USB, PCI, PCIe, AGP, IDE, SCSI …), Zugang zu den
Bussen wird über sog. Controller geregelt (genauer: Host-Bus-Adapter), Auf
Controllern sind die Anschlüsse für die Endgeräte verbaut.

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.

Faktor Geschwindigkeit Speicher Größe

ca. 5 ns Registerspeicher einige Byte

x4 ca. 20 ns Prozessor Cache einige KB bis


wenige MB

x3 ca. 60 ns Arbeitsspeicher einige MB bis


RAM wenige GB

x100.000 4-10 ms Massenspeicher hunderte GB


(Festplatten,
Solid-State-Drive)

x1000 oft Sekunden Wechseldatenträg unterschiedlich


(oder gar Minuten) er (DVD, USB,
etc.)

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.

Von - Neumann - Architektur

Der Mathematiker John von Neumann entwickelte 1945 ein Rechnermodell, auf dem
bis heute fast alle modernen Rechensysteme basieren.

Der zentrale Vorteil der Von-Neumann-Architektur: Struktur ist unabhängig vom


verarbeiteten Programm → Flexibilität, Universalität Programme und Daten sind
binär codiert und im Speicher abgelegt

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

Die Registermaschine ist eine konkrete Umsetzung der abstrakten


Von-Neumann-Architektur und wird in vielen modernen Systemen eingesetzt.

Befehlsregister: Speichert den Befehl, der aktuell ausgeführt wird


Befehlszähler: Speichert die Adresse des nächsten Befehls
Statusregister: Speichert Informationen darüber, wie die letzte Rechenoperation
abgelaufen ist (Null, Negativ, Überlauf, etc.)
Akkumulator: Speichert Daten (Eingabe und Ergebnisse einer Rechen-
operation

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.

1. Befehl aus dem Speicher holen (Adresse steht im Befehlszähler) und im


Befehlsregister speichern (FETCH)
2. Befehl auswerten (erkennen, was zu machen ist) und evtl. die Adressen der
Operanden extrahieren (DECODE)
3. Operanden holen (FETCH OPERANDS)
4. Befehl ausführen und Ergebnis speichern (im Akkumulator, EXECUTE)
5. Befehlszähler erhöhen (UPDATE INSTRUCTION POINTER)
Befehlssätze

Jede Registermaschine hat einen festen Befehlssatz, in dem steht, welche Befehle
es gibt.

Befehle sind natürlich binär-codiert im Speicher und in den Registern abgelegt.

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

Erstes Maschinenprogramm (minimal):

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

Erarbeiten einer bedingten Anweisung:

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

Das könnte Ihnen auch gefallen