Aufgabenblatt 1

Transcription

Aufgabenblatt 1
berlin
Aufgabenblatt 1
Systemprogrammierung
Zu bearbeiten bis zum
TechGI 3
1
23./24.10.2008 und 230./31.10.2008
WS 2008/2009
Prof. Heiß
J. Schneider
Tutoren
(Theorie1)
Aufgabe 1.1: Abgabemodalitäten
Die Übungsblätter enthalten drei Arten von Aufgaben.
a) Theorie
Als Theorie gekennzeichnete Aufgaben sind als Hausaufgabe vor dem jeweiligen Tutorium (durch 1 und
2
gekennzeichnet) in der Gruppe zu lösen. Zu Beginn eines jeden Tutoriums gibt jeder Teilnehmer an,
ob er bereit ist seine Lösung vorzustellen. Vom Tutor wird einer der vorbereiteten Teilnehmer gewählt,
um seine Lösung zu präsentieren. Jeder Teilnehmer stellt im Semester min. 2 Lösungen vor.
b) Praxis
Als Praxis markierte Aufgaben sind Programmieraufgaben. Sie sind als Hausaufgabe in der Gruppe zu
lösen. Die Ergebnisse der Praxisaufgaben werden in den Rechnerübungen dem Tutor durch die Gruppe
vorgestellt und von diesem im Gespräch überprüft.
Dabei gilt:
• Während der Rechnerübung müssen alle Gruppenmitglieder die abgegebene Lösung erklären und
Fragen zu ihr beantworten können.
• Treten bei verschiedenen Gruppen hinreichend ähnliche Lösungen auf, so liegt es im Ermessen des
Tutors beide Abgaben als nicht bearbeitet“ zu bewerten.
”
c) Tafelübung
Als Tafelübung markierte Aufgaben werden im Tutorium gemeinsam gelöst. Es wird erwartet, dass die
Teilnehmer sich mit diesen Aufgaben und dem zugehörigen Stoff vor dem Tutorium beschäftigen.
Kriterien für den Erwerb des Übungsscheines, der Vorraussetzung für die Zulassung zur Klausur ist:
• Im Semester muss ein Teilnehmer bei min. 75% aller Theoretischen Aufgaben bereit sein, seine Lösung
vorzustellen.
• Höchstens eine der Praxisaufgaben im Semester darf als nicht bearbeitet“ bewertet worden sein.
”
(Tafelübung1)
Aufgabe 1.2: Prozesse und Threads
Was unterscheidet Prozesse und Threads voneinander? Diskutieren sie Vor- und Nachteile.
(Tafelübung1)
Aufgabe 1.3: Unterbrechungen
Welche Arten der Unterbrechungsbehandlungen wurden in der Vorlesung vorgestellt?
In der folgenden Abbildung wird das Auftretten von Unterbrechungen mit drei unterschiedlichen Prioritäten
im Verlauf der Zeit dargestellt. In welcher Reihenfolge werden diese Unterbrechungen abhängig von der Art
1
der verwendeten Unterbrechungsbehandlung abgearbeitet? Nehmen sie dazu an, das eine Unterbrechungsbehandlung 2ms dauert.
Aufgabe 1.4: DMA
(Theorie2)
Bei einer Rechnerplattform sind Prozessor (CPU), Grafikkarte und Speicher (RAM) über einen Bus miteinander verbunden. Der Bus arbeitet mit 133 Mhz Taktrate und der Datenbus ist 16 bit breit.
Nachdem an die Adressleitungen eine Adresse angelegt wurde, antwortet das Gerät, in dessen Adressbereich
diese Adresse fällt, mit einem 64 Bit Datenwort verteilt auf 4 Takte. Da das Gerät die Anfrage erst bearbeiten
muss, vergehen zwischen dem Anlegen der Adresse und der Antwort immer zwei Takte. Beim Schreiben ist
das Vorgehen gleich.
Jetzt soll ein 640 × 480 Pixel großes Bild aus dem Speicher in die Grafikkarte kopiert werden. Jeder Pixel
benötigt 24 Bit.
a) Wie viele Takte werden benötigt um ein Datenwort aus dem Speicher zur Grafikkarte zu kopieren? Wie
viele Takte sind nötig um das ganze Bild zu kopieren? Wie viele Millisekunden sind das?
Was macht der Prozessor in dieser Zeit?
b) Die Plattform wird um einen DMA-Controller ergänzt. Wie lange wird jetzt der Transfer des Bildes
benötigen (in Taktzyklen und Millisekunden)?
Was macht der Prozessor in dieser Zeit?
c) Vergleichen sie beide Vorgehensweisen. Welche Vor- und Nachteile haben beide Verfahren?
d) Zustzaufgabe: Auf dem Rechner soll jetzt eine aufwändige Animation angezeigt werden. Der Prozessor
benötigt 5 Millisekunden um ein Bild zu berechnen (das Laden der Eingabedaten wird vernachläßigt).
Das Bild muss dann zuerst in den Speicher kopiert werden und von dort zum richtigem Zeitpunkt zur
Grafikkarte.
Welche Bildwiederholrate ist bei den jeweiligen Verfahren maximal möglich?
Aufgabe 1.5: Addressierungsarten
(Tafelübung2)
Der ARM bietet viele verschiedene Adressierungsarten. Beschreiben sie diese als Blockschaltbild. Ist es
möglich die komplexen Addressierungsarten mit Hilfe von mehreren Befehlen, die nur die einfacheren Addressierungen verwenden, nachzubilden?
2
Aufgabe 1.6: Paralleles Quersummenrennen
(Praxis2: 4 Punkte)
In dieser Aufgabe sollen mehrere Prozesse gleichzeitig eine Aufgabe lösen und dabei jeweils der schnellste
Prozess ausgegeben werden.
a) Schreiben Sie eine Funktion, die aus einer als String gegebenen Zahl (z.B. 768354123“) die Quersumme
”
berechnet. Schreiben Sie eine main-Funktion zum Testen ihrer Funktion.
b) Schreiben Sie eine Funktion, die Zahlen aus einer Datei ausliest und in einer verketteten Liste speichert.
Der Dateiname soll als Kommandozeilenparameter übergeben werden. Die Datei enthält in jeder Zeile
jeweils eine Zahl. Die Zahlen können direkt als String in der Liste gespeichert werden, damit sie später
als Eingabe für die Funktion in a) dienen können. Schreiben sie wieder ein kleines Testprogramm für
das Einlesen.
c) Für das Wettrennen sollen jetzt Prozesse gestartet werden, die jeweils ein Element aus der Liste nehmen,
die Quersumme berechnen und ausgeben.
Schreiben sie ein Programm, dass eine Datei öffnet, zeilenweise ausliest und in eine verkette Liste abspeichert und anschließend für jeden Listeneintrag einen Prozess zur Berechnung abspaltet. Nach dem
Starten der Kindprozesse soll der Hauptprozess auf die Kindprozesse warten und ausgeben, in welcher
Reihenfolge sie terminiert haben.
Wiederholen sie ihren Versuch mehrmals mit der gleichen Eingabedatei und mit verschiedenen Eingabedateien.
fork/join in C:
Unter Unix (auch Cygwin) können sie Prozesse mit der Funktion fork abspalten. Mit der Funktion
wait können sie auf das Ende von Kindprozessen warten. Nähere Informationen erhalten sie, wenn sie
in der Kommandozeile man fork bzw. man -s 3C wait eingeben.
3

Documents pareils