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