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