Webseite zur SP2 Übung (T4)
Tutor: KALUDERCIC, Philip
Diese Seite ist veraltet, und wird nicht mehr verwaltet.
Siehe meine
Indexseite, für neuere Übungsseiten.
Hier finden sich Material, Code und sonstige Hinweise aus der SP2 Übung am Mittwoch von 14:15 bis 15:45 in 02.133-113 (Blaues Hochhaus, 2. Stock).
Meine Rechnerübung findet
Donnerstags um 12:15 bis 13:45 statt in
01.155-113 (CIP 1
, Blaues Hochhaus, 1. Stock).
Wie bereits im Onlinebetrieb, ist diese Freiwillig und man kann jede Rechnerübung besuchen.
Bei Fragen bitte mir eine Email schreiben. Ich bekommen grundsätzlich keine StudOn Nachrichten per Mail, sondern lese diese unregelmäßig. Daher würde ich wahrscheinlich erst verspätet antworten.
Ankündigungen und Erinnerungen (Feed)
- [] Klausurvorbereitung
-
In den letzten beiden Stunden, wird die Altklausur vom SS21 besprochen. Am 26.1. machen wir die Programmieraufgabe, am 2.2. die Ankreuz- und Theorieaufgaben.
- [] Zur Hackingübung
-
Am 22.12. findet die “Hackingübung” statt: Wir besprechen da die Freiwillige “Hackingaufgabe”, daher ist auch die Anwesenheit freiwillig.
- [] Verschieben der Rechnerübung
-
Meine Recherübung findet ausnahmsweise nächste Woche statt am Donnerstag (4.11., 12:15) am Mittwoch (3.11., 14:15) statt.
- [] Allgemeine Organisation
-
Wie in der Tafelübung heute entschieden wurde, finden alle zukünftigen Übungen nicht nach dem “inverted classroom” Prinzip statt. Es ist daher nicht notwendig die Videoaufzeichnungen davor anzuschauen.
Links zu SP
- SP2 Homepage
- SP Mailingslisten: i4sp@cs.fau.de (Allgemein), i4sp-orga@cs.fau.de (Organisatorisch)
- FSI Subforum, wird nicht mehr so viel benutzt wegen StudOn, hat aber viele alte Beitrage:
- Wosch Glossar (auch zu finden unter
https://woschglossar.de
) - Zu SVN:
git-svn
erlaubt es Git zu benutzen, und gleichzeitig alles mit SVN zu Synchronisieren.
Links zu C
Wenn man mit C
arbeitet, hat man mit verschiedenen Komponenten der Sprache zu tun. Das offensichtlichste ist der Compiler (in SP benutzen wir ja GCC, aber mehr dazu weiter unten).
- Compiler Explorer, zeigt wie Hochsprach en in Assembler übersetzt werden.
- The GNU C Reference Manual, geschrieben in Hinsicht auf den GCC Compiler
Die zweite große Komponente ist die (C) Standard Bibliothek. Als Implementierung benutzen wir Glibc, aber die Schnittstelle ist der POSIX Standard.
- GNU Libc Documentation (auch im Terminal lesbar mit
$ info libc
)
C ist aber auch eine standardisierte Sprache, d.h. es gibt nicht nur eine (Referenz-)implementierung, sondern alle Compiler und C Bibliotheken, etc. richten sich zunächst nach einem C Standard (in SP C11
).
- Webseite des C Standard Komitees
- Eine Website mit C Standards in verschiedenen Formaten
- C Operator Precedence Table, d.h. welche Operatoren (
+
,->
,=
, ...) binden wie stark? - C-Deklaration zu Englisch-Übersetzer
- cppreference.com-Übersicht für C
- Buch: Modern C (PDF)
- C Dokumentation auf DevDocs
Dazu ist C auch noch eine alte Sprache. Hier sind ein paar Dokumente von vielleicht primär historischem Interesse (dennoch lesenswert!):
- C Reference Manual, von Dennis M. Ritchie
- (The Development of the C Language, von Dennis M. Ritchie)
- Programming in C — A Tutorial, von Brian W. Kernighan
- Buch The C Programming Language, von Kernighan and Ritchie (2. Ausgabe für C99, PDF)
Zu Werkzeugen lernen wir in SP Valgrind und GDB kennen. Ich empfehle allen Studenten sich mit GDB vertraut zu machen, da es bei den Aufgaben viel helfen kann. Siehe dazu meine kleine GDB Einführung
, welche das allgemeine Arbeiten vorstellt.
C Auto-Formatter
Cprettifierbzw.
Auto-Formatter: Programme welche automatisch Quelltext einrücken. Das benutzen eines dieser Programme vor dem Abgaben wird wertgeschätzt:
- GNU Indent
-
$ indent -kr meine-datei.c
Hier steht-kr
fürKernighan & Ritchie
-Style, wie aus dem Buch The C Programming Language. Das ist meist meine Wahl, aber man kann auch-gnu
(GNU Style, das ist der default Stil),-orig
(Original BSD
, auch bekannt als Allman-Style),-linux
(Linux Kernel Style) angeben, neben einer ganzen Reihe an anderen Optionen im Feinigkeiten einzusehen, wie in der man-page dokumentiert. - ClangFormat
-
$ clang-format -i meine-datei.c
Mit dem Parameter--style=<choice>
kann der Stil eingestellt werden. Optionen sind LLVM,Google
,Chromium
,Mozilla
,WebKit
. Von diesen ist meines Wissens nachGoogle
-Style am populärsten. - Artistic Style
-
$ astyle meine-datei.c
Die Manpage im CIP hilft nicht viel weiter, dafür kann man die Benutzeranleitung auf der Astyle website benutzen.
Diese Programme sind alle im CIP installiert.
Standard Library Implementierungen
Quelltext von C standard library (stdlib) Implementierungen:- glibc (alt.), die GNU Standardbibliothek. Wird im CIP und auf den meisten GNU/Linux Systemen benutzt, ist aber oft kompliziert und schwer zu lesen.
- musl (alt.), eine einfachere (und saubere) Implementierung der libc. Weil es sehr lesbar ist, benutze ich es auch in den Übungen um zu demonstrate wie stdlib Funktionen definiert sein können.
- OpenBSD libc, eine schöne nicht-Linux libc.
Userland Implementierungen
Quelltext von verschiedenen Userland Implementierungen (denke anls
, mv
, chmod
, ...):
-
coreutils,
die GNU implementierung der üblichen Unix programme, ist auch was
im CIP gefunden wird.
Auf dieser Seite wird erklärt wie die Programme funktionieren. Hier könnte man Ideen oder Hinweise finden, was beim bearbeiten von SP Aufgaben wichtig sein könnte. - Busybox, ein Project das sich darauf Konzentriert möglichst kleine Programme zu produzieren! (siehe auch)
- sbase, ein minimalistisches aber lesbares Userland vom Suckless Projekt.
- OpenBSD, vom OpenBSD Projekt verwaltetes libc, dessen Geschichte bis zum den ersten Unix Versionen zurückgeht. Auch auf GitHub zu finden.
Compiler Implementierungen
In SP ist der Referenz-Compiler GCC (C Compiler des GNU Projekts). Dieser unterstützt diverse C Erweiterungen, welche aber nicht in SP genutzt werden dürfen!
Es kann auch hilfreich sein neben GCC andere Compiler zu benutzen,
um seine Programme zu testen. Hierzu zählt Clang
(mit dem extra-strengem -Weverything
Flag) und TCC,
ein schneller und kleiner C99 Compiler. Letzterer ist leider nicht im CIP installiert.
Links zu allgemeinen Betriebsystem-Themen
Die folgenden Links sind nicht direkt für SP relevant, aber können trotzdem nützlich oder interessant sein:
- Vorlesung Betriebssysteme, und danach Betriebssystemtechnik am i4
- Praktikum PASST (Praktikum angewandte Systemsoftwaretechnik) am i4
-
Lehr-Betriebssystem xv6 (Moderne Unix Version-6 für RISC-V), vom MIT
- Quelltext des Betriebsystems
- Alte Version des Betriebsystems (für x86-Systeme)
- Kommentare zum Quelltext
Commentary on the Sixth Edition UNIX Operating System
(auch bekannt als Lions Book, wird als das am öftesten photokopierte Buch der Informatik angesehen), auf dem xv6 basiert ist.
- Unix Heritage Society, mit altem Quelltext (bspw. Libc und Befehle für Unix v7).
- Buch Operating Systems: Three Easy Pieces (Auch als eine PDF frei verfügbar).
- Buch Operating System Concepts.
- OSDev Wiki, mit ausführlichen Erklärungen.
- Kleines Buch über Betriebssystem-Entwickelung.
- Linux Quelltext Browser.
- Kapitel
The Operating System
aus dem BuchComputer Science from the Bottom Up
Links zu CIP-Seiten anderer Tutoren
Stef (T10), Felix (T01), Milan (T02, T05), Andreas (Ehemalig), Lou (Ehemalig),
FYI: Jeder mit einem CIP-Account seine eigene Seite erstellen kann. Einfach
$ mkdir ~/.www $ setfacl -m u:www:rx ~ ~/.www
ausführen, und dann https:/wwwcip.cs.fau.de/~[username]/
besuchen.
Mehr Infos auf der CIP-Pool Homepage.
In ~/.www/
kann man nun seine eigenen HTML Dateien schreiben, oder einen statischen Generator benutzen. Eine Zwischenoption ist Pandoc.
Da der CIP den Apache Web Server benutzt, kann man auch einfach das automatische Datei-Listing benutzen. Diese kann weiter Konfiguriert werden mit der .htaccess
Datei, wie ich es auf dieser Seite auch mache.