Übungen zu Systemprogrammierung 1 (SP1)



Ähnliche Dokumente
Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1

Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1

U1 1. Übung U1 1. Übung. Versionsverwaltung mit Subversion / SP-Abgabesystem

U1-1 Allgemeines zum Übungsbetrieb. U1-2 Nachtrag zur Benutzerumgebung. 1 Anlaufstellen. 2 Bearbeitung und Abgabe der Aufgaben

Versionsverwaltung mit SVN

Versionsverwaltung. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009

Thomas Rau (mit Material von Peter Brichzin) Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten

Einführung in Subversion. Tutorium SWP

Versionskontrolle mit Subversion

Software Engineering in der Praxis

Einführung in Subversion

Selbstverwaltung von Subversion Repositories

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Software Engineering in der Praxis

CVS. The open standard for version control. (Concurrent Versions System) Maik Zemann CVS

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Prof. Dr. Marko Boger. Prof. Dr. Christian Johner. Versionsmanagement

Sourcecodeverwaltung

Versionsverwaltung mit git

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

Prof. Dr. Heinrich Müller. Informatik VII Universität Dortmund. Organisatorisches zum Vorkurs Informatik

Einführung zu Git. Das Nötigste für die Studienarbeit im Modul Datenkommunikation. Ege Inanc

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Versionierung und Dateistruktur

Versionskontrolle mit Subversion

Installation und Nutzung des SSH Clients 'PuTTY'

Softwareentwicklung I

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, , Berlin

Subversion. Einstieg in die. Versionskontrolle

1. Vom Sourcecode zum Programm

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P)

> Soft.ZIV. Maple Mathematisches Software System

Übungen zu Systemprogrammierung 1 (SP1)

Subversion. 17. Oktober Subversion. Norbert Perk. Warum Versionsverwaltung? Wie funktioniert. Was ist Subversion? Subversion- Server.

Einfu hrung in Subversion mit TortoiseSVN

Software(technik)praktikum: SVN-Tutorial

Subversion als Werkzeug in der Software-Entwicklung Eine Einführung. Tobias G. Pfeiffer Freie Universität Berlin

Versionskontrolle mit Subversion

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

Versionskontrollsysteme. Uwe Berger & Markus Dahms <bralug@bralug.de>

Versionierung und Bugtracking mit Git(Hub)

Tutorium #3. Einführung in die strukturierte Programmierung Gruppe 6 Anja Karl.

*Hierzu wird Microsoft Word benötigt. Mit freien Textverarbeitungen wie Open Office ist dies leider nicht möglich.

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Kennenlernen. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

Vorsemesterkurs Informatik

Einführung in Subversion

Versionsmanagement. Software(technik)praktikum: Vorlesung 2: Versionsmanagement

Adobe Acrobat Professional - Portfolio. Leibniz Universität IT Services Anja Aue

Kurzreferenz ILIAS für Dozenten

UNIHOCKEY CLUB WEHNTAL REGENSDORF

Versionsverwaltung mit RCS

Versionsverwaltung mit Subversion

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

BlueJ und Subversion Inhaltsverzeichnis

Übung zu Grundlagen der Betriebssysteme. Einführungsveranstaltung

Revisionskontrollsystem GIT

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Versionsverwaltungssysteme

Klicken Sie, um das Format des Titeltextes zu bearbeiten

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Programmieren von Java Smartcards

Informationen zur Installation und Nutzung von Subversion (SVN)

Installation und Inbetriebnahme von Microsoft Visual C Community Edition

Transkript:

Übungen zu Systemprogrammierung 1 (SP1) Ü1 Einführung J. Schedel, C. Erhardt, A. Ziegler, J. Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015 19. bis 23. Oktober 2015 https://www4.cs.fau.de/lehre/ws15/v_sp1

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1 1

Lernziele Systemprogrammierung Fehlererkennung Fehlerbehandlung Entwicklung portabler Programme vom Problem zum Programm Verifikation der Eingabe Entwicklung robuster Software Selbstständiges Erarbeiten von Lösungen Selbstständige Fehlersuche Systemprogrammierung valgrind make gcc Versionsverwaltung Werkzeugverständnis gdb Dokumentation selbstständig......verstehen...finden...lesen c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.1 Allgemeines 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 Praktischer Teil Aufgaben Arbeiten mit der Betriebssystemschnittstelle Fehlersuche und Fehlerbehebung Verwenden der vorgestellten Werkzeuge Hilfestellung in den Rechnerübungen c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.1 Allgemeines 1 3

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.2 Organisatorisches 1 4

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 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 (Bonuspunkte) Abschreibtests Vorstellen der eigenen Lösungen c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.2 Organisatorisches 1 5

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 Vorlesungsfreie Tage über Weihnachten sind nicht enthalten Abgabetermin kann per Skript erfragt werden 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 Rückmeldung über wirkliche Bearbeitungszeit erwünscht c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.2 Organisatorisches 1 6

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: i4sp@cs.fau.de geht an alle Übungsleiter Angelegenheiten, die nur die eigene Person/Gruppe betreffen Rechnerübungen 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, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.2 Organisatorisches 1 7

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.3 Linux-Kenntnisse 1 8

Voraussetzungen UNIX-Grundkenntnisse werden vorausgesetzt Übungsleiter sind in den Rechnerübungen bei Bedarf behilflich Zur Auffrischung: UNIX-Einführung der FSI https://fsi.cs.fau.de/vorkurs c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.3 Linux-Kenntnisse 1 9

Dokumentation aus 1. Hand: Manual-Pages Aufgeteilt in verschiedene Sections 1 Kommandos 2 Systemaufrufe 3 Bibliotheksfunktionen 3p Bibliotheksfunktionen gemäß POSIX-Standard 5 Dateiformate (Spezielle Datenstrukturen etc.) 7 verschiedenes (z. B. Terminaltreiber, IP) Angabe normalerweise mit Section: printf(3) Aufruf unter Linux: > # 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, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.3 Linux-Kenntnisse 1 10

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 11

Warum Versionsverwaltung? Gemeinsames Bearbeiten einer Datei kann zu Problemen führen: A A CA kopieren kopieren kopieren A A CA CA CA Alice Bob Alice Bob Alice Bob Alice Bob Modifikationen werden nicht erkannt Änderungen von Alice gehen unbemerkt verloren c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 12

Warum Versionsverwaltung? Versionsnummer zur Erkennung von Modifikationen A @1 A @1 @2 @2 A checkout commit commit A CA @1 @1 @1 @1 Alice Bob Alice Bob Alice Bob Alice Bob Entstandener Konflikt muss lokal gelöst werden CA CA @2 @1 @2 @1 @2 commit @2 update merge @2 C @3 commit @2 Alice CA Bob @1 @2 Alice @2 A @1 Bob CA @1 @2 Alice C Bob @2 @2 Alice C Bob @3 c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 13

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 Kommando svn Grafische Frontends KDESvn (Linux) Tortoise SVN (Windows) SCPlugin (Mac OS X) SP-Abgabesystem verwendet Subversion c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 14

Terminologie Repository B @2 Revision Working Copy 1 A B @1 @2 Working Copy 2 Repository: zentrales Archiv aller Versionen Zugriff erfolgt beispielsweise per Internet Revision (Versionsnummer) 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, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 15

Basisoperationen Repository checkout commit update dir/ file.txt Working Copy 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, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 16

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 nano verwendet Anderer Editor kann über die Umgebungsvariable EDITOR eingestellt werden > export EDITOR=nano 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, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 17

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 > svn status A aufgabe1/lilo.txt M aufgabe1/lilo.c? aufgabe1/lilo! aufgabe1/lilo.o A Datei wurde unter Versionskontrolle gestellt M Dateiinhalt wurde verändert? Datei steht nicht unter Versionskontrolle! Datei steht unter Versionskontrolle, ist aber nicht mehr in der Arbeitskopie vorhanden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.4 Versionsverwaltung mit SVN 1 18

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.5 SP-Abgabesystem 1 19

SP-Abgabesystem Für jeden Teilnehmer wird folgendes bereitgestellt: ein Repository https://www4.cs.fau.de/i4sp/ws15/sp1/<login> ein Projektverzeichnis /proj/i4sp1/<login> mit Arbeitskopie Die Erzeugung erfolgt in der Nacht nach der WAFFEL-Anmeldung SVN-Passwort Zum Zugriff aufs Repository muss ein SVN-Passwort gesetzt werden > /proj/i4sp1/bin/change-password Das Passwort wird innerhalb der nächsten Stunde aktiv c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.5 SP-Abgabesystem 1 20

Aufbau des SP-Repositories 6 Aufbau des SP-Repositories /proj/i4sp1/alice SP-Projektverzeichnis des Benutzers alice U1-3 Versionsverwaltung aufgabe1 aufgabe2 trunk aufgabe3 branches kommende Woche mehr...... wsort.c Programmquellen wsort ausführbares Programm (nicht eingecheckt) wsort.txt Dokumentation (soweit gefordert) SP - Ü Der trunk enthält ein Unterverzeichnis aufgabex für jede Aufgabe trunk enthält ein Unterverzeichnis aufgabex für jede Aufgabe Zur Abgabe folgendes Skript aufrufen unterhalb von branches nichts editieren oder von Hand ändern $ /proj/i4sp1/bin/submit aufgabe0 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 U01.fm 2012-04-22 11.09 c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.5 SP-Abgabesystem 1 21 U1.14 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 Eigener Abgabetermin kann per Skript erfragt werden > /proj/i4sp1/bin/get-deadline aufgabe1 Dein Abgabezeitpunkt fuer die Aufgabe 1: hello ist 22.04.2015 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, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.5 SP-Abgabesystem 1 22

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.6 Übersetzen von Programmen 1 23

Compiler und Optionen Übersetzen einer Quelldatei mit gcc > gcc -o test test.c Zur Erinnerung: Starten der ausführbaren Datei test mit./test Verhalten des gcc kann durch Optionen beeinflusst werden -g: Erzeugt Debug-Symbole in der ausführbaren Datei -c: Übersetzt Quellcode in Maschinencode, erzeugt aber kein ausführbares Programm -Wall: aktiviert weitere Warnungen, die auf mögliche Programmierfehler hinweisen -Werror: gcc behandelt Warnungen wie Fehler c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.6 Übersetzen von Programmen 1 24

Gängige Compiler-Warnungen implicit declaration of function printf bei Bibliotheksfunktionen fehlt entsprechendes #include entsprechende Manual-Page gibt Auskunft über den Namen der nötigen Headerdateien > man 3 printf SYNOPSIS #include <stdio.h> int printf(const char *format,...); bei einer eigenen Funktionen fehlt die Forward-Deklaration control reaches end of non-void function in der Funktion, die einen Wert zurückliefern soll, fehlt an einem Austrittspfad eine passende return-anweisung c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.6 Übersetzen von Programmen 1 25

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.7 Portable Programme 1 26

Portable Programme Entwicklung portabler Programme durch Verwendung definierter Schnittstellen ANSI C99 Normierung des Sprachumfangs der Programmiersprache C Standard-Bibliotheksfunktionen, z. B. printf, malloc Single UNIX Specification, Version 4 (SUSv4) Standardisierung der Betriebssystemschnittstelle Wird von verschiedenen Betriebssystemen implementiert: Solaris, HP-UX, AIX (SUSv3) Mac OS X (SUSv3)... und natürlich Linux (SUSv4, aber nicht offiziell zertifiziert) c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.7 Portable Programme 1 27

... und was ist mit Windows? ANSI C99 Von Microsoft Visual C/C++ nicht unterstützt :-( GCC läuft auch unter Windows :-) Single UNIX Specification, Version 4 (SUSv4) Von Microsoft Windows nicht unterstützt :-( UNIX-Kompatibilitätsschicht für Windows: Cygwin (https://cygwin.com/)... ist aber eher frickelig :- Ihr wollt eure SP-Programme unter Linux entwickeln. Wirklich. c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.7 Portable Programme 1 28

Agenda 1.1 Allgemeines 1.2 Organisatorisches 1.3 Linux-Kenntnisse 1.4 Versionsverwaltung mit SVN 1.5 SP-Abgabesystem 1.6 Übersetzen von Programmen 1.7 Portable Programme 1.8 Gelerntes anwenden c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.8 Gelerntes anwenden 1 29

Aktive Mitarbeit erforderlich! Aufgabenstellung Leere Datei für Aufgabe 1 abgeben Erforderliche Dateien: hello.c Zuhause neue Arbeitskopie anlegen c js, ce, az, jk SP1 (Ü1 WS 2015) 1 Einführung 1.8 Gelerntes anwenden 1 30