Preview only show first 10 pages with watermark. For full document please download

Teil 1 (a4)

   EMBED


Share

Transcript

Übungen zu Systemprogrammierung 1 (SP1) Ü1 – Einführung Jens Schedel, Christoph Erhardt, Jürgen Kleinöder 01-Introduction_handout Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg SS 13 – 22. bis 26. April 2013 http://www4.cs.fau.de/Lehre/SS13/V_SP1 Agenda Allgemeines Organisatorisches Linux-Kenntnisse Versionsverwaltung mit SVN SP-Abgabesystem Gelerntes anwenden 01-Introduction_handout 1.1 1.2 1.3 1.4 1.5 1.6 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung 1–1 Lernziele Systemprogrammierung Fehlererkennung Fehlerbehandlung Verifikation der Eingabe Entwicklung portabler Programme vom Problem zum Programm Selbstständiges Erarbeiten von Lösungen Entwicklung robuster Software Selbstständige Fehlersuche Systemprogrammierung valgrind Dokumentation selbstständig... 01-Introduction_handout Werkzeugverständnis make ...finden ...lesen gcc gdb c js, ce, jk SP1 (Ü1 | SS 13) Versionsverwaltung 1 Einführung | 1.1 Allgemeines ...verstehen 1–2 Aufbau der SP-Übungen Tafelübungen und Besprechungen Vorstellung von Betriebssystemkonzepten und Werkzeugen Einführung in die Verwendung der Schnittstellen Erarbeiten eines kleinen Programmes (Aktive Mitarbeit!) Besprechung der Abgaben und allgemeiner Fallstricke 01-Introduction_handout Praktischer Teil – Aufgaben Arbeiten mit der Betriebssystemschnittstelle Fehlersuche und Fehlerbehebung Verwenden der vorgestellten Werkzeuge Hilfestellung in den Rechnerübungen c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.1 Allgemeines 1–3 Agenda Allgemeines Organisatorisches Linux-Kenntnisse Versionsverwaltung mit SVN SP-Abgabesystem Gelerntes anwenden 01-Introduction_handout 1.1 1.2 1.3 1.4 1.5 1.6 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.2 Organisatorisches 1–4 Tafelübungen und Besprechungen Üblicherweise abwechselnd Tafelübung und Besprechung Ausnahme: Besprechungen zu den Aufgaben 1 und 2 http://www4.cs.fau.de/Lehre/SS13/V_SP1/semesteruebersicht.html Nächste Übungswoche beginnt am Donnerstag Mon, Tue, Wed, Thu, Fri, Sat, Sun, Mon, Tue, Wed, Thu, Fri, Sat, 15.04 16.04 17.04 18.04 19.04 20.04 21.04 22.04 23.04 24.04 25.04 26.04 27.04 Vorlesung V1 V2 V3 V4 Übung U1 U1 U1 U1 U1 Mo A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 Di Mi Do Fr 01-Introduction_handout Sun, 28.04 A1 Mon, Tue, Wed, Thu, Fri, Sat, Sun, Mon, Tue, Wed, Thu, Fri, Sat, 29.04 30.04 01.05 02.05 03.05 04.05 05.05 06.05 07.05 08.05 09.05 10.05 11.05 Vorlesung V5 Übung U2 U2 Mo A1 Di A1 A1 Mi A1 A1 A1 Do A1 A1 A1 A1 A2 A2 A1 Fr A1 A1 U2 U2 U2 A2 A2 A2 A2 A2 A2 A2 A2 A2 A2 A2 A2 A2 A1 A1 A2 A2 A2 A2 A2 Quelle: http://www4.cs.fau.de/Lehre/SS13/V_SP1/semesterplan.shtml 1 von 5 04/15/2013 01:43 PM c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.2 Organisatorisches 1–5 Praktischer Teil – Aufgaben Ausgabe neuer Aufgaben in den Tafelübungen Aufgabenstellung meist recht knapp Nicht alles bis in letzte Detail spezifiziert Gegebene Spezifikationen sind dennoch zwingend einzuhalten Selbstständiges Bearbeiten der Aufgaben (vorzugsweise im CIP) bei Problemen hilft z.B. ein Besuch in den Rechnerübungen 01-Introduction_handout Korrektur und Bewertung erfolgt durch den jeweiligen Tafelübungsleiter korrigierte Ausdrucke werden in den Besprechungen ausgegeben teilweise auch elektronisch zur Verfügung gestellt eigenes Ergebnis nach Login im WAFFEL einsehbar Übungspunkte können das Klausurergebnis verbessern (Bonusnote) Abschreibtests Vorstellen der eigenen Lösungen c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.2 Organisatorisches 1–6 Praktischer Teil – Bearbeitung der Aufgaben einzeln oder in Zweier-Teams je nach Aufgabe bei Teamarbeit müssen beide Partner in der gleichen Tafelübung sein Bearbeitungszeitraum ist angegeben in Werktagen (bei uns: Montag bis Freitag) Bearbeitungszeitraum beinhaltet den Tag der Tafelübung Feiertage (01.05., 09.05., 20.05, und 30.05.) und der Berg-Dienstag (21.05.) sind nicht enthalten Abgabetermin kann per Skript erfragt werden 01-Introduction_handout plant für die Bearbeitung einer Aufgabe mindestens 8-16 Stunden (in Worten: ein bis zwei Tage) ein langer Bearbeitungszeitraum bietet euch Flexibilität bei der Arbeitsverteilung Feedback über wirkliche Bearbeitungszeit erwünscht c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.2 Organisatorisches 1–7 Kontakt zum SP-Team Forum: https://fsi.cs.fau.de/forum/18 inhaltliche Fragen zum Stoff oder den Aufgaben allgemein alles, was auch für andere Teilnehmer interessant sein könnte Mailingliste: [email protected] geht an alle Übungsleiter Angelegenheiten, die nur die eigene Person/Gruppe betreffen Rechnerübungen 01-Introduction_handout Hilfe bei konkreten Problemen (z.B. Quellcode kompiliert nicht) kein Händchenhalten während ihr die Tastatur bedient :) angebotene Termine siehe Homepage der eigene Übungsleiter Fragen zur Korrektur fälschlicherweise positiver Abschreibtest c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.2 Organisatorisches 1–8 Agenda Allgemeines Organisatorisches Linux-Kenntnisse Versionsverwaltung mit SVN SP-Abgabesystem Gelerntes anwenden 01-Introduction_handout 1.1 1.2 1.3 1.4 1.5 1.6 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.3 Linux-Kenntnisse 1–9 Voraussetzungen UNIX-Grundkenntnisse werden vorausgesetzt Übungsleiter sind in den Rechnerübungen bei Bedarf behilflich Zur Auffrischung: UNIX-Einführung der FSI http://fsi.cs.fau.de/vorkurs Linux-Install-Party der FSI 01-Introduction_handout am Montag, den 29.04.2013, um 16:00 Uhr weitere Informationen unter http://fsi.cs.fau.de/dw/fsi/aktionen/linuxinstall_ss13 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.3 Linux-Kenntnisse 1–10 Dokumentation aus 1. Hand: Manual-Pages Aufgeteilt in verschiedene Sections 1 2 3 5 7 Kommandos Systemaufrufe Bibliotheksfunktionen Dateiformate (Spezielle Datenstrukturen etc.) verschiedenes (z.B. Terminaltreiber, IP) Angabe normalerweise mit Section: printf(3) Aufruf unter Linux: 01-Introduction_handout > # man [section] begriff > man 3 printf Suche nach Sections: man -f begriff Suche nach Manual-Pages zu einem Stichwort: man -k stichwort c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.3 Linux-Kenntnisse 1–11 Agenda Allgemeines Organisatorisches Linux-Kenntnisse Versionsverwaltung mit SVN SP-Abgabesystem Gelerntes anwenden 01-Introduction_handout 1.1 1.2 1.3 1.4 1.5 1.6 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–12 Warum Versionsverwaltung? Gemeinsames Bearbeiten einer Datei kann zu Problemen führen: A CA AB A kopieren kopieren kopieren A A AB CA AB CA AB CA Alice Bob Alice Bob Alice Bob Alice Bob 01-Introduction_handout Modifikationen werden nicht erkannt Änderungen von Alice gehen unbemerkt verloren c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–13 Warum Versionsverwaltung? Versionsnummer zur Erkennung von Modifikationen A@1 AB AB @2 A@1 @2 checkout commit A@1 A@1 Alice Bob commit AB @1 CA @1 AB @2 CA @1 AB @2 CA @1 Alice Bob Alice Bob Alice Bob Entstandener Konflikt muss lokal gelöst werden AB AB CA @2 update @2 CAB @2 @3 merge 01-Introduction_handout commit commit AB CA AB Alice Bob Alice @2 c js, ce, jk @1 @2 SP1 (Ü1 | SS 13) A@1 CA AB @2 @1 Bob AB CAB Alice Bob @2 @2 1 Einführung | 1.4 Versionsverwaltung mit SVN AB CAB Alice Bob @2 @3 1–14 Das Versionsverwaltungssystem Subversion (SVN) SVN bietet Versionsverwaltung für Dateien und Verzeichnisse Speichert Zusatzinformationen zu jeder Änderung Name des Ändernden Zeitpunkt Kommentar Ausführliche SVN-Dokumentation im Subversion-Buch http://svnbook.red-bean.com 01-Introduction_handout Kommando svn Graphische Frontends TortoiseSVN (Windows) SCPlugin (Mac OS X) SP-Abgabesystem verwendet Subversion c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–15 Terminologie B@2 Repository A@1 Working Copy 1 Revision B@2 Working Copy 2 Repository: zentrales Archiv aller Versionen Zugriff erfolgt beispielsweise per Internet Revision (Versionsnummer) 01-Introduction_handout Fortlaufend ab Revision 0 Working Copy (Arbeitskopie) lokale Kopie einer bestimmten Version des Repositories kann versionierte und unversionierte Dateien und Verzeichnisse enthalten es kann mehrere Arbeitskopien zu einem Repository geben (z.B. CIP/daheim) c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–16 Basisoperationen Repository checkout commit update dir/ file.txt Working Copy 01-Introduction_handout checkout/co: Anlegen einer neuen Arbeitskopie update/up: Neuste Revision aus dem Repository holen Bezieht sich auf aktuelles Verzeichnis und alle enthaltenen Verzeichnisse commit/ci: Einbringen einer neuen Version in das Repository c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–17 Exkurs: Kommentar bei commit Beim Aufruf von svn commit öffnet sich ein Editor zum Eingeben des commit-Kommentars Im CIP wird standardmäßig der Editor joe verwendet Zum Speichern und Verlassen Strg-k x drücken Hilfemenü öffnet sich mit Strg-k h Anderer Editor kann über die Umgebungsvariable EDITOR eingestellt werden > export EDITOR=nano 01-Introduction_handout Umgebungsvariable ist nur in dieser Shell-Sitzung gültig Durch Eintragen des Kommandos in die Konfigurationsdatei der eigenen Shell (z.B. .bashrc) wird der Standardeditor für jede neue Shell geändert Übergabe des Kommentars als Argument von svn commit > svn commit -m "Ich schreibe lieber gleich in die Befehlszeile und nicht in den Editor" c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–18 Basisoperationen 2 add: Dateien unter Versionskontrolle stellen Bei einer leeren Arbeitskopie müssen entsprechende Dateien oder Verzeichnisse erst eingefügt werden del/remove/rm: Dateien lokal löschen und nicht länger unter Versionskontrolle halten status/st: Änderungen der Arbeitskopie anzeigen 01-Introduction_handout > svn status A aufgabe1/lilo.txt M aufgabe1/lilo.c ? aufgabe1/lilo ! aufgabe1/lilo.o A M ? ! Datei wurde unter Versionskontrolle gestellt Dateiinhalt wurde verändert Datei steht nicht unter Versionskontrolle Datei steht unter Versionskontrolle, ist aber nicht mehr in der Arbeitskopie vorhanden c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.4 Versionsverwaltung mit SVN 1–19 Agenda Allgemeines Organisatorisches Linux-Kenntnisse Versionsverwaltung mit SVN SP-Abgabesystem Gelerntes anwenden 01-Introduction_handout 1.1 1.2 1.3 1.4 1.5 1.6 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.5 SP-Abgabesystem 1–20 SP-Abgabesystem Für jeden Teilnehmer wird folgendes bereitgestellt: ein Repository https://www4.cs.fau.de/i4sp/ss13/sp1/ ein Projektverzeichnis /proj/i4sp1/ mit Arbeitskopie Die Erzeugung erfolgt in der Nacht nach der WAFFEL-Anmeldung 01-Introduction_handout SVN-Passwort Zum Zugriff auf das Repository muss ein Subversion-Passwort gesetzt werden > /proj/i4sp1/bin/change-password Das Passwort wird innerhalb der nächsten Stunde aktiv c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.5 SP-Abgabesystem 1–21 Aufbau des SP-Repositories U1-3 Versionsverwaltung 6 Aufbau des SP-Repositories SP-Projektverzeichnis des Benutzers alice /proj/i4sp1/alice trunk branches kommende Woche aufgabe1 aufgabe2 ... wsort.c Programmquellen mehr aufgabe3 ... wsort wsort.txt ausführbares Programm Dokumentation (soweit gefordert) (nicht eingecheckt) ■ Der trunk enthält ein Unterverzeichnis aufgabeX für jede Aufgabe ■ Zur Abgabe folgendes Skript aufrufen unterhalb $von branches nichts editieren /proj/i4sp1/bin/submit aufgabe0 oder von Hand ändern SP - Ü 01-Introduction_handout trunk enthält ein Unterverzeichnis aufgabeX für jede Aufgabe ◆ dieses gibt die aktuellste Version Ihres Repositories ab ◆ offene Änderungen vor der Abgabe einchecken ◆ unterhalb von branches nichts von Hand editieren/einchecken Systemprogrammierung 1 — Übungen © Jürgen Kleinöder, Michael Stilkerich, Jens Schedel • Universität Erlangen-Nürnberg • Informatik 4, 2012 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.5 SP-Abgabesystem U01.fm 2012-04-22 11.09 U1.14 1–22 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors Abgabe einer Aufgabe Zur Abgabe folgendes Skript aufrufen > /proj/i4sp1/bin/submit aufgabe1 dieses gibt die aktuellste Version der Lösung zu Aufgabe 1 ab mehrmalige Abgabe ist möglich durch erneuten Aufruf des submit-Skripts gewertet wird die letzte rechtzeitige Abgabe 01-Introduction_handout Eigener Abgabetermin kann per Skript erfragt werden > /proj/i4sp1/bin/get-deadline aufgabe1 Dein Abgabezeitpunkt fuer die Aufgabe 1: lilo ist 29.04.2013 um 17:30:00 Uhr Abgaben nach dem Abgabezeitpunkt sind möglich bei Vorliegen eines triftigen Grundes Wertung nur nach expliziter Rücksprache mit dem Übungsleiter ansonsten wird letzte rechtzeitige Abgabe gewertet c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.5 SP-Abgabesystem 1–23 Bereitgestellte Dateien Für einige Aufgaben stellen wir verschiedene Dateien zur Verfügung Programmgerüste Beispieleingaben Verzeichnisbäume zum Ausprobieren des Programms Die Dateien befinden sich in /proj/i4sp1/pub/aufgabe Manchmal ist es notwendig nur einige der öffentlichen Dateien ins eigene Projektverzeichnis zu kopieren Hierzu kann das Skript copy-public-files-for verwendet werden 01-Introduction_handout > /proj/i4sp1/bin/copy-public-files-for aufgabe1 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.5 SP-Abgabesystem 1–24 Agenda Allgemeines Organisatorisches Linux-Kenntnisse Versionsverwaltung mit SVN SP-Abgabesystem Gelerntes anwenden 01-Introduction_handout 1.1 1.2 1.3 1.4 1.5 1.6 c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.6 Gelerntes anwenden 1–25 Aktive Mitarbeit erforderlich! „Aufgabenstellung“ Öffentliche Dateien für Aufgabe 1 ins Projektverzeichnis kopieren Vorgabe der Aufgabe 1 abgeben 01-Introduction_handout Erforderliche Dateien: lilo.c c js, ce, jk SP1 (Ü1 | SS 13) 1 Einführung | 1.6 Gelerntes anwenden 1–26