FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Technische Informatik

T3-Frage

T3-Frage 2002-02-16 15:48
nik
Hat jemand von euch ne Ahnung von Synchronisation?
Ich versuche gerade das Skript von Lehmann bezüglich Copy-and-Set und Exchange-Befehle nachzuvollziehen…scheitere aber daran…schätze das liegt eher am skript als an mir!? [img]http://images.rapidforum.com/images/i25.gif[/img]
Hilfä

Re: T3-Frage 2002-02-18 20:41
szlig
Ist doch eigentlich gar nicht so schwer:

Du hast eine Menge von Prozessen und einen Prozessorbefehl, der _atomar_ ausgeführt wird.

Sei mem = 0.

in i386-Syntax:

mov eax, 0
loop:
xchg eax,
test eax, eax
jz loop

Nach dieser Befehlsfolge enthält eine Null, das heißt alle anderen Prozesse warten weiter.
eax enthält jetzt irgendwas außer Null. Diesen Wert solltest Du speichern und später wieder zurückschreiben.

Wo genau liegt Dein Problem?

Roland

Re: T3-Frage 2002-02-19 14:16
nik
Sei mem = 0.

in i386-Syntax:

mov eax, 0
loop:
xchg eax,
test eax, eax
jz loop

[…]
Wo genau liegt Dein Problem?

Nunja…ich hab keine Ahnung was das da oben bedeutet [img]http://images.rapidforum.com/images/i6.gif[/img],
ist das assembler? *schäm*
Ich bräuchte eigentlich mal eine Umgangssprachliche Beschreibung der Vorgänge.

Also Copy-And-Set prüft vor dem Zugriff auf eine Variable immer ein Flag und setzt es dann beim Betreten.
Und was macht exchange? Unterschied?


Re: T3-Frage 2002-02-20 08:12
szlig
Du hast eine bestimmte Speicherzelle, die anfangs auf eins gesetzt ist. Hier ist es die Speicherzelle 12345. Die eins bedeutet, daß eine bestimmte Ressource (z. B. Diskettenlaufwerk) gerade freigegeben ist. Jeder Prozeß, der an das Diskettenlaufwerk will, führt nun die Befehlssequenz von oben aus:

1. setze eine (prozeßinterne) Variable, kann auch ein Register sein, auf Null.

2. Vertausche nun solange diese Variable mit der Schutzzelle 12345, bis die Variable nicht mehr Null ist. Da in den Vertauschungen immer eine Null beteiligt war (die, die am Anfang in der prozeßinteren Variable war), ist die jetzt in der Schutzzelle. (ohne Beweis)

3. Im gesamten Ablauf um diese Schutzzelle (also der Menge aller Prozesse, die darauf zugreifen), gibt es zu jedem Zeitpunkt nur eine Eins. Wer die hat, darf das Diskettenlaufwerk benutzen. Da dieser Prozeß gerade die Eins hat, sind alle anderen Prozesse vom diskettenlaufwerk abgeschnitten.

4. Wenn dieser Prozeß fertig ist, schreibt er die Eins wieder in die Schutzzelle zurück. Der nächste Prozeß, der diese Vertauschungen vornimmt, bekommt sie und ist glücklich.



Nunja…ich hab keine Ahnung was das da oben bedeutet ,
ist das assembler? *schäm*
Ich bräuchte eigentlich mal eine Umgangssprachliche Beschreibung der Vorgänge.

Copy-And-Set:
Es gibt eine Speicherzelle w, die am Anfang 0 ist. Die 0 bedeutet: Ressource frei.

Wenn ein Prozeß nun die Ressource haben will, führt er folgendes Programm aus:

repeat atomar begin status := w; w := 1; end; until status = 0; [i]{ Ressource bearbeiten }[/i] w := status;
Der xchg-Befehl ist sehr ähnlich zu Copy-And-Set. Er vertauscht zwei Variablen (beim i386 muß mindestens eine davon ein Register sein). Den Copy-And-Set-Befehl kann man so nachbauen:

a := 1; Copy-And-Set(a, b);
Da der Nachbau so einfach ist, hat der Intel-Prozessor wohl den Copy-And-Set-Befehl weggelassen.

Auf den SPARC-Prozessoren ist die Sache noch ein wenig anders geregelt …

Roland


Re: T3-Frage 2002-03-28 15:40
Anonymer User
Ich wollte allen jenen, die T3 noch vor sich haben, einen Hinweis auf die Software tkisem geben. Es handelt sich dabei um einen Sparc-V8-Emulator allererster Qualität, mit dem man komfortabel seine Assemblerlistings durchtracen kann, ohne immer auf den Uni-Rechnern arbeiten zu müssen. Ein Intel-Rechner genügt. Mit graphischer UI. Wirklich erste Sahne.

Für alle ernsthaften Betriebssystem (aka Unixe). Unter Debian GNU/Linux hilft "apt-get install tkisem" weiter.

Die URL lautet http://www.cs.unm.edu/~maccabe/tkisem/

(wenn man mit Google sucht, dann findet man auch eine Anleitung für die Installation unter dem sog. OS Windows)

Re: T3-Frage 2002-03-30 01:12
nik
Danke Roland für die ausführliche Erklärung [img]http://images.rapidforum.com/images/i23.gif[/img]

Zum posting danach:
nicht vergessen: Der Assembler-code im T3-Praktikum muss auf dem D-Core laufen!

Re: T3-Frage 2002-03-31 23:12
szlig
nicht vergessen: Der Assembler-code im T3-Praktikum muss auf dem D-Core laufen!
Das gilt aber wirklich nur für das Praktikum. Die Übungen beziehen sich auf den SPARC 8.

Für den D-CORE habe ich einen Assembler geschrieben (läuft auf Win32, Linux, Solaris, etc.), siehe http://www.roland-illig.de/lang.c.dcore.html

Ein paar Beispiele sind dabei, das Programm funktioniert unter normalen Umständen, aber ist natürlich ohne Gewähr …

Roland