Kurzzusammenfassung für Verzweifelte
("Vergatterte")
-
eine beliebige aber komplette Beschreibung
eines Schaltkreises steht in einer ganz normalen ASCII-Datei
-
Struktur der Datei: siehe Übungsblatt
-
das Hauptprogramm liest die Informationen
aus der Datei ein
-
den Namen der Strukturdatei erfährt
das Programm aus der Kommandozeile
-
Faustregel:
-
alle primären Eingabeleitungen werden
vom Hauptprogramm (Steuerprogramm) vom Terminal eingelesen
-
alle endgültigen (hinteren) Ausgabeleitungen
werden vom Hauptprogramm an die Standardausgabe geschrieben
-
alle sekundären Eingabeleitungen
(= Ausgabeleitungen von Gattern) werden durch Dateien simuliert
-
das Hauptprogramm baut nach dem Einlesen
des Schaltplans alle (Min/Max-)Gatter auf einmal auf
(erzeugt pro Gatter einen Prozess) und liest die
Eingabewerte vom Terminal, schreibt diese in die Eingabeleitungen (Dateien)
für die Gatter, und wartet dann auf die Endausgabe
-
ein Gatter wartet, bis beide Eingabeleitungen
"schalten", d.h., dass beide Dateien, die die Eingabewerte für
das Gatter enthalten, vorhanden sind (via stat())
-
nachdem ein Gatter beide Werte aus den beiden
Eingabeleitungen (Dateien) ausgelesen hat, löscht es die Dateien
wieder (Sauberkeit muss sein!)
ACHTUNG: DAS IST FALSCH --- DER STEUERPROZESS MUSS AM ENDE ALLE
DATEIEN LÖschen!!
-
nachdem ein Gatter geschaltet hat (d.h.
Minimum oder Maximum berechnet hat),
schiebt es den Wert in die Ausgabeleitung,
das ist bei uns wieder eine Datei
-
danach terminiert der Gatterprozess
-
der Hauptprozess wartet der Reihe nach
auf alle Ausgabeleitungen und gibt diese ans Terminal aus und
terminiert dann