Prof. Franz Schweiggert Abteilung Angewandte Informationsverarbeitung 9. Mai 2006
Christian Ehrhardt Blatt 3


Uni Logo



Systemnahe Software (SS 2006)


Abgabetermin 16.Mai.2006 2006

Fork (10 Punkte)

Kleine Beispiele (3 Punkte)

Auf der Homepage der Vorlesung gibt es unter Sonstiges zwei kleine Beispiele zu fork(2). Schaut Euch diese Beispiele an und überlegt Euch, was sie jeweils für eine Ausgabe produzieren. Beim zweiten Beispiel sollten dabei verschiedene Werte (0 und 1) für das Makro OPENFIRST getestet werden (natürlich wird auch ein Datei INPUT benötigt). Begründet warum die Ausgaben jeweils so sind, wie sie sind! Warum unterscheiden sich die Ausgaben beim zweiten Beispiel je nach dem welcher Wert für OPENFIRST verwendet wird? Testet eine sich daraus gegebenenfalls ergebende Vermutung auch mit größeren Eingabedateien.
Eure Begründung solltet Ihr Eurem Tutor schriftlich per Mail rechtzeitig vor dem Tutorium zukommen lassen.

Parallelisierter GGT (7 Punkte)

Gegeben ist eine Datei, deren Name auf der Kommandozeile an Euer Programm übergeben wird (auf der Homepage gibt es passende Beispiele). Diese Datei besteht ausschließlich aus einer Folge von Integer-Zahlen. Jede Integerzahl besteht aus genau vier Bytes und die Datei enthält eine gerade Anzahl von Integern. Eure Aufgabe ist es, nacheinander immer genau 8 Bytes (also zwei Integerzahlen) aus der Datei einzulesen, ihren größten gemeinsamen Teiler(ggt) zu berechnen und das Ergebnis menschenlesbar auf die Standardausgabe auszugeben.
Damit das ganze nicht so langweilig wird, sollen mehrere Prozesse gleichzeitig an der ggt-Berechnung arbeiten (die Anzahl wird auf der Kommandozeile angegeben). Mit einem einzigen Zahlenpaar beschäftigt sich natürlich immer nur ein einziger Prozeß, weitere Prozesse können sich aber zeitgleich mit anderen Zahlenpaaren beschäftigen. Natürlich soll für jedes Zahlenpaar in der Datei nur einmal der ggt berechnet werden, die Datei muß also (gleichmäßig) unter den Prozessen aufgeteilt werden.

Hinweise



Christian Ehrhardt 2006-05-09